Pola LookML umum

Halaman ini menjelaskan pola umum berikut di LookML:

Kolom pelabelan (dan nama di UI)

Looker mengonversi nama kolom LookML menjadi string yang ditampilkan UI dengan menggabungkan nama tampilan dalam font tebal biasa dengan nama singkat kolom dalam tebal. Misalnya, kolom yang disebut Jumlah di tampilan Pesanan akan muncul di UI sebagai Jumlah Pesanan. Di halaman ini, kedua nama kolom dicetak tebal dan nama tampilan diawali dengan huruf besar (ORDERS Amount) untuk memperjelas diskusi.

Jika Anda ingin kolom memiliki nama yang berbeda dengan nama kolomnya dalam tabel, ubah nama kolom dan gunakan parameter sql untuk menautkan kolom ke kolom yang sesuai dalam tabel. Dalam contoh berikut, tabel airports memiliki kolom cntrl_twr. Looker akan menghasilkan deklarasi berikut:

view: airports {
  dimension: cntrl_twr {        # full name: airports.cntrl_twr
    type: yesno                 # default name: AIRPORT Cntrl Twr (Yes/No)
    sql: ${TABLE}.cntrl_twr ;;  # the sql expression for this field
  }
}

Anda dapat mengganti nama dimensi cntrl_twr agar dapat dibaca manusia:

view: airports {
  dimension: has_control_tower {  # full name: airports.has_control_tower
    type: yesno                   # aliased name: AIRPORTS Has Control Tower (Yes/No)
    sql: ${TABLE}.cntrl_twr ;;    # the sql expression for this field
  }
}

Memfilter jumlah menurut dimensi

Anda dapat mengelompokkan menurut dimensi dan menghitung entitas — pengelompokan menurut Negara PENGGUNA, Jumlah PESANAN akan memberi tahu Anda asal pesanan menurut negara. Namun, sering kali berguna untuk membuat jumlah yang difilter menurut beberapa nilai dimensi. Misalnya, Anda dapat membuat ukuran baru dan menamainya ORDERS France Count:

view: users {
  dimension: country {}
}
view: orders {
  dimension: id {
    primary_key: yes
    sql: ${TABLE}.id ;;
  }
  measure: count {
    type: count
    drill_fields: [detail]
  }
  measure: france_count {
    type: count   # COUNT(CASE WHEN users.country = 'France' THEN 1 ELSE NULL END)
    filters: [users.country: "France"]
  }
}

Filter dapat menggunakan ekspresi apa pun. Jika Anda menginginkan kolom yang menghitung pengguna dari Uni Eropa, Anda dapat menggunakan sesuatu seperti ini:

measure: eu_count {
  type: count   # COUNT(CASE WHEN users.countrycode IN 'UK','FR','ES' THEN 1 ELSE NULL END)
  drill_fields: [detail]
  filters: [users.countrycode: "UK,FR,ES"]
}

Jika Anda ingin memfilter dengan ekspresi matematika, pastikan untuk mengapitnya dalam tanda kutip ganda:

measure: total_orders_above_100_dollars {
  type: sum   # SUM(CASE WHEN order.value > 100 THEN order.value ELSE NULL END)
  sql: ${order.value} ;;
  drill_fields: [detail]
  filters: [order.value: ">100"]
}

Persentase

Banyak indikator performa utama dinyatakan dalam bentuk persentase, seperti "persentase item yang ditampilkan", "persentase email yang menghasilkan penjualan", atau contoh lain dari "persentase X yang Y". Di LookML, pola desainnya adalah membuat jumlah untuk kedua kondisi tersebut dan membuat kolom ketiga yang menghitung persentase di antara keduanya.

dimension: returned {
  type: yesno
}
measure: count {   # total count of items
  type: count_distinct
  sql: ${TABLE}.id ;;
  drill_fields: [detail]
}
measure: returned_count {   # count of returned items
  type: count_distinct
  sql: ${TABLE}.id ;;
  drill_fields: [detail]
  filters: [returned: "Yes"]
}
measure: percent_returned {
  type: number
  sql: 100.0 * ${returned_count} / NULLIF(${count}, 0) ;;
  value_format: "0.00"
}

