Penggunaan
explore: view_name {
join: view_name_2 {
relationship: one_to_one
}
}
|
Hierarki
relationship |
Nilai Default
many_to_one
Menerima
Hubungan (many_to_one, many_to_many, one_to_many, one_to_one)
|
Definisi
relationship memungkinkan Anda mendeskripsikan hubungan join antara tampilan gabungan. Anda harus menentukan jenis hubungan dengan benar agar Looker dapat menghitung ukuran yang akurat.
Untuk memahami hubungan yang sedang ditentukan, perhatikan contoh ini:
explore: order {
join: user {
sql_on: ${order.user_id} = ${user.id} ;;
relationship: many_to_one
}
join: user_facts {
sql_on: ${user.id} = ${user_facts.user_id} ;;
relationship: one_to_one
}
}
Jika tampilan digabungkan langsung ke Eksplorasi, seperti tampilan user dalam contoh ini, hubungan dari Eksplorasi ke tampilan yang digabungkan. Di sini, kami menyatakan bahwa ada banyak pesanan untuk satu pengguna.
Saat tampilan digabungkan ke Eksplorasi melalui tampilan lain — seperti cara user_facts digabungkan melalui user ke order dalam contoh ini — hubungan yang ditentukan adalah dari tampilan perantara (user) ke tampilan akhir (user_facts). Dalam contoh ini, kita menyatakan bahwa ada satu pengguna untuk satu rekaman fakta pengguna.
Kemungkinan nilai untuk relationship dijelaskan di bagian-bagian halaman ini:
one_to_one
Jika satu baris di Eksplorasi hanya dapat cocok dengan satu baris di tampilan gabungan, hubungannya adalah one_to_one.
Misalnya, Eksplorasi user dengan tampilan gabungan user_facts akan menjadi one_to_one, karena kedua tabel memiliki satu baris per pengguna.
Hubungan
one_to_onemengharuskan tidak ada nilai null dalam kunci utama tabel. Jika ada nilai null di salah satu atau kedua kunci utama tabel, hubungan tersebut adalahmany_to_manyataumany_to_one.
many_to_one (nilai default)
Jika banyak baris di Eksplorasi dapat cocok dengan satu baris di tampilan gabungan, hubungannya adalah many_to_one. Misalnya, order Eksplorasi dengan tampilan gabungan user akan menjadi many_to_one, karena mungkin ada beberapa pesanan per pengguna.

one_to_many
Jika satu baris di Eksplorasi dapat cocok dengan banyak baris di tampilan gabungan, hubungan tersebut adalah one_to_many. Misalnya, Eksplorasi order dengan gabungan tampilan item adalah one_to_many, karena satu pesanan dapat berisi beberapa item.

many_to_many
Jika banyak baris di Eksplorasi dapat cocok dengan banyak baris di tampilan gabungan, hubungan tersebut adalah many_to_many. Misalnya, student Jelajah dengan tampilan gabungan class dapat menjadi many_to_many jika seorang siswa memiliki beberapa kelas dan suatu kelas memiliki beberapa siswa. Dalam praktiknya, hubungan many-to-many sering dihindari dalam desain database SQL, sehingga sebagian besar model tidak memerlukan many_to_many.

Contoh
Nyatakan hubungan user ke dna sebagai one_to_one:
explore: user {
join: dna {
sql_on: ${user.dna_id} = ${dna.id} ;;
relationship: one_to_one
}
}
Nyatakan hubungan order ke user sebagai many_to_one:
explore: order {
join: user {
sql_on: ${order.user_id} = ${user.id} ;;
relationship: many_to_one
}
}
Nyatakan hubungan order ke item sebagai one_to_many:
explore: order {
join: item {
sql_on: ${order.order_id} = ${item.order_id} ;;
relationship: one_to_many
}
}
Nyatakan hubungan student ke class sebagai many_to_many:
explore: student {
join: class {
sql_on: ${student.student_id} = ${class.student_id} ;;
relationship: many_to_many
}
}
Nyatakan hubungan user ke user_type sebagai many_to_one:
explore: order {
join: user {
sql_on: ${order.user_id} = ${user.id} ;;
relationship: many_to_one
}
join: user_type {
sql_on: ${user.type_id} = ${user_type.id} ;;
relationship: many_to_one
}
}