Dasar-dasar LookML tambahan

Halaman ini membahas pola yang lebih umum di LookML.

Kolom pelabelan (dan nama di UI)

Looker mengonversi nama kolom LookML menjadi string yang ditampilkan di UI dengan menggabungkan nama tampilan dalam font berbobot reguler dengan nama pendek kolom dicetak tebal. Misalnya, kolom bernama Amount dalam tampilan Orders akan muncul di UI sebagai Orders Amount. Di halaman ini, keduanya dicetak tebal dan nama tampilan ditulis dengan huruf besar (Jumlah PESANAN) untuk membuat diskusi lebih jelas.

Jika Anda ingin kolom diberi nama yang berbeda dari nama kolom dalam tabel, cukup ubah nama kolom dan deklarasikan penautan sql:-nya. Pada contoh di bawah, terdapat tabel airports dengan 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
  }
}

Kami akan 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

Cukup mudah untuk mengelompokkan menurut entitas dimensi dan penghitungan — dengan mengelompokkan berdasarkan PENGGUNA Negara, Jumlah PESANAN akan menunjukkan asal pesanan menurut negara. Namun, sering kali berguna untuk membuat jumlah yang difilter menurut beberapa nilai dimensi. Misalnya, Anda dapat membuat ukuran baru 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 menginginkan kolom yang menghitung pengguna dari Uni Eropa, Anda dapat menggunakan contoh 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 memasukkan 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 bentuk lainnya dalam bentuk "persentase X untuk Y". Dalam LookML, pola desainnya adalah membuat hitungan untuk dua 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 formulir di bawah ini saat menghitung persentase. Dalam Postgres, jumlah adalah bilangan bulat, dan pembagian di antara bilangan bulat menghasilkan bilangan bulat. Mengalikan dengan 100,0 akan mengonversi hitungan pertama menjadi bilangan floating point, sehingga mengubah sisa ekspresi menjadi float. Untuk menghindari error pembagian dengan nol, NULLIF(value, 0) akan mengonversi nilai nol menjadi null, sehingga hasil menjadi null dan menghindari error.

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

Menggunakan kumpulan untuk detail lihat perincian

Salah satu fitur Looker yang paling canggih adalah kemampuan untuk melihat perincian data untuk melihat entitas pokok yang menghasilkan penghitungan atau ukuran lainnya.

Saat ukuran diklik di UI Looker, kueri baru akan dibuat untuk melokalkan kumpulan data yang membentuk ukuran tersebut. Setiap nilai untuk setiap dimensi pada baris dalam tabel ditambahkan ke filter saat ini.

Untuk menampilkan detailnya, Looker memerlukan daftar kolom penelusuran yang ditentukan untuk ditampilkan saat nilai ukuran diklik. Saat membuat model, generator biasanya membuat beberapa kolom penelusuran awal untuk Anda. Selain itu, Anda dapat menambahkan kolom penelusuran sendiri. Misalnya, anggaplah kita mengukur Jumlah PESANAN berdasarkan Status PENGGUNA dalam seminggu terakhir. Di Looker, kueri akan terlihat seperti ini:

Status USERSJumlah PESANAN
California24
Texas5
Colorado4
Florida4
Illinois4

Jika kita mengklik 24 di baris California, perilaku yang diharapkan adalah kita akan melihat 24 pesanan yang berasal dari California.

Looker menangani penambahan filter Status PENGGUNA: California, tetapi Looker tidak tahu kolom mana yang ingin Anda tampilkan dalam urutan. Anda harus menggunakan kumpulan untuk mendeklarasikan kolom tersebut dalam model Anda.

Di LookML, set adalah daftar nama kolom (dimensi, ukuran, dan filter). Kumpulan digunakan untuk memberi tahu Looker mana kolom:

  • Yang ingin Anda tampilkan saat melihat perincian jumlah atau ukuran lainnya
  • Untuk mengimpor saat bergabung dengan tampilan
  • Diindeks di bagian Eksplorasi