Gunakan format berikut untuk menghitung persentase. Di Postgres, jumlah adalah bilangan bulat, dan pembagian antara bilangan bulat menghasilkan bilangan bulat. Mengalikan dengan 100.0 akan mengonversi jumlah pertama menjadi angka floating point, sehingga mengonversi sisa ekspresi menjadi float. Untuk menghindari error pembagian dengan nol, NULLIF(value, 0) mengonversi nilai nol menjadi null, yang membuat hasilnya null dan menghindari error.

100.0 * ${returned_count} / NULLIF(${count}, 0)

Menggunakan set untuk detail perincian

Salah satu fitur Looker yang paling canggih adalah kemampuan untuk melihat data secara mendetail untuk melihat entitas pokok yang membentuk jumlah atau ukuran lainnya.

Saat Anda mengklik ukuran di UI, Looker akan membuat kueri baru untuk melokalkan kumpulan data yang membentuk ukuran. Setiap nilai untuk setiap dimensi pada baris dalam tabel akan ditambahkan ke

Untuk menampilkan detail, Looker memerlukan daftar kolom perincian yang ditentukan untuk ditampilkan saat nilai ukuran telah diklik. Saat Anda membuat model, generator biasanya membuat beberapa kolom pengeboran awal untuk Anda. Selain itu, Anda dapat menambahkan kolom perincian sendiri. Misalnya, asumsikan Anda mengukur Jumlah PESANAN menurut Status PENGGUNA dalam seminggu terakhir. Di Looker, kueri akan terlihat seperti berikut:

Status USERSJumlah ORDERS
California24
Texas5
Colorado4
Florida4
Illinois4

Jika mengklik 24 di baris California, Anda mungkin akan melihat 24 pesanan yang berasal dari California. Meskipun Looker menambahkan filter USERS State: California, Looker tidak tahu kolom mana yang ingin Anda tampilkan dalam urutan. Anda harus menggunakan set terlebih dahulu untuk mendeklarasikan kolom tersebut dalam model.

Di LookML, set adalah daftar nama kolom (dimensi, ukuran, dan filter). Anda menggunakan set untuk memberi Looker informasi berikut:

  • Kolom yang ingin Anda tampilkan saat melihat perincian jumlah atau ukuran lainnya
  • Kolom yang ingin Anda impor saat bergabung dengan tampilan
  • Kolom yang ingin Anda indeks di Jelajahi

Karena set yang sama dapat digunakan di banyak tempat dalam model, Looker menyediakan beberapa metode untuk membuat set.

Set literal

Set literal adalah cara mudah untuk menentukan set di LookML, terutama jika set hanya digunakan satu kali. Kumpulan literal dibuat dengan mendeklarasikan kumpulan sebagai array. Anda dapat mendeklarasikan set literal menggunakan [].

Perhatikan contoh berikut:

view: customers {
  dimension: id {
    primary_key: yes
  }
  measure: count {
    type: count
  }
  dimension: city {}
  dimension: state {}
  dimension: name {}
}

Dalam contoh ini, kolom yang ingin Anda tampilkan adalah id, name, dan city.

Dalam pengukuran, Anda dapat mendeklarasikan array literal sebagai berikut:

measure: count {
  type: count
  drill_fields: [id, name, city]
}

Set bernama

Misalkan dua jumlah ditentukan dalam tampilan customers: count dan in_california_count. Saat pengguna melihat perincian kolom Jumlah atau kolom Jumlah di California di Jelajahi, Anda ingin menampilkan kolom id, name, dan city.

Awalnya, mendeklarasikan kolom ini secara harfiah mungkin tampak memadai:

view: customers {
  measure: count {
    type: count
    drill_fields: [id, name, city]
  }
  measure: in_california_count {
    type: count
    filters: [state: "California"]
    drill_fields: [id, name, city]
  }
}

Namun, jika ingin menambahkan kolom baru (seperti customers.state), Anda harus mengedit kedua daftar, kecuali jika menggunakan parameter set untuk membuat set bernama yang dapat Anda pertahankan di satu tempat dan gunakan di beberapa tempat.

Kode berikut membuat kumpulan customers.detail dan mengarahkan kedua jumlah ke kumpulan kolom yang sama.

