Penggunaan
explore: view_name_1 {
join: view_name_2 { ... }
join: view_name_3 {
required_joins: [view_name_2, ...]
}
}
|
Hierarki
required_joins |
Nilai Default
Tidak ada
Menerima
Tanda kurung siku yang berisi daftar gabungan yang dipisahkan koma untuk Eksplorasi ini
Aturan Khusus
Tampilan harus digabungkan ke Eksplorasi sebelum dapat dirujuk di required_joins
|
Definisi
required_joins memaksa satu atau beberapa joins disertakan dalam SQL yang dibuat Looker, meskipun pengguna belum memilih kolom dari tampilan gabungan tersebut. Perilaku ini dipicu setiap kali pengguna memilih kolom dari tampilan terkait yang Anda tentukan. Beberapa penggabungan dapat diperlukan dengan menggunakan daftar yang dipisahkan koma seperti [join_name_a, join_name_b, ...].
Saat membuat SQL untuk kueri, Looker akan mencoba membuat SQL yang paling bersih, dan hanya akan menggunakan gabungan yang diperlukan untuk kolom yang dipilih pengguna. Dalam contoh diagram sintaksis di bagian atas halaman ini:
- Jika pengguna hanya memilih kolom dari
view_name_2, hanya tampilan tersebut yang akan digabungkan ke Eksplorasi. - Jika pengguna memilih kolom dari
view_name_3, parameterrequired_joinsgabungan tersebut akan menyebabkanview_name_2digabungkan ke Eksplorasi.
Kasus penggunaan utama untuk required_joins:
Gaya sintaksis lama dengan sql_on
sql_on tidak memerlukan required_joins saat digunakan dengan sintaksis ${view_name.looker_dimension_name}. Namun, beberapa model lama masih menggunakan sintaksis view_name.native_column_name. Contoh:
explore: order_items {
join: order {
sql_on: order_items.order_id = order.id ;;
}
join: customer {
sql_on: order.customer_id = customer.id ;;
required_joins: [order]
}
}
Dalam contoh ini, setiap kali pengguna memilih kolom dari customer, tampilan order juga harus digabungkan untuk mempertahankan hubungan gabungan yang tepat. Jika Anda lupa mewajibkan kueri ini, kueri mungkin masih berfungsi jika pengguna memilih kolom dari semua tampilan yang wajib diisi. Namun, kueri lain dapat menghasilkan data yang buruk secara diam-diam karena gabungan yang buruk.
Daripada menggunakan required_joins, sebaiknya ubah model untuk menggunakan sintaksis ${view_name.looker_dimension_name}.
Perlu atau ingin menulis SQL mentah
Ada beberapa kasus saat Anda tidak dapat atau tidak ingin menggunakan sintaksis ${view_name.looker_dimension_name} dengan sql_on. Biasanya, hal ini karena Anda ingin menggunakan nilai mentah dalam database dan ingin menghindari casting atau manipulasi lain yang terjadi dengan sintaksis ${view_name.looker_dimension_name}. Berikut adalah contoh penggunaannya:
explore: order {
join: user {
sql_on: ${order.user_id} = ${user.id} ;;
}
join: pre_sign_up_events {
from: event
sql_on:
${event.user_id} = ${user.id} AND
event.date BETWEEN user.creation_date AND user.sign_up_date ;;
required_joins: [user]
relationship: one_to_many
}
}
Dalam contoh ini, gabungan pre_sign_up_events mengandalkan tanggal dari user. Oleh karena itu, penting untuk memastikan bahwa user digabungkan dengan menggunakan required_joins.
Daripada menggunakan required_joins untuk menghindari casting dengan kolom waktu atau tanggal, sebaiknya gunakan date_raw type dan hindari penggunaan required_joins.
Tantangan umum
Tampilan harus digabungkan ke Eksplorasi sebelum dapat dirujuk di required_joins
Untuk menempatkan tampilan ke required_joins, Anda harus memastikan tampilan tersebut digabungkan ke explore tempat required_joins digunakan. Misalnya, hal ini tidak akan berfungsi:
explore: order_items {
join: customer {
sql_on: order.customer_id = customer.id ;;
required_joins: [order]
}
}
order di sini belum digabungkan ke order_items, sehingga tidak tersedia untuk digunakan di required_joins.