Halaman ini menjelaskan pola umum berikut di LookML:
- Memberi label pada kolom (dan nama di UI)
- Memfilter jumlah menurut dimensi
- Persentase
- Menggunakan set untuk melihat detail perincian
- Memfilter hasil yang ditetapkan
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 Jumlah di tampilan Pesanan akan muncul di UI sebagai Jumlah Pesanan. Di halaman ini, kedua nama kolom dicetak tebal dan nama tampilan diberi huruf kapital (ORDERS Amount) untuk memperjelas pembahasan.
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 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 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 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". Dalam LookML, pola desainnya adalah membuat jumlah untuk kedua kondisi 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 ekspresi lainnya menjadi float. Untuk menghindari error pembagian dengan nol, NULLIF(value, 0)
mengonversi nilai nol menjadi null, yang membuat hasilnya menjadi null dan menghindari error.
100.0 * ${returned_count} / NULLIF(${count}, 0)
Menggunakan set untuk melihat perincian
Salah satu fitur Looker yang paling canggih adalah kemampuan untuk melihat perincian data guna 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 tersebut. Setiap nilai untuk setiap dimensi di baris dalam tabel ditambahkan ke
Untuk menampilkan detail, Looker memerlukan daftar kolom penelusuran yang ditentukan untuk ditampilkan saat nilai ukuran diklik. Saat Anda membuat model, generator biasanya membuat beberapa kolom penelusuran awal untuk Anda. Selain itu, Anda dapat menambahkan sendiri kolom penelusuran. Misalnya, asumsikan bahwa Anda mengukur Jumlah PESANAN menurut Negara Bagian PENGGUNA dalam seminggu terakhir. Di Looker, kueri akan terlihat seperti berikut:
Negara Bagian/Provinsi PENGGUNA | Jumlah PESANAN |
---|---|
California | 24 |
Texas | 5 |
Colorado | 4 |
Florida | 4 |
Illinois | 4 |
Jika Anda mengklik 24 di baris California, Anda mungkin berharap melihat 24 pesanan yang berasal dari California. Meskipun Looker menambahkan filter Negara Bagian Pengguna: California, Looker tidak mengetahui 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 memberikan informasi berikut kepada Looker:
- Kolom yang ingin Anda tampilkan saat melihat perincian jumlah atau ukuran lain
- Kolom yang ingin Anda impor saat bergabung dengan tampilan
- Kolom yang ingin Anda indeks di menu Jelajahi
Karena set yang sama dapat digunakan di banyak tempat dalam model, Looker menyediakan beberapa metode untuk membuat set.
Set literal
Kumpulan literal adalah cara mudah untuk menentukan kumpulan di LookML, terutama saat kumpulan 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 ukuran, Anda dapat mendeklarasikan array literal sebagai berikut:
measure: count {
type: count
drill_fields: [id, name, city]
}
Kumpulan bernama
Misalkan dua jumlah ditentukan dalam tampilan customers
: count
dan in_california_count
. Saat pengguna melihat perincian kolom Jumlah atau Jumlah di California dalam Eksplorasi, Anda ingin menampilkan kolom id
, name
, dan city
.
Awalnya, mendeklarasikan kolom ini secara harfiah 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 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 kelola 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 dalam hal 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 yang diikuti dengan tanda bintang, misalnya,
setname*
. - Anda dapat menghapus elemen dari set dengan menempatkan tanda hubung sebelum nama kolom, misalnya,
-fieldname
.
Menyesuaikan visualisasi penelusuran
Jika admin Looker Anda telah mengaktifkan fitur Labs Penelusuran Visual, visualisasi penelusuran Look dan Jelajah tidak akan selalu ditampilkan secara default dalam tabel data. 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 Penelusuran data yang lebih canggih.
Dasbor mendukung penelusuran visual menggunakan parameter link
tanpa perlu mengaktifkan fitur Lab Penelusuran Visual.
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 tab Jelajahi
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, di Eksplorasi Pesanan, Anda hanya ingin melihat pesanan yang selesai atau menunggu keputusan. Anda dapat menambahkan kode LookML berikut:
explore: orders {
view_name: order
filters: [status: "complete,pending"]
}
}
Jika pengguna ingin melihat pesanan dengan nilai status lain, mereka dapat menyetel Status PESANAN ke % di UI.
sql_always_where
di tab Jelajahi
Jika ingin menerapkan batasan kueri yang tidak dapat diubah pengguna, Anda dapat menggunakan sql_always_where
. Selain kueri yang dijalankan oleh pengguna manusia, pembatasan akan berlaku untuk dasbor, Look terjadwal, dan informasi sematan yang mengandalkan Eksplorasi tersebut. Kondisi sql_always_where
tidak ditampilkan kepada pengguna, kecuali jika mereka melihat SQL pokok dari 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 tab Jelajahi
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 mengubah 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]
}