Penggunaan
explore: view_name_1 {
join: view_name_2 {
foreign_key: dimension_name
}
}
|
Hierarki
foreign_key |
Nilai Default
Tidak ada
Menerima
Nama dimensi Looker
Aturan Khusus
|
Definisi
foreign_key membuat hubungan gabungan antara tampilan dan fitur Jelajahnya. Looker mencocokkan dimensi yang dirujuk oleh foreign_key dengan kunci utama tampilan gabungan. Anda menetapkan kunci utama tampilan gabungan dengan mengaktifkan primary_key untuk kolom yang berfungsi sebagai kunci utama.
Tabel virtual dapat digabungkan langsung ke Eksplorasi saat menggunakan foreign_key, atau dapat digabungkan melalui tabel virtual kedua yang sudah digabungkan ke Eksplorasi tersebut.
Contoh kasus pertama, saat tampilan digabungkan langsung ke Eksplorasi, akan terlihat seperti ini:
explore: order {
join: customer {
foreign_key: customer_id
}
}
Dengan asumsi bahwa kunci utama customer diberi nama id, SQL yang dihasilkan Looker adalah:
SELECT ...
FROM order
LEFT JOIN customer
ON order.customer_id = customer.id
Dalam kasus kedua, tampilan digabungkan ke Eksplorasi melalui tampilan perantara yang sudah digabungkan ke Eksplorasi tersebut. Contohnya adalah:
explore: order_items {
join: order {
foreign_key: order_id
}
join: customer {
foreign_key: order.customer_id
}
}
Di sini, customer tidak dapat bergabung langsung ke order_items. Sebagai gantinya, grup harus bergabung melalui order. Dengan asumsi bahwa kunci utama order dan customer diberi nama id, SQL yang dihasilkan Looker adalah:
SELECT ...
FROM order_items
LEFT JOIN order
ON order_items.order_id = order.id
LEFT JOIN customer
ON order.customer_id = customer.id
Agar ini berfungsi dengan benar, Anda dapat melihat bahwa kita menggunakan referensi kolom yang sepenuhnya tercakup order.customer_id saat menggabungkan customer, bukan hanya customer_id. Jika kita hanya menggunakan customer_id, Looker akan mencoba menggabungkan customer langsung ke order_items.customer_id, bukan melalui order.customer_id.
Contoh
Gabungkan tampilan bernama customer ke Jelajah bernama order dengan mencocokkan kunci utama dari customer dengan order.customer_id:
explore: order {
join: customer {
foreign_key: customer_id
}
}
Gabungkan tampilan bernama customer ke Eksplorasi bernama order_items melalui tampilan yang disebut order. Cocokkan kunci utama dari customer dengan order.customer_id, dan kunci utama dari order dengan order_items.order_id:
explore: order_items {
join: order {
foreign_key: order_id
}
join: customer {
foreign_key: order.customer_id
}
}
Gabungkan tampilan bernama order dan inventory_item ke Explore bernama order_items. Cocokkan kunci utama dari order dengan order_items.order_id, dan kunci utama dari inventory_item dengan order_items.inventory_id:
explore: order_items {
join: order {
foreign_key: order_id
}
join: inventory_item {
foreign_key: inventory_id
}
}
Tantangan umum
foreign_key harus mereferensikan nama dimensi, bukan nama kolom
Parameter foreign_key hanya menggunakan nama dimensi, bukan nama kolom di database SQL pokok Anda. Sering kali nama dimensi dan nama kolom identik, yang dapat menyebabkan kesimpulan keliru bahwa nama kolom dapat digunakan.
Kunci utama harus ditentukan dalam tampilan yang digabungkan dengan foreign_key
Agar foreign_key berfungsi dengan baik, salah satu dimensi dalam tampilan gabungan harus ditentukan sebagai kunci utama tampilan tersebut. Kunci utama ditentukan melalui parameter primary_key.
Karena hanya satu dimensi yang dapat ditentukan sebagai kunci utama, Anda tidak dapat menggunakan foreign_key dengan tampilan yang memiliki kunci utama multi-kolom. Dalam situasi seperti itu, Anda harus menggunakan sql_on sebagai gantinya.
Yang perlu diketahui
foreign_key bukan satu-satunya cara untuk bergabung di Looker
Beberapa hubungan gabungan tidak dapat dibuat dengan foreign_key. Misalnya, gabungan mungkin tidak menggunakan kunci utama tampilan yang digabungkan, atau mungkin memerlukan beberapa kondisi sebagai bagian dari gabungan. Dalam situasi ini, gunakan sql_on sebagai gantinya.