用量
view: view_name {
filter: filter_name { ... }
}
|
階層
filter |
預設值
無
接受
用來命名篩選器的 Looker ID
特別規則
篩選條件名稱不得與同一 view 內的任何其他篩選條件、dimension 或 measure 共用
|
定義
filter 參數會宣告篩選器限定欄位和該篩選器的名稱。使用者在探索時可以將篩選器限定欄位新增為篩選器,但無法將這些欄位新增至結果集。這些僅限篩選的欄位可透過範本化篩選器發揮作用,這是進階的 LookML 主題。您也可以參閱「使用 filter 依隱藏欄位篩選」範例。
篩選器名稱必須符合下列規定:
- 在任何檢視中不得重複
- 由字元
a到z(不含大寫字母)、0到9或_組成 - 以英文字母開頭
篩選器欄位類型有很多種,詳情請參閱「維度、篩選器和參數類型」說明文件頁面。
filter 的子參數
如需 LookML 欄位可用的子參數清單,請參閱「欄位參數」參考頁面。
範例
以下列舉幾個使用 filter 參數的範例。
建立使用者指定的篩選器
建立篩選器,讓使用者指定 order_region:
filter: order_region {
type: string
}
使用範本化篩選器定義動態衍生資料表
如「範本化篩選器和 Liquid 參數」說明文件頁面所示,定義衍生資料表,計算使用者指定區域的顧客終生消費金額。這個範例會使用上一個範例中建立的 filter,做為範本篩選器的一部分。filter 輸入內容會與 Liquid 變數搭配使用於 WHERE 子句中:
view: customer_facts {
derived_table: {
sql:
SELECT
customer_id,
SUM(sale_price) AS lifetime_spend
FROM
order
WHERE
{% condition order_region %} order.region {% endcondition %}
GROUP BY 1
;;
}
filter: order_region {
type: string
}
}
搭配 filter 使用 sql 參數
您也可以搭配 filter 使用 sql 參數,只要篩選器有值,就會套用至 SQL WHERE 子句。這樣就能根據使用者篩選器輸入內容,動態產生 WHERE 子句。
以下範例會建立篩選器,只允許資料集中存在的使用者名稱:
filter: user_enabled {
type: string
suggest_dimension: user_name
sql: EXISTS (SELECT user_id FROM users WHERE {% condition %} user_name {% endcondition %} and state = 'enabled') ;;
}
以前一個範例來說,如果資料集中的完整使用者名稱清單為「Zach」、「Erin」和「Brett」,則篩選器會產生下列 WHERE 子句:
WHERE EXISTS (SELECT user_id FROM users WHERE user_name in ('Zach', 'Erin', 'Brett') and state = 'enabled')
如需瞭解如何搭配使用 sql 參數和 filter,請參閱本頁的「使用 filter 依隱藏欄位篩選」一節。
使用 filter 定義動態衍生資料表和使用者定義的篩選器
以上述範例為例,該範例定義了具有動態區域值的衍生資料表,您可以使用 sql 參數和範本篩選器,動態建構套用至衍生資料表和 Looker 產生主要查詢的 WHERE 子句:
view: customer_facts {
derived_table: {
sql:
SELECT
customer_id,
SUM(sale_price) AS lifetime_spend
FROM
order
WHERE
{% condition order_region %} order.region {% endcondition %}
GROUP BY 1
;;
}
filter: order_region {
type: string
sql: {% condition order_region %} ${region} {% endcondition %} ;;
}
dimension: region {
type: string
sql: ${TABLE}.region ;;
}
在先前的範例中,使用者會為篩選器 order_region 提供輸入內容,而篩選器會為 region 維度提供值。接著,region 維度會提供衍生資料表 SQL 中 WHERE 子句的值,並由於 filter 定義中的 sql 參數,提供 Looker 產生查詢中 WHERE 子句的值。
使用 filter 依隱藏欄位篩選
您可以使用 filter 建立可供使用者篩選的維度,同時禁止使用者在查詢中選取該維度。
首先,使用
hidden: yes隱藏有問題的維度。也就是說,使用者無法從「探索」欄位挑選器選取該維度。dimension: field_to_hide { type: string hidden: yes sql: ${TABLE}.field_to_hide ;; }現在,請建立
filter欄位,連結至field_to_hide維度。filter: filter_on_field_to_hide { type: string sql: {% condition filter_on_field_to_hide %} ${field_to_hide} {% endcondition %} ;; }
如「搭配 filter 使用 sql 參數」範例所述,filter 欄位的 sql 參數會直接將 SQL 套用至查詢的 WHERE 子句。在本例中,sql 會採用 filter_on_field_to_hide 篩選器中指定的篩選條件,並套用至 ${field_to_hide} 維度。
這樣一來,使用者就能透過 filter_on_field_to_hide 篩選器篩選查詢,但 field_to_hide 維度仍會保持隱藏狀態。field_to_hide