Halaman ini mengacu pada parameter
explore_sourceyang merupakan subparameter dariderived_table.
explore_sourcejuga dapat menjadi subparametertest, yang dijelaskan di halaman dokumentasi parametertest.
Penggunaan
derived_table: customer_order_facts {
explore_source: orders {
column: customer_id {
field: orders.customer_id
}
column: order_amount {
field: orders.sale_price
}
column: item_qty {
field: orders.number_items
}
derived_column: average_item_price {
sql: order_amount / item_qty ;;
}
timezone: "America/Los_Angeles"
}
}
|
Hierarki
explore_source |
Nilai Default
Tidak ada
Menerima
ID Explore dari mana tabel turunan native berasal, ditambah subparameter yang menentukan tabel turunan native.
|
Definisi
Ada dua cara untuk membuat tabel turunan, yang dapat Anda gunakan seolah-olah tabel tersebut adalah tabel normal dalam database Anda — tabel turunan native, yang ditentukan menggunakan parameter LookML, dan tabel turunan berbasis SQL, yang ditentukan menggunakan pernyataan kueri SQL.
Parameter explore_source digunakan untuk tabel turunan native. Dalam parameter ini, Anda menentukan kolom yang akan disertakan dalam tabel turunan native, filter yang akan diterapkan ke tabel turunan native, apakah akan membatasi atau mengurutkan baris tabel turunan native, dan apakah akan mengonversi kolom berbasis waktu tabel turunan native ke zona waktu yang berbeda.
Menentukan tabel turunan native
Anda dapat menggunakan berbagai parameter dalam tabel turunan native, yang sebagian besar bersifat opsional. Sintaksis untuk menentukan tabel turunan native adalah sebagai berikut:
explore_source: identifier {
bind_all_filters: yes
column: identifier {
field: field_name
}
derived_column: identifier {
sql: SQL expression ;;
}
expression_custom_filter: [custom filter expression]
filters: [field_name_1: "string", field_name_2: "string", ...]
limit: number
sorts: [field_name_1: asc | desc, field_name_2: asc | desc, ...]
timezone: "string"
}
Tabel berikut memberikan informasi tentang setiap parameter yang dapat Anda gunakan untuk menentukan tabel turunan native:
| Nama Parameter | Deskripsi | Contoh |
|---|---|---|
bind_filters | Meneruskan filter dari kueri Explore ke subkueri tabel turunan native. Untuk menyiapkan parameter ini, gunakan subparameter from_field untuk menentukan kolom yang ditentukan dalam tampilan tabel turunan native atau dapat diakses di Eksplorasi yang digabungkan dengan tabel turunan native. Saat runtime, semua filter pada from_field di Explore akan diteruskan ke to_field di subkueri tabel turunan native. Lihat bagian Menggunakan bind_filters untuk melihat contoh.
Dengan bind_filters, perhatikan hal berikut:
explore_source dapat memiliki subparameter bind_all_filters atau subparameter bind_filters, tetapi tidak keduanya.
|
bind_filters: {
to_field: users.created_date
from_field: user_dt.filter_date
} |
bind_all_filters |
Meneruskan semua filter dari kueri Explore ke subkueri tabel turunan native. Untuk menyiapkan parameter ini, tentukan bind_all_filters: yes di explore_source tabel turunan native. Lihat bagian Menggunakan bind_filters untuk melihat contoh.
Dengan bind_all_filters: yes, perhatikan hal berikut:
|
bind_all_filters: yes |
column |
Menentukan kolom yang akan disertakan dalam explore_source. Memiliki subparameter field. |
column: cust_id {
field: orders.customer_id
} |
derived_column |
Menentukan kolom di explore_source dengan ekspresi di namespace kolom dalam. Ekspresi SQL agregat tidak akan berfungsi di sini, karena tidak ada pengelompokan SQL pada langkah ini. Fungsi jendela SQL dapat sangat berguna dalam parameter ini. Memiliki subparameter sql. |
derived_column: average_order {
sql: order_amount / item_qty ;;
} |
dev_filters |
Ditambahkan pada 21.12
Menentukan filter yang diterapkan Looker hanya ke versi pengembangan derived table. Hal ini berguna bagi developer LookML saat mereka menguji tabel turunan dalam Mode Pengembangan. Parameter dev_filters memungkinkan Looker membuat versi tabel yang lebih kecil dan difilter sehingga developer LookML dapat melakukan iterasi dan menguji tabel tanpa menunggu tabel lengkap dibuat setelah setiap perubahan. Looker menerapkan dev_filters hanya ke versi pengembangan tabel turunan, bukan ke versi produksi tabel yang dikueri oleh pengguna Anda. Lihat halaman dokumentasi Tabel turunan di Looker untuk mengetahui informasi selengkapnya tentang cara menggunakan tabel turunan dalam Mode Pengembangan dan bagian Membuat filter untuk Mode Pengembangan di halaman ini untuk melihat contohnya. |
dev_filters: [orders.created_date: "90 days", orders.products: "sweaters"] |
expression_custom_filter |
Secara opsional menentukan ekspresi filter kustom pada kueri explore_source. |
expression_custom_filter: ${orders.status} = "pending" ;; |
filters |
Secara opsional menambahkan filter ke kueri explore_source. Sertakan dalam tanda kurung siku; sertakan nama kolom yang akan difilter, menggunakan format view_name.field_name, diikuti dengan : dan nilai yang akan digunakan untuk memfilter kolom. Filter ditambahkan ke klausa WHERE dari SQL yang dihasilkan oleh tabel turunan native. |
filters: [products.department: "sweaters"] |
limit |
Secara opsional, menentukan batas baris kueri. | limit: 10 |
sorts |
Secara opsional, menentukan pengurutan untuk explore_source ini. Sertakan dalam tanda kurung siku; sertakan nama kolom yang akan diurutkan, menggunakan format view_name.field_name, diikuti dengan : dan asc atau desc untuk menunjukkan apakah kolom harus diurutkan dalam urutan menaik atau menurun. Anda dapat mengurutkan beberapa kolom dengan menambahkan beberapa pasangan nama kolom dan kata kunci yang dipisahkan dengan koma. |
sorts: [products.brand: asc, products.name: asc] |
timezone |
Menetapkan zona waktu untuk kueri explore_source. Untuk tabel turunan non-persisten, setel zona waktu ke "query_timezone" agar otomatis menggunakan zona waktu kueri yang sedang berjalan. Jika zona waktu tidak ditentukan, kueri explore_source tidak akan melakukan konversi zona waktu, tetapi akan menggunakan zona waktu database. Lihat halaman nilai timezone untuk mengetahui daftar zona waktu yang didukung. IDE menyarankan otomatis nilai zona waktu saat Anda mengetik parameter timezone di IDE. IDE juga menampilkan daftar nilai zona waktu yang didukung di panel Bantuan Cepat. |
timezone: "America/Los_Angeles" |
Contoh
Definisi berikut memberikan contoh dasar tabel turunan native.
Buat tabel turunan native user_order_facts:
view: user_order_facts {
derived_table: {
explore_source: order_items {
column: user_id {
field: order_items.user_id
}
column: lifetime_number_of_orders {
field: order_items.order_count
}
column: lifetime_customer_value {
field: order_items.total_revenue
}
}
}
# Define the view's fields as desired
dimension: user_id {
hidden: yes
}
dimension: lifetime_number_of_orders {
type: number
}
dimension: lifetime_customer_value {
type: number
}
}
Anda dapat menambahkan filter untuk membuat tabel turunan native user_90_day_facts:
view: user_90_day_facts {
derived_table: {
explore_source: order_items {
column: user_id {
field: order_items.user_id
}
column: number_of_orders_90_day {
field: order_items.order_count
}
column: customer_value_90_day {
field: order_items.total_revenue
}
filters: [order_items.created_date: "90 days"]
}
}
# Add define view's fields as desired
dimension: user_id {
hidden: yes
}
dimension: number_of_orders_90_day {
type: number
}
dimension: customer_value_90_day {
type: number
}
}
Membuat filter untuk Mode Pengembangan
Ada situasi saat tabel turunan native yang Anda buat memerlukan waktu lama untuk dibuat, yang dapat memakan waktu jika Anda menguji banyak perubahan dalam Mode Pengembangan. Untuk kasus ini, Anda dapat menggunakan dev_filters untuk membuat versi pengembangan tabel turunan native yang lebih kecil:
view: e_faa_pdt {
derived_table: {
...
datagroup_trigger: e_faa_shared_datagroup
explore_source: flights {
dev_filters: [flights.event_date: "90 days"]
filters: [flights.event_date: "2 years", flights.airport_name: "Yucca Valley Airport"]
column: id {}
column: airport_name {}
column: event_date {}
}
}
...
}
Contoh ini mencakup parameter dev_filters yang memfilter data ke 90 hari terakhir dan parameter filters yang memfilter data ke 2 tahun terakhir dan ke Bandara Yucca Valley. Parameter dev_filters bekerja bersama dengan parameter filters sehingga semua filter diterapkan ke versi pengembangan tabel. Jika dev_filters dan filters menentukan filter untuk kolom yang sama, dev_filters akan diprioritaskan untuk versi pengembangan tabel. Dalam contoh ini, versi pengembangan tabel akan memfilter data hingga 90 hari terakhir untuk Bandara Yucca Valley.
Jika tabel turunan native memiliki parameter
Perhatikan bahwa situasi sebaliknya juga benar: Jika Anda memiliki tabel turunan native dengan parameterdev_filters, tabel pengembangan tidak dapat digunakan sebagai versi produksi, karena versi pengembangan memiliki set data yang disingkat. Jika demikian, setelah selesai mengembangkan tabel dan sebelum men-deploy perubahan, Anda dapat mengomentari parameterdev_filters, lalu membuat kueri tabel dalam Mode Pengembangan. Kemudian, Looker akan membuat versi lengkap tabel yang dapat digunakan untuk produksi saat Anda men-deploy perubahan. Lihat halaman dokumentasi Tabel turunan di Looker untuk mengetahui detail selengkapnya tentang penggunaan tabel pengembangan dalam produksi.dev_filtersdan Anda membuat kueri di Mode Pengembangan, Looker dapat menggunakan tabel produksi untuk menjawab kueri Mode Pengembangan Anda. Pernyataan ini benar kecuali jika Anda mengubah definisi tabel, lalu membuat kueri tabel dalam Mode Pengembangan, yang akan membuat Looker membangun tabel pengembangan untuk menjawab kueri.
Meneruskan filter ke tabel turunan native
Saat menyertakan tabel turunan native dalam Eksplorasi, Anda dapat mengambil filter runtime dari Eksplorasi dan menerapkannya ke kueri tabel turunan native. Anda melakukannya dengan menambahkan parameter bind_all_filters atau bind_filters ke explore_source tabel turunan native.
Saat meneruskan filter runtime dari Explore ke subkueri tabel turunan native, filter runtime harus berada dalam tampilan yang digabungkan ke Explore yang sama dengan tabel turunan native. Selain itu, karena tabel turunan native harus dibuat ulang saat runtime untuk menggabungkan filter runtime dari Explore, tabel turunan native tidak dapat berupa tabel turunan persisten (PDT).
Menggunakan bind_all_filters
Cara termudah untuk meneruskan filter dari Explore ke subkueri tabel turunan native adalah dengan menentukan bind_all_filters: yes dalam parameter explore_source tabel turunan native. Tindakan ini akan meneruskan semua filter runtime Explore ke subkueri tabel turunan native.
Tabel turunan native dengan bind_all_filters: yes harus digabungkan ke Explore yang sama yang ditentukan dalam parameter explore_source tabel turunan native. Jika Anda ingin menggunakan tabel turunan native di Explore lain, gunakan parameter bind_filters, seperti yang dijelaskan di bagian Menggunakan bind_filters.
Berikut adalah LookML untuk tabel turunan native dengan bind_all_filters: yes:
view: top_10_simple_item_names {
view_label: "Top 10s"
derived_table: {
explore_source: order_items {
column: total_sale_price {
field: order_items.total_sale_price
}
column: item_name {
field: products.item_name
}
derived_column: rank {
sql: RANK() OVER (ORDER BY total_sale_price DESC) ;;
}
bind_all_filters: yes
sorts: [order_items.total_sale_price: desc]
timezone: "query_timezone"
limit: 10
}
}
dimension: item_name {
group_label: "Simple Example"
}
dimension: rank {
type: number
group_label: "Simple Example"
}
dimension: item_name_ranked {
group_label: "Simple Example"
order_by_field: rank
type: string
sql: ${rank} || ') ' || ${item_name} ;;
}
}
Dalam tampilan tabel turunan native, explore_source adalah order_items. Berikut adalah LookML untuk order_items Explore tempat tabel turunan native digabungkan ke Explore:
explore: order_items {
...
join: top_10_simple_item_names {
type: inner
relationship: many_to_one
sql_on: ${products.item_name} = ${top_10_simple_item_names.item_name} ;;
}
}
Untuk melihat contoh ini, baca postingan Komunitas [Blok Analisis] – Pivot menurut X Teratas – Memperkenalkan bind_all_filters: yes.
Menggunakan bind_filters
Subparameter bind_filters dari explore_source meneruskan filter tertentu dari kueri Explore ke subkueri tabel turunan native:
to_fieldadalah kolom dalam tabel turunan native tempat filter diterapkan.to_fieldharus berupa kolom dariexplore_sourceyang mendasarinya.from_fieldmenentukan kolom di Eksplorasi yang akan digunakan untuk mendapatkan filter, jika pengguna menentukan filter saat runtime.
Saat runtime, semua filter pada from_field di Explore akan diteruskan ke to_field di subkueri tabel turunan native.
LookML berikut menunjukkan tabel turunan native dengan bind_filters. Dengan penyiapan ini, Looker akan mengambil filter apa pun yang diterapkan ke kolom filtered_lookml_dt.filter_date di Eksplorasi dan menerapkan filter tersebut ke kolom users.created_date di tabel turunan native.
derived_table: {
explore_source: order_items {
bind_filters: {
to_field: users.created_date
from_field: filtered_lookml_dt.filter_date
. . .
}
}
}
Hal-hal yang perlu dipertimbangkan
Hanya gunakan satu parameter explore_source
Setiap tabel turunan bawaan hanya menerima satu parameter explore_source. Parameter explore_source berikutnya tidak akan menimbulkan error validasi LookML, tetapi akan menggantikan parameter explore_source sebelumnya.
Untuk membuat kolom dari kolom di tampilan yang berbeda, gabungkan terlebih dahulu tampilan yang berbeda dalam Jelajah yang sama. Kemudian, gunakan Jelajahi untuk explore_source.
Menggunakan pernyataan include untuk memungkinkan kolom referensi
Saat membuat tabel turunan native, Anda harus menyertakan file yang berisi definisi Eksplorasi. Cara terbaik untuk melakukannya adalah dengan menentukan Jelajah dalam file Jelajah terpisah, seperti yang dijelaskan dalam dokumentasi Membuat File Jelajah.
Jika Anda membuat file Jelajah terpisah:
- File tampilan tabel turunan native harus menyertakan file Eksplorasi. Contoh:
-
include: "/explores/order_items.explore.lkml"
-
- File Eksplorasi harus menyertakan file tampilan yang diperlukan. Contoh:
-
include: "/views/order_items.view.lkml" -
include: "/views/users.view.lkml"
-
- Model harus menyertakan file Explore. Contoh:
-
include: "/explores/order_items.explore.lkml"
-