Penggunaan
explore: view_name_1 {
join: view_name_2 {
sql_where: ${view_name_1.id} < 100 ;;
}
}
explore: view_name_1 {
join: view_name_2 {
sql_where: ${view_name_1.id} < 100 ;;
}
}
|
Hierarchy
sql_where |
Default Value
None
Accepts
A SQL WHERE clause
|
sql_where lets you apply a query restriction that users cannot change. The restriction will be inserted into the WHERE clause of the underlying SQL that Looker generates if and only if the join is used in the query. In addition to queries run by human users, the restriction will apply to dashboards, scheduled Looks, and embedded information that relies on that Explore.
The condition can be written in pure SQL, using your database's actual table and column names. It can also use Looker field references like ${view_name.field_name}, which is the preferred method, because Looker can be smarter about automatically including necessary joins. A sql_where condition is not displayed to the user, unless they look at the underlying SQL of any queries that they create.
For example, you can specify that if the join to users is used, that only users younger than 50 should be included:
explore: orders_users_under_50 {
view_name: orders
join: users {
sql_on: ${users.id} = ${orders.user_id} ;;
sql_where: ${users.age} < 50 ;;
type: left_outer
}
}
Jika pengguna memilih Orders.Count dan Users.Count, SQL yang akan dihasilkan Looker dari LookML ini adalah:
SELECT
COUNT(orders.id) AS orders_count,
COUNT(DISTINCT users.id, 1000) AS users_count
FROM thelook2.orders AS orders
LEFT JOIN thelook2.users AS users ON users.id = orders.user_id
WHERE users.age < 50
LIMIT 500
ORJika Anda menggunakan logika OR dengan sql_where, sangat penting untuk menempatkan tanda kurung di sekitar kondisi SQL. Misalnya, alih-alih menulis ini:
sql_where: region = 'Northeast' OR company = 'Altostrat' ;;
Anda akan menulis ini:
sql_where: (region = 'Northeast' OR company = 'Altostrat') ;;
Jika Anda lupa menambahkan tanda kurung dalam contoh ini, dan pengguna menambahkan filternya sendiri, klausa WHERE yang dihasilkan dapat memiliki bentuk:
WHERE
user_filter = 'something' AND
region = 'Northeast' OR
company = 'Altostrat'
Dalam situasi ini, filter yang diterapkan pengguna mungkin tidak berfungsi. Apa pun yang terjadi, baris dengan company = 'Altostrat' akan muncul, karena kondisi AND dievaluasi terlebih dahulu. Tanpa tanda kurung, hanya sebagian kondisi sql_where yang digabungkan dengan filter pengguna. Jika tanda kurung ditambahkan, klausa WHERE akan terlihat seperti ini:
WHERE
user_filter = 'something' AND
(region = 'Northeast' OR company = 'Altostrat')
Sekarang filter pengguna akan diterapkan untuk setiap baris.
sql_whereSecara umum, Looker menerapkan gabungan dalam urutan yang benar, terlepas dari urutan gabungan yang ditentukan dalam LookML. Pengecualian untuk hal ini adalah dengan sql_where. Jika Anda mereferensikan kolom dari gabungan lain dalam pernyataan sql_where, gabungan yang Anda referensikan harus ditentukan sebelum pernyataan sql_where di LookML.
Misalnya, berikut adalah pernyataan sql_where yang mereferensikan kolom inventory_items.id sebelum inventory_items digabungkan:
explore: orders {
hidden: yes
join: order_items {
sql_on: ${order_items.order_id} = ${orders.id} ;;
sql_where: ${inventory_items.id} IS NOT NULL ;;
}
join: inventory_items {
sql_on: ${inventory_items.id}=${order_items.inventory_item_id} ;;
}
}
Jika Anda menjalankan kueri di Eksplorasi ini, Looker akan menampilkan error bahwa kolom inventory_items.id tidak dapat ditemukan.
Namun, Anda dapat mengatasi masalah ini dengan menyusun ulang gabungan sehingga gabungan yang dirujuk dalam pernyataan sql_where ditentukan sebelum pernyataan sql_where, seperti ini:
explore: orders {
hidden: yes
join: inventory_items {
sql_on: ${inventory_items.id}=${order_items.inventory_item_id} ;;
}
join: order_items {
sql_on: ${order_items.order_id} = ${orders.id} ;;
sql_where: ${inventory_items.id} IS NOT NULL ;;
}
}
Hal ini akan mencegah terjadinya error karena gabungan inventory_items ditentukan sebelum kolom inventory_items.id dirujuk dalam pernyataan sql_where dari gabungan order_items.
sql_where hanya diterapkan jika gabungan digunakanBatasan kueri yang ditentukan dalam sql_where akan dimasukkan ke dalam klausa WHERE dari SQL dasar yang dibuat Looker jika dan hanya jika gabungan digunakan dalam kueri. Jika Anda ingin klausa where diterapkan meskipun gabungan tidak akan digunakan, gunakan sql_always_where.
Kecuali dinyatakan lain, konten di halaman ini dilisensikan berdasarkan Lisensi Creative Commons Attribution 4.0, sedangkan contoh kode dilisensikan berdasarkan Lisensi Apache 2.0. Untuk mengetahui informasi selengkapnya, lihat Kebijakan Situs Google Developers. Java adalah merek dagang terdaftar dari Oracle dan/atau afiliasinya.
Terakhir diperbarui pada 2026-02-05 UTC.