Penggabungan memungkinkan Anda menghubungkan tampilan yang berbeda sehingga Anda dapat menjelajahi data dari lebih dari satu tampilan secara bersamaan dan melihat hubungan antara berbagai bagian data Anda.
Misalnya, database Anda mungkin menyertakan tabel order_items, orders, dan users. Anda dapat menggunakan gabungan untuk menjelajahi data dari semua tabel secara bersamaan. Halaman ini menjelaskan gabungan di LookML, termasuk parameter gabungan tertentu dan pola gabungan.
Gabungan dimulai dengan Explore
Gabungan ditentukan dalam file model untuk menetapkan hubungan antara Eksplorasi dan tampilan. Gabungan menghubungkan satu atau beberapa tampilan ke satu Eksplorasi, baik secara langsung maupun melalui tampilan gabungan lain.
Pertimbangkan dua tabel database: order_items dan orders. Setelah membuat tampilan untuk kedua tabel, deklarasikan satu atau beberapa tampilan di bawah parameter explore dalam file model:
explore: order_items { ... }
Saat Anda menjalankan kueri dari Eksplorasi order_items, order_items akan muncul dalam klausa FROM dari SQL yang dihasilkan:
SELECT ...
FROM order_items
Anda dapat menggabungkan informasi tambahan ke Eksplorasi order_items. Misalnya, Anda dapat menggunakan LookML contoh berikut untuk menggabungkan tampilan orders ke Eksplorasi order_items:
explore: order_items {
join: orders {
type: left_outer
relationship: many_to_one
sql_on: ${order_items.order_id} = ${orders.id} ;;
}
}
LookML yang ditampilkan sebelumnya melakukan dua hal. Pertama, Anda dapat melihat kolom dari orders dan order_items di pemilih kolom Jelajahi:

Kedua, LookML menjelaskan cara menggabungkan orders dan order_items. LookML tersebut akan diterjemahkan ke SQL berikut:
SELECT ...
FROM order_items
LEFT JOIN orders
ON order_items.order_id = orders.id
Parameter LookML ini dijelaskan secara lebih mendetail di bagian berikut.
Parameter join
Empat parameter utama yang digunakan untuk menggabungkan adalah: join, type, relationship, dan sql_on.
Langkah 1: Memulai Eksplorasi
Pertama, buat Eksplorasi order_items:
explore: order_items { ... }
Langkah 2: join
Untuk menggabungkan tabel, Anda harus mendeklarasikan tabel dalam tampilan terlebih dahulu. Dalam contoh ini, asumsikan bahwa orders adalah tampilan yang ada di model Anda.
Kemudian, gunakan parameter join untuk menyatakan bahwa Anda ingin menggabungkan tampilan orders ke Eksplorasi order_items:
explore: order_items {
join: orders { ... }
}
Langkah 3: type
Pertimbangkan jenis penggabungan yang akan dilakukan. Looker mendukung LEFT JOIN, INNER JOIN, FULL OUTER JOIN, dan CROSS JOIN. Nilai ini sesuai dengan nilai parameter type dari left_outer, inner, full_outer, dan cross.
explore: order_items {
join: orders {
type: left_outer
}
}
Nilai default type adalah left_outer.
Langkah 4: relationship
Tentukan hubungan gabungan antara Eksplorasi order_items dan tampilan orders. Mendeklarasikan hubungan gabungan dengan benar penting agar Looker dapat menghitung ukuran yang akurat. Hubungan ditentukan dari Eksplorasi order_items ke tampilan orders. Opsi yang mungkin adalah one_to_one, many_to_one, one_to_many, dan many_to_many.
Dalam contoh ini, ada banyak item pesanan untuk satu pesanan. Hubungan dari Explore order_items ke tampilan orders adalah many_to_one:
explore: order_items {
join: orders {
type: left_outer
relationship: many_to_one
}
}
Jika Anda tidak menyertakan parameter relationship dalam gabungan, Looker akan menggunakan many_to_one secara default.
Untuk tips tambahan tentang cara menentukan parameter relationship dengan benar untuk gabungan, lihat Mendapatkan parameter relationship yang tepat.
Langkah 5: sql_on
Nyatakan cara menggabungkan tabel order_items dan tabel orders dengan parameter sql_on atau parameter foreign_key.
Parameter sql_on setara dengan klausa ON dalam SQL yang dihasilkan untuk kueri. Dengan parameter ini, Anda dapat mendeklarasikan kolom mana yang harus dicocokkan untuk melakukan penggabungan:
explore: order_items {
join: orders {
type: left_outer
relationship: many_to_one
sql_on: ${order_items.order_id} = ${orders.id} ;;
}
}
Anda juga dapat menulis gabungan yang lebih kompleks. Misalnya, Anda hanya ingin menggabungkan pesanan dengan id lebih besar dari 1000:
explore: order_items {
join: orders {
type: left_outer
relationship: many_to_one
sql_on: ${order_items.order_id} = ${orders.id} AND ${orders.id} > 1000 ;;
}
}
Lihat dokumentasi operator penggantian untuk mempelajari lebih lanjut sintaksis ${ ... } dalam contoh ini.
Langkah 6: Pengujian
Uji apakah gabungan ini berfungsi seperti yang diharapkan dengan membuka Eksplorasi Item Pesanan. Anda akan melihat kolom dari order_items dan orders.