view: customers {
  set: detail {
    fields: [id, name, city]      # creates named set customers.detail
  }

  measure: count {
    type: count
    drill_fields: [detail*]       # show fields in the set "customers.detail"
  }
  measure: in_california_count {
    type: count
    filters: [state: "California"]
    drill_fields: [detail*]      # show fields in the set "customers.detail"
  }
}

Set LookML sangat efektif dengan cara berikut:

  • Deklarasi ulang set bersifat aditif. Jika Anda mendeklarasikan set di beberapa tempat, Looker akan menyertakan semua kolom yang dideklarasikan untuk set di semua lokasi.
  • Anda dapat menyematkan set dalam set lain dengan mengetik nama set lain, diikuti dengan tanda bintang, misalnya, setname*.
  • Anda dapat menghapus elemen dari set dengan menempatkan tanda hubung sebelum nama kolom, misalnya, -fieldname.

Menyesuaikan visualisasi perincian

Jika admin Looker Anda telah mengaktifkan fitur Labs Visual Drilling, visualisasi penelusuran Look dan Jelajahi tidak akan selalu ditetapkan secara default ke tabel data. Dalam hal ini, Anda dapat menyesuaikan visualisasi yang ditampilkan menggunakan variabel Liquid di parameter link, seperti yang ditunjukkan di halaman dokumentasi parameter link dan di halaman Praktik Terbaik Penjelasan data yang lebih efektif.

Dasbor mendukung penelusuran visual menggunakan parameter link tanpa perlu mengaktifkan fitur Labs Visual Drilling.

Memfilter set hasil

LookML menyediakan serangkaian operasi filter yang dapat diterapkan ke kolom dan Jelajah untuk memfilter kumpulan hasil sebelum ditampilkan kepada pengguna.

always_filter di Eksplorasi

Gunakan always_filter untuk selalu menerapkan kumpulan filter ke kueri apa pun yang dijalankan dalam Jelajah. Filter akan muncul di UI Looker dan, meskipun pengguna dapat mengubah nilai filter default yang Anda berikan, mereka tidak dapat menghapus filter. Umumnya, filter ini digunakan untuk menghapus data yang biasanya tidak ingin Anda sertakan. Misalnya, di Jelajahi Pesanan, Anda hanya ingin melihat pesanan yang sudah selesai atau tertunda. Anda dapat menambahkan kode LookML berikut:

explore: orders {
  view_name: order
    filters: [status: "complete,pending"]
  }
}

Jika ingin melihat pesanan dengan nilai status lain, pengguna dapat menetapkan Status PESANAN ke % di UI.

sql_always_where di Eksplorasi

Jika ingin menerapkan batasan kueri yang tidak dapat diubah pengguna, Anda dapat menggunakan sql_always_where. Selain kueri yang dijalankan oleh pengguna manusia, pembatasan ini akan berlaku untuk dasbor, Tampilan terjadwal, dan informasi tersemat yang mengandalkan Jelajah tersebut. Kondisi sql_always_where tidak ditampilkan kepada pengguna, kecuali jika mereka melihat SQL yang mendasari kueri yang mereka buat.

Contoh berikut mencegah pengguna melihat pesanan sebelum 01-01-2012:

# Using Looker references
explore: order {
  sql_always_where: ${created_date} >= '2012-01-01' ;;
}

# Using raw SQL
explore: order {
  sql_always_where: DATE(created_time) >= '2012-01-01' ;;
}

conditionally_filter di Eksplorasi

Tabel yang sangat besar memerlukan beberapa pertimbangan saat membuat kueri, karena kueri yang tidak terbatas dapat dengan cepat menjadi terlalu membebani database. LookML menyediakan cara untuk mengatasinya dalam bentuk conditionally_filter.

Anda menggunakan parameter conditionally_filter untuk menerapkan filter ke kueri, kecuali jika pengguna telah menambahkan filter untuk salah satu kolom yang tercantum di bagian unless.

Contoh berikut tidak akan membuat perubahan apa pun pada kueri pengguna jika pengguna menerapkan filter pada satu atau beberapa kolom berikut: created_date, shipped_time, shipped_date, orders.id, atau customer.name. Jika pengguna tidak memfilter di salah satu kolom tersebut, Looker akan otomatis menambahkan filter 1 hari di orders.created_time.

  filters: [orders.created_time: "1 day"]
  unless: [created_date, shipped_time, shipped_date, orders.id, customer.name]
}