Halaman ini menjelaskan pola umum berikut di LookML:
- Memberi label pada kolom (dan nama di UI)
- Memfilter jumlah menurut dimensi
- Persentase
- Menggunakan set untuk detail lihat perincian
- Memfilter kumpulan hasil
Memberi label pada kolom (dan nama di UI)
Looker mengonversi nama kolom LookML menjadi string yang ditampilkan UI dengan menggabungkan nama tampilan dalam font dengan ketebalan normal dan nama singkat kolom dalam huruf tebal. Misalnya, kolom bernama Amount di tampilan Orders akan muncul di UI sebagai Orders Amount. Di halaman ini, kedua nama kolom dicetak tebal dan nama tampilan ditulis dengan huruf kapital (ORDERS Amount) agar pembahasan lebih jelas.
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 membuat 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 mudah dibaca:
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 USERS Country, ORDERS Count 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 memberinya nama 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 menyertakannya 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 "persen item yang dikembalikan", "persen email yang menghasilkan penjualan", atau contoh lain dari "persen X yang Y". Di LookML, pola desainnya adalah membuat jumlah untuk kedua kondisi dan membuat kolom ketiga yang menghitung persentase 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) akan mengonversi nilai nol menjadi null, yang membuat hasilnya menjadi null dan menghindari error.
100.0 * ${returned_count} / NULLIF(${count}, 0)
Menggunakan set untuk detail lihat perincian
Salah satu fitur Looker yang paling canggih adalah kemampuan untuk menelusuri data guna melihat entity yang mendasarinya yang membentuk jumlah atau ukuran lainnya.
Saat Anda mengklik ukuran di UI, Looker akan membuat kueri baru untuk melokalkan kumpulan data yang membentuk ukuran tersebut. Setiap nilai untuk setiap dimensi di baris dalam tabel akan ditambahkan ke
Untuk menampilkan detailnya, Looker memerlukan daftar kolom telusuri yang ditentukan untuk ditampilkan saat nilai ukuran diklik. Saat Anda membuat model, generator biasanya akan membuat beberapa kolom perincian awal untuk Anda. Selain itu, Anda dapat menambahkan kolom perincian sendiri. Misalnya, asumsikan bahwa Anda mengukur ORDERS Count menurut USERS State pada minggu lalu. Di Looker, kuerinya akan terlihat seperti berikut:
| USERS State | ORDERS Count |
|---|---|
| California | 24 |
| Texas | 5 |
| Colorado | 4 |
| Florida | 4 |
| Illinois | 4 |
Jika Anda mengklik 24 di baris California, Anda mungkin berharap untuk melihat 24 pesanan yang berasal dari California. Meskipun Looker menambahkan filter USERS State: California, Looker tidak mengetahui kolom mana yang ingin Anda tampilkan dalam pesanan. Anda harus menggunakan set terlebih dahulu untuk mendeklarasikan kolom tersebut dalam model Anda.
Di LookML, set adalah daftar nama kolom (dimensi, ukuran, dan filter). Anda menggunakan set untuk memberikan informasi berikut kepada Looker:
- Kolom yang ingin Anda tampilkan saat melihat perincian jumlah atau ukuran lainnya
- Kolom yang ingin Anda impor saat menggabungkan tampilan
- Kolom yang ingin Anda indeks di Eksplorasi
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. Set literal dibuat dengan mendeklarasikan set 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 ukuran, 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 Count atau kolom In California Count di Eksplorasi, Anda ingin menampilkan kolom id, name, dan city.
Awalnya, mendeklarasikan kolom ini secara literal mungkin tampak cukup:
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 Anda ingin menambahkan kolom baru (seperti customers.state), Anda harus mengedit kedua daftar, kecuali jika Anda menggunakan parameter set untuk membuat set bernama yang dapat Anda pertahankan di satu tempat dan digunakan di beberapa tempat.
Kode berikut membuat set customers.detail dan mengarahkan kedua jumlah ke set 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 berguna dengan cara berikut:
- Deklarasi ulang set bersifat kumulatif. 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 yang diikuti 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 Visual Drilling, visualisasi perincian Look dan Eksplorasi tidak akan selalu menggunakan tabel data secara default. Dalam hal ini, Anda dapat menyesuaikan visualisasi yang ditampilkan dengan menggunakan variabel Liquid dalam parameter link, seperti yang ditunjukkan di halaman dokumentasi parameter link dan di halaman Praktik Terbaik untuk melihat perincian data yang lebih canggih.
Dasbor mendukung visualisasi perincian menggunakan parameter link tanpa perlu mengaktifkan fitur Visual Drilling.
Memfilter kumpulan hasil
LookML menyediakan serangkaian operasi filter yang dapat diterapkan ke kolom dan Eksplorasi untuk memfilter kumpulan hasil sebelum ditampilkan kepada pengguna.
always_filter di Eksplorasi
Gunakan always_filter untuk selalu menerapkan serangkaian filter ke kueri apa pun yang dijalankan dalam Eksplorasi. 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, misalkan di Eksplorasi Orders, Anda hanya ingin melihat pesanan yang selesai atau tertunda. Anda dapat menambahkan kode LookML berikut:
explore: orders {
view_name: order
filters: [status: "complete,pending"]
}
}
Jika pengguna ingin melihat pesanan dengan nilai status lainnya, mereka dapat menetapkan ORDERS Status ke % di UI.
sql_always_where di Eksplorasi
Jika Anda ingin menerapkan batasan kueri yang tidak dapat diubah pengguna, Anda dapat menggunakan sql_always_where. Selain kueri yang dijalankan oleh pengguna manusia, batasan ini juga akan berlaku untuk dasbor, Look terjadwal, dan informasi tersemat yang mengandalkan Eksplorasi tersebut. Kondisi sql_always_where tidak ditampilkan kepada pengguna, kecuali jika mereka melihat SQL dasar dari kueri apa pun 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 pertimbangan saat membuat kueri, karena kueri tanpa batas dapat dengan cepat menjadi terlalu membebani database. LookML menyediakan cara untuk mengatasi hal ini 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 salah satu kolom tersebut, Looker akan otomatis menambahkan filter 1 hari pada orders.created_time.
filters: [orders.created_time: "1 day"]
unless: [created_date, shipped_time, shipped_date, orders.id, customer.name]
}