Kumpulan yang sama dapat digunakan di banyak tempat dalam suatu model, sehingga Looker akan memberikan beberapa cara untuk membuat kumpulan.

Set literal

Bentuk himpunan paling sederhana adalah himpunan literal. Set literal dibuat hanya dengan mendeklarasikan set sebagai array. Anda dapat mendeklarasikan set literal menggunakan '[]'.

Contoh berikut ini:

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

Kolom yang ingin kita tampilkan adalah id, name, dan city.

Dalam pengukuran, kita cukup mendeklarasikan array literal.

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

Untuk set yang hanya digunakan sekali, mendeklarasikannya secara harfiah cukup sederhana dan mudah dipahami.

Set bernama

Misalkan kita memiliki dua jumlah: Jumlah PELANGGAN dan Jumlah PELANGGAN di California. Saat melihat perincian salah satu jumlah ini, kita ingin menampilkan kolom id, name, dan city. Jika kita mendeklarasikan kolom secara harfiah, kita dapat:

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

Jika ingin menambahkan kolom baru (misalnya, kolom customers.state), kita harus mengedit kedua daftar. Sebagai gantinya, LookML menyediakan cara untuk membuat set bernama yang bisa kita pertahankan di satu tempat dan gunakan di beberapa tempat.

Kode berikut membuat kumpulan customers.detail dan menunjuk 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"]
  }
}

Set LookML cukup kuat:

  • Deklarasi ulang kumpulan bersifat tambahan — jika Anda menyatakan kumpulan di beberapa tempat, Looker akan menyertakan semua kolom yang dideklarasikan untuk kumpulan di semua lokasi.
  • Anda dapat menyematkan set dalam set lain dengan mengetik nama set lainnya, diikuti dengan tanda bintang, seperti setname*.
  • Anda bahkan dapat menghapus elemen dari kumpulan dengan menempatkan tanda hubung sebelum nama kolom, seperti -fieldname.

Baca referensi set lengkap

Menyesuaikan visualisasi penelusuran

Jika admin Looker Anda telah mengaktifkan fitur Lab Pengeboran Visual, visualisasi Lihat dan Jelajahi tidak akan selalu ditetapkan secara default ke tabel data. Dalam hal ini, Anda dapat menyesuaikan visualisasi yang ditampilkan menggunakan variabel Liquid dalam parameter link, seperti yang ditunjukkan pada halaman dokumentasi parameter link dan di halaman Pengeboran data yang lebih canggih.

Dasbor mendukung penelusuran visual menggunakan parameter link tanpa perlu mengaktifkan fitur Lab Pengeboran Visual.

Memfilter kumpulan hasil

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

always_filter di Jelajahi

Gunakan always_filter untuk selalu menerapkan sekumpulan filter ke kueri apa pun yang dijalankan dalam Jelajah. Filter akan muncul di Looker UI, 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, dalam Eksplorasi Orders, kita hanya ingin melihat pesanan yang lengkap atau tertunda. Kita bisa menambahkan:

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

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

sql_always_where di Jelajahi

Jika ingin menerapkan batasan kueri yang tidak dapat diubah pengguna, Anda dapat menggunakan sql_always_where. Selain kueri yang dijalankan oleh pengguna, pembatasan akan berlaku pada dasbor, Tampilan terjadwal, dan informasi tersemat yang bergantung pada Jelajah tersebut. Kondisi sql_always_where tidak ditampilkan kepada pengguna, kecuali jika pengguna melihat SQL yang mendasarinya di setiap kueri yang dibuat.

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 Jelajahi

Tabel yang sangat besar memerlukan pemikiran yang cermat saat melakukan kueri, karena kueri yang tidak terbatas dapat dengan cepat menjadi terlalu membebani {i>database<i}. LookML menyediakan cara untuk mengatasinya dalam bentuk conditionally_filter.

Anda dapat 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 ini: 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]
}