Lihat Menguji kolom di Eksplorasi untuk mempelajari lebih lanjut cara menguji perubahan LookML di Eksplorasi.
Bergabung melalui tampilan lain
Anda dapat menggabungkan tampilan ke Eksplorasi melalui tampilan lain. Dalam contoh parameter gabungan, Anda menggabungkan orders ke order_items menggunakan kolom order_id. Kita mungkin juga ingin menggabungkan data dari tampilan yang disebut users ke Eksplorasi order_items, meskipun keduanya tidak memiliki kolom yang sama. Hal ini dapat dilakukan dengan bergabung melalui tampilan orders.
Gunakan parameter sql_on atau parameter foreign_key untuk menggabungkan tampilan users ke tampilan orders, bukan ke Eksplorasi order_items. Lakukan hal ini dengan mencakup kolom dari orders sebagai orders.user_id dengan benar.
Berikut adalah contoh penggunaan parameter sql_on:
explore: order_items {
join: orders {
type: left_outer
relationship: many_to_one
sql_on: ${order_items.order_id} = ${orders.id} ;;
}
join: users {
type: left_outer
relationship: many_to_one
sql_on: ${orders.user_id} = ${users.id} ;;
}
}
Bergabung ke tampilan lebih dari sekali
Tampilan users berisi data untuk pembeli dan penjual. Untuk menggabungkan data dari tampilan ini ke order_items, tetapi melakukannya secara terpisah untuk pembeli dan penjual, Anda dapat menggabungkan users dua kali, dengan nama yang berbeda, menggunakan parameter from.
Parameter from memungkinkan Anda menentukan tampilan mana yang akan digunakan dalam gabungan, sekaligus memberikan nama unik pada gabungan tersebut. Contoh:
explore: order_items {
join: orders {
type: left_outer
relationship: many_to_one
sql_on: ${order_items.order_id} = ${orders.id} ;;
}
join: buyers {
from: users
type: left_outer
relationship: many_to_one
sql_on: ${orders.buyer_id} = ${buyers.id} ;;
}
join: sellers {
from: users
type: left_outer
relationship: many_to_one
sql_on: ${orders.seller_id} = ${sellers.id} ;;
}
}
Dalam hal ini, hanya data pembeli yang digabungkan sebagai buyers, sementara hanya data penjual yang digabungkan sebagai sellers.
Catatan: Tampilan users kini harus dirujuk berdasarkan nama aliasnya, buyers dan sellers, dalam gabungan.
Membatasi kolom dari gabungan
Parameter fields memungkinkan Anda menentukan kolom mana yang dibawa dari gabungan ke dalam Jelajah. Secara default, semua kolom dari tampilan akan disertakan saat digabungkan. Namun, Anda mungkin hanya ingin menampilkan sebagian kolom.
Misalnya, saat orders digabungkan ke order_items, Anda mungkin hanya ingin menampilkan kolom shipping dan tax melalui gabungan:
explore: order_items {
join: orders {
type: left_outer
relationship: many_to_one
sql_on: ${order_items.order_id} = ${orders.id} ;;
fields: [shipping, tax]
}
}
Anda juga dapat mereferensikan kumpulan kolom, seperti [set_a*]. Setiap set ditentukan dalam tampilan menggunakan parameter set. Misalkan Anda memiliki set berikut yang ditentukan dalam tampilan orders:
set: orders_set {
fields: [created_date, shipping, tax]
}
Anda dapat memilih untuk hanya menyertakan ketiga kolom ini saat menggabungkan orders ke order_items:
explore: order_items {
join: orders {
type: left_outer
relationship: many_to_one
sql_on: ${order_items.order_id} = ${orders.id} ;;
fields: [orders_set*]
}
}
Agregat simetris
Looker menggunakan fitur yang disebut "agregasi simetris" untuk menghitung agregasi (seperti jumlah dan rata-rata) dengan benar, bahkan saat gabungan menghasilkan fanout. Agregat simetris dijelaskan secara lebih mendetail di Memahami agregat simetris. Masalah fanout yang diselesaikan oleh agregasi simetris dijelaskan dalam postingan Komunitas Masalah fanout SQL.
Kunci utama wajib diisi
Agar ukuran (agregasi) dapat ditampilkan melalui gabungan, Anda harus menentukan kunci utama di semua tampilan yang terlibat dalam gabungan.
Lakukan ini dengan menambahkan parameter primary_key ke definisi kolom kunci utama di setiap tampilan:
dimension: id {
type: number
primary_key: yes
}
Dialek SQL yang didukung
Agar Looker mendukung agregat simetris di project Looker Anda, dialek database Anda juga harus mendukungnya. Tabel berikut menunjukkan dialek mana yang mendukung agregat simetris dalam rilis Looker terbaru:
| Dialek | Didukung? |
|---|---|
| Actian Avalanche | Ya |
| Amazon Athena | Ya |
| Amazon Aurora MySQL | Ya |
| Amazon Redshift | Ya |
| Amazon Redshift 2.1+ | Ya |
| Amazon Redshift Serverless 2.1+ | Ya |
| Apache Druid | Tidak |
| Apache Druid 0.13+ | Tidak |
| Apache Druid 0.18+ | Tidak |
| Apache Hive 2.3+ | Tidak |
| Apache Hive 3.1.2+ | Tidak |
| Apache Spark 3+ | Ya |
| ClickHouse | Tidak |
| Cloudera Impala 3.1+ | Ya |
| Cloudera Impala 3.1+ with Native Driver | Ya |
| Cloudera Impala with Native Driver | Tidak |
| DataVirtuality | Ya |
| Databricks | Ya |
| Denodo 7 | Ya |
| Denodo 8 & 9 | Ya |
| Dremio | Tidak |
| Dremio 11+ | Ya |
| Exasol | Ya |
| Google BigQuery Legacy SQL | Ya |
| Google BigQuery Standard SQL | Ya |
| Google Cloud PostgreSQL | Ya |
| Google Cloud SQL | Ya |
| Google Spanner | Ya |
| Greenplum | Ya |
| HyperSQL | Tidak |
| IBM Netezza | Ya |
| MariaDB | Ya |
| Microsoft Azure PostgreSQL | Ya |
| Microsoft Azure SQL Database | Ya |
| Microsoft Azure Synapse Analytics | Ya |
| Microsoft SQL Server 2008+ | Ya |
| Microsoft SQL Server 2012+ | Ya |
| Microsoft SQL Server 2016 | Ya |
| Microsoft SQL Server 2017+ | Ya |
| MongoBI | Tidak |
| MySQL | Ya |
| MySQL 8.0.12+ | Ya |
| Oracle | Ya |
| Oracle ADWC | Ya |
| PostgreSQL 9.5+ | Ya |
| PostgreSQL pre-9.5 | Ya |
| PrestoDB | Ya |
| PrestoSQL | Ya |
| SAP HANA | Ya |
| SAP HANA 2+ | Ya |
| SingleStore | Ya |
| SingleStore 7+ | Ya |
| Snowflake | Ya |
| Teradata | Ya |
| Trino | Ya |
| Vector | Ya |
| Vertica | Ya |
Jika dialek Anda tidak mendukung agregasi simetris, berhati-hatilah saat menjalankan gabungan di Looker, karena beberapa jenis gabungan dapat menghasilkan agregasi yang tidak akurat (seperti jumlah dan rata-rata). Masalah ini dan solusinya dijelaskan secara mendetail dalam postingan Komunitas Masalah fanout SQL.
Pelajari lebih lanjut gabungan
Untuk mempelajari lebih lanjut parameter gabungan di LookML, lihat dokumentasi Referensi gabungan.