篩選運算式是篩選 Looker 查詢的進階方式。您可以使用篩選器運算式執行下列操作:
這個頁面列出您可以在 Looker 探索中,為使用「符合 (進階)」條件選項的篩選器輸入的值。視篩選器類型和篩選值輸入內容而定,Looker 可能會將「相符 (進階)」選項轉換為更合適的篩選條件。
篩選運算式須知
使用 Looker 篩選器運算式時,請注意以下幾點:
- 如果 Looker 連接器將 Looker 探索當做資料來源,且篩選器採用「相符 (進階)」條件,Looker Studio 部分篩選器類型也支援這個頁面上的篩選運算式。在 Looker Studio 中,「相符 (進階)」條件的運作方式與在 Looker 探索中稍有不同。根據使用者輸入的內容,Looker 可能會將「相符 (進階)」條件轉換為更合適的條件。不過,如果使用者輸入的內容不適用於 Looker Studio 支援的其他篩選條件,Looker Studio 會使用「相符 (進階)」選項做為全面性條件,但不會轉換條件。
 - 在探索中,基本篩選器使用的某些片語,與本頁面記錄的篩選器運算式意義不同。
 - 在 LookML 中使用篩選運算式時,請將運算式放在引號中 (如要瞭解正確用法,請參閱 
filters說明文件頁面)。這對NULL等邏輯值來說尤其重要。在 Looker 的「探索」部分使用篩選運算式時,不需要在運算式前後加上引號。 - 存取權授予不支援篩選器運算式。詳情請參閱 
access_grant說明文件頁面。 
各篩選器類型的篩選運算式
在 Looker 探索篩選器中,使用「符合 (進階)」條件選項,輸入下列範例做為篩選器值。下列篩選器類型支援篩選運算式:
字串
| 範例 | 說明 | 
|---|---|
FOO | 
        完全等於「FOO」 | 
FOO,BAR | 
        完全等於「FOO」或「BAR」 | 
%FOO% | 
        包含「FOO」,符合「buffoon」和「fast food」 | 
FOO% | 
        開頭為「FOO」,比對結果會包括「foolish」和「food」,但不包括「buffoon」或「fast food」 | 
%FOO | 
        結尾為「FOO」,比對結果會包括「buffoo」和「fast foo」,但不包括「buffoon」或「fast food」 | 
F%OD | 
        開頭為「F」,結尾為「OD」,符合「fast food」 | 
EMPTY | 
        字串為空白 (零個字元) 或空值 (沒有值) | 
NULL | 
        值為空值 (當做為 LookML 篩選運算式的一部分時,請將 NULL 放在引號中,如 filters 說明文件頁面所示) | 
    
-FOO | 
        不等於「FOO」(任何值,但「FOO」除外),比對結果會包括「pizza」、「trash」、「fun」,但不包括「foo」 | 
-FOO,-BAR | 
        不等於「FOO」或「BAR」,符合「FOO」和「BAR」以外的任何值 | 
-%FOO% | 
        不含「FOO」,且不符合「buffoon」或「fast food」 | 
-FOO% | 
        開頭不是「FOO」,也不符合「foolish」或「food」 | 
-%FOO | 
        結尾不是「FOO」,不符合「buffoo」或「fast foo」 | 
-EMPTY | 
        字串不得為空 (至少要有一個字元) | 
-NULL | 
        資料欄的值不是空值 (當做為 LookML 篩選運算式的一部分時,請將 -NULL 放在引號中,如 filters 說明文件頁面所示) | 
    
FOO%,BAR | 
        開頭為「FOO」或完全是「BAR」,比對結果會包括「food」和「bar」,但不包括「barfood」 | 
FOO%,-FOOD | 
        開頭為「FOO」,但不是「FOOD」 | 
_UF | 
        包含任何單一字元,後面接著「UF」,與「buffoon」相符 | 
在字串篩選器中加入特殊字元
請注意,在字串篩選器中加入特殊字元時,須遵守下列規則:
- 如要加入 
"、%或_,請加上逸出字元^前置字串。例如:^"、^%和^_ - 如要加入開頭的 
-,請將其逸出為^-。只有在-是開頭字元時才需要,如果-位於字串內,則不需要逸出。 - 如要加入 
^,請將其逸出為^^。 - 如要在一般 UI 字串篩選器中加入半形逗號,請在半形逗號前加上反斜線字元 
\。例如:Santa Cruz\, CA。 - 如要在篩選器中透過「相符項目 (進階)」選項加入半形逗號,請在半形逗號前加上逸出字元 
^。例如:Santa Cruz^, CA。 - 如要在 LookML 的篩選運算式中加入半形逗號,請在半形逗號前加上逸出字元 
^。例如: 
  field: filtered_count {
      type: count
      filters: [city: "Santa Cruz^, CA"]
    }
日期和時間
Looker 日期篩選功能可使用英文片語,取代 SQL 日期函式。
日期和時間篩選器的基本結構
以下列範例來說:
{n}為整數。{interval}是時間增量,例如小時、天、週或月。您使用的措辭會決定
{interval}是否包含部分時間範圍,或只包含完整時間範圍。舉例來說,運算式3 days包含當天 (部分) 和前兩天的資料。運算式3 days ago for 3 days包含前三個完整天數,但不含目前未滿一天的時間。詳情請參閱「相對日期」一節。{time}可以指定時間 (格式為 YYYY-MM-DD HH:MM:SS 或 YYYY/MM/DD HH:MM:SS),也可以指定日期 (格式為 YYYY-MM-DD 或 YYYY/MM/DD)。使用 YYYY-MM-DD 格式時,請務必包含月份和日期的兩位數,例如 2016-01。如果將月份或日期截斷為單一數字,系統會將其解讀為偏移值,而非日期。舉例來說,2016-1 會解讀為 2016 年減一年,也就是 2015 年。
日期篩選器的所有可能組合如下:
| 組合 | 範例 | 附註 | 
|---|---|---|
this {interval} | 
        this month | 
        你可以使用 this week、this month、this quarter 或 this year。請注意,系統不支援 this day。如要取得當日資料,可以使用 today。 | 
    
{n} {interval} | 
        3 days | 
        |
{n} {interval} ago | 
        3 days ago | 
        |
{n} {interval} ago for {n} {interval} | 
        3 months ago for 2 days | 
        |
before {n} {interval} ago | 
        before 3 days ago | 
        |
before {time} | 
        before 2018-01-01 12:00:00 | 
        before 不包含您指定的時間。運算式 before 2018-01-01 會傳回 2018 年 1 月 1 日前的所有日期資料,但不會傳回 2018 年 1 月 1 日的資料。 | 
    
after {time} | 
        after 2018-10-05 | 
        after 包含您指定的時間。因此,運算式 after 2018-10-05 會傳回 2018 年 10 月 5 日和之後的所有日期。 | 
    
{time} to {time} | 
        2018-05-18 12:00:00 to2018-05-18 14:00:00 | 
        初始時間值包含在範圍內,但後者不包含在內。因此,運算式 2018-05-18 12:00:00 to 2018-05-18 14:00:00 會傳回時間介於「2018-05-18 12:00:00」到「2018-05-18 13:59:59」的資料。 | 
    
this {interval} to {interval} | 
        this year to second | 
        系統會使用每個間隔的開頭。舉例來說,運算式 this year to second 會傳回查詢執行當年年初到查詢執行當下年初的資料。this week to day 會傳回查詢執行當週的週一到查詢執行當天的資料。 | 
    
{time} for {n} {interval} | 
        2018-01-01 12:00:00 for 3 days | 
        |
today | 
        today | 
        |
yesterday | 
        yesterday | 
        |
tomorrow | 
        tomorrow | 
        |
{day of week} | 
        Monday | 
        使用「維度群組日期」欄位指定星期幾時,系統會傳回符合指定星期幾的最近日期。舉例來說,運算式 Dimension Group Date matches (advanced) Monday 會傳回最近的星期一。您也可以在這個內容中使用 {day of week},搭配 before 和 after 關鍵字。舉例來說,運算式 Dimension Group Date matches (advanced) after Monday 會傳回最近的星期一,以及最近的星期一之後的所有內容。運算式 Dimension Group Date matches (advanced) before Monday 會傳回最近一個週一之前的每一天,但不會傳回最近一個週一。使用「維度群組星期幾」欄位指定星期幾時,系統會傳回符合指定星期幾的所有日期。因此運算式 Dimension Group Day of Week matches (advanced) Monday 會傳回每週一。 | 
    
next {week, month, quarter, fiscal quarter, year, fiscal year} | 
        next week | 
        next 關鍵字很特別,只能使用先前列出的間隔,其他間隔則不適用。 | 
    
{n} {interval} from now | 
        3 days from now | 
        |
{n} {interval} from now for {n} {interval} | 
        3 days from now for 2 weeks | 
        
日期篩選器也可以合併使用:
- 如要使用 OR 邏輯:在同一個篩選器中輸入多項條件,並以半形逗號分隔。舉例來說,
today, 7 days ago代表「今天或 7 天前」。 - 如要使用 AND 邏輯:在多個日期或時間篩選器中,逐一輸入條件。舉例來說,您可以將 
after 2014-01-01放入「建立日期」篩選器,然後將before 2 days ago放入「建立時間」篩選器。這表示「2014 年 1 月 1 日之後,且在 2 天前」。 
絕對日期
絕對日期篩選器會使用特定日期值產生查詢結果。在建立特定日期範圍的查詢時,這些函式非常實用。
| 範例 | 說明 | 
|---|---|
2018/05/29 | 
        2018 年 5 月 29 日 | 
2018/05/10 for 3 days | 
        2018 年 5 月 10 日 00:00:00 至 2018 年 5 月 12 日 23:59:59 | 
after 2018/05/10 | 
        2018/05/10 00:00:00 之後 | 
before 2018/05/10 | 
        2018/05/10 00:00:00 之前 | 
2018/05 | 
        2018 年 5 月整月 | 
2018/05 for 2 months | 
        2018 年 5 月和 2018 年 6 月整月 | 
2018/05/10 05:00 for 5 hours | 
        2018/05/10 05:00:00 至 2018/05/10 09:59:59 | 
2018/05/10 for 5 months | 
        2018 年 5 月 10 日 00:00:00 至 2018 年 10 月 9 日 23:59:59 | 
2018 | 
        2018 年全年 (2018/01/01 00:00:00 至 2018/12/31 23:59:59) | 
FY2018 | 
        2018 年開始的整個會計年度 (如果 Looker 開發人員指定會計年度從 4 月開始,則為 2018 年 4 月 1 日 00:00 至 2019 年 3 月 31 日 23:59) | 
FY2018-Q1 | 
        2018 年開始的會計年度第一季 (如果 Looker 開發人員指定會計年度從 4 月開始,則為 2018/04/01 00:00:00 至 2018/06/30 23:59:59) | 
相對日期
使用相對日期篩選器,即可建立查詢,並使用相對於目前日期的滾動日期值。建立查詢時,如果希望每次執行查詢時都更新查詢,這些參數就非常實用。
在下列所有範例中,假設今天是 2018 年 5 月 18 日星期五 18:30:02。在 Looker 中,除非使用 week_start_day 變更設定,否則每週都是從星期一開始。
秒
| 範例 | 說明 | 
|---|---|
1 second | 
        目前的秒數 (2018/05/18 18:30:02) | 
60 seconds | 
        60 秒前,持續 60 秒 (2018/05/18 18:29:02 至 2018/05/18 18:30:01) | 
60 seconds ago for 1 second | 
        60 秒前,持續 1 秒 (2018/05/18 18:29:02) | 
分鐘
| 範例 | 說明 | 
|---|---|
1 minute | 
        目前分鐘 (2018/05/18 18:30:00 至 18:30:59) | 
60 minutes | 
        60 分鐘前,持續 60 分鐘 (2018/05/18 17:31:00 至 2018/05/18 18:30:59) | 
60 minutes ago for 1 minute | 
        60 分鐘前,持續 1 分鐘 (2018/05/18 17:30:00 至 2018/05/18 17:30:59) | 
小時
| 範例 | 說明 | 
|---|---|
1 hour | 
        目前的小時 (2018 年 5 月 18 日 18:00 至 2018 年 5 月 18 日 18:59) | 
24 hours | 
        24 小時前同一時段的 24 小時 (2018 年 5 月 17 日 19:00 至 2018 年 5 月 18 日 18:59) | 
24 hours ago for 1 hour | 
        與 24 小時前同一時段的 1 小時 (2018 年 5 月 17 日 18:00 至 2018 年 5 月 17 日 18:59) | 
天
| 範例 | 說明 | 
|---|---|
today | 
        當天 (2018/05/18 00:00 至 2018/05/18 23:59) | 
2 days | 
        昨天和今天 (2018/05/17 00:00 至 2018/05/18 23:59) | 
1 day ago | 
        昨天 (2018/05/17 00:00 至 2018/05/17 23:59) | 
7 days ago for 7 days | 
        過去完整 7 天 (2018/05/11 00:00 至 2018/05/17 23:59) | 
today for 7 days | 
        從午夜開始的當天,到未來 7 天 (2018/05/18 00:00 至 2018/05/24 23:59) | 
last 3 days | 
        2 天前到今天結束 (2018/05/16 00:00 到 2018/05/18 23:59) | 
7 days from now | 
        未來 7 天 (2018/05/18 00:00 至 2018/05/25 23:59) | 
週
| 範例 | 說明 | 
|---|---|
1 week | 
        當週起算 (2018/05/14 00:00 至 2018/05/20 23:59) | 
this week | 
        當週起算 (2018/05/14 00:00 至 2018/05/20 23:59) | 
before this week | 
        本週結束前 (2018 年 5 月 14 日 00:00 前) | 
after this week | 
        本週開始後 (2018 年 5 月 14 日 00:00 後) | 
next week | 
        接下來 1 週的星期一 (2018/05/21 00:00 至 2018/05/27 23:59) | 
2 weeks | 
        從上週一開始 (2018/05/07 00:00 至 2018/05/20 23:59) | 
last week | 
        「1 週前」的同義詞 | 
1 week ago | 
        從上週一開始,往後 1 週 (2018/05/07 00:00 至 2018/05/13 23:59) | 
月
| 範例 | 說明 | 
|---|---|
1 month | 
        當月 (2018/05/01 00:00 至 2018/05/31 23:59) | 
this month | 
        「0 個月前」的同義詞 (2018 年 5 月 1 日 00:00 至 2018 年 5 月 31 日 23:59) | 
2 months | 
        過去兩個月 (2018 年 4 月 1 日 00:00 至 2018 年 5 月 31 日 23:59) | 
last month | 
        2018 年 4 月的所有資料 | 
2 months ago | 
        2018 年 3 月的所有資料 | 
before 2 months ago | 
        2018 年 3 月 1 日前的所有時間 | 
next month | 
        2018 年 6 月 | 
2 months from now | 
        2018 年 7 月的所有資料 | 
6 months from now for 3 months | 
        2018 年 11 月至 2019 年 1 月 | 
季
| 範例 | 說明 | 
|---|---|
1 quarter | 
        當季 (2018 年 4 月 1 日 00:00 至 2018 年 6 月 30 日 23:59) | 
this quarter | 
        「0 季前」的同義詞 (2018 年 4 月 1 日 00:00 至 2018 年 6 月 30 日 23:59) | 
2 quarters | 
        過去兩季 (2018 年 1 月 1 日 00:00 至 2018 年 6 月 30 日 23:59) | 
last quarter | 
        第 1 季 (2018/01/01 00:00 至 2018/03/31 23:59) | 
2 quarters ago | 
        去年第 4 季 (2017 年 10 月 1 日 00:00 至 2017 年 12 月 31 日 23:59) | 
before 2 quarters ago | 
        去年第 4 季之前的所有時間 | 
next quarter | 
        下一個季度 (2018 年 7 月 1 日 00:00 至 2018 年 9 月 30 日 23:59) | 
2018-07-01 for 1 quarter | 
        第 3 季 (2018 年 7 月 1 日 00:00 至 2018 年 9 月 30 日 23:59) | 
2018-Q4 | 
        第 4 季 (2018 年 10 月 1 日 00:00 至 2018 年 12 月 31 日 23:59) | 
年
| 範例 | 說明 | 
|---|---|
1 year | 
        當年度 (2018 年 1 月 1 日 00:00 至 2018 年 12 月 31 日 23:59) | 
this year | 
        當年度 (2018 年 1 月 1 日 00:00 至 2018 年 12 月 31 日 23:59) | 
next year | 
        整年 (2019/01/01 00:00 至 2019/12/31 23:59) | 
2 years | 
        過去兩年 (2017 年 1 月 1 日 00:00 至 2018 年 12 月 31 日 23:59) | 
last year | 
        2017 年全年 | 
2 years ago | 
        2016 年全年 | 
before 2 years ago | 
        2016 年 1 月 1 日前的所有時間 (不含 2016 年 1 月 1 日至 2016 年 5 月 18 日之間的任何日期) | 
布林值
在 Looker 中依 true 或 false 類型的值進行篩選時,您必須知道要互動的 true 或 false 值類型。
| 範例 | 說明 | 
|---|---|
yes或Yes | 
        欄位評估結果為 true
        Looker 開發人員:type: yesno 維度使用小寫,filters 參數 (例如用於指標或用於 always_filter) 使用大寫 | 
    
no或No | 
        欄位評估結果為 false
        Looker 開發人員:type: yesno 維度使用小寫,filters 參數 (例如用於指標或用於 always_filter) 使用大寫 | 
    
TRUE | 
        欄位包含 true (適用於包含布林資料庫值的欄位) | 
FALSE | 
        欄位含有 false (適用於含有布林資料庫值的欄位) | 
數字
數字篩選器支援自然語言運算式 (例如 3 to 10) 和關係運算子 (例如 >20)。Looker 支援 OR 運算子,可表示多個篩選範圍 (例如 3 to 10 OR 30 to 100)。AND 運算子可用於表示含有關係運算子的數字範圍 (例如 >=3 AND <=10),以指定範圍。數字篩選器也可以使用代數區間表示法,篩選數字欄位。
| 範例 | 說明 | 
|---|---|
5 | 
        剛好是 5 | 
NOT 5
        <>5
        !=5 | 
        為任何值,但不能是 5 | 
1, 3, 5, 7 | 
        是 1、3、5 或 7 其中一個值 | 
NOT 66, 99, 4 | 
        不是 66、99 或 4 | 
 >1 AND <100, NOT 2 | 
        大於 1 且小於 100,但不是 2 | 
NOT >1, 2, <100 | 
        小於或等於 1,不是 2,且大於或等於 100 (Looker 會將此視為不可能的條件,並改為寫入 SQL `IS NULL`) | 
5, NOT 6, NOT 7 | 
        是 5,不是 6 或 7 | 
5.5 to 10
        >=5.5 AND <=10 | 
        大於或等於 5.5,但小於或等於 10 | 
NOT 3 to 80.44
        <3 OR >80.44 | 
        小於 3 或大於 80.44 | 
1 to
        >=1 | 
        大於或等於 1 | 
to 10
        <=10 | 
        為 10 以下 | 
>10 AND <=20 OR 90 | 
        大於 10 且小於或等於 20,或正好是 90 | 
>=50 AND <=100 OR >=500 AND <=1000 | 
        介於 50 到 100 (含首尾),或介於 500 到 1000 (含首尾) | 
NULL | 
        沒有資料 (當做 LookML 篩選器運算式的一部分使用時,請將 NULL 放在引號中,如 filters 說明文件頁面所示) | 
    
NOT NULL | 
        含有部分資料 (當做 LookML 篩選器運算式的一部分使用時,請將 NOT NULL 放在引號中,如 filters 說明文件頁面所示) | 
    
(1, 7) | 
        解讀為 1 < x < 7,不含端點。雖然這個符號類似有序對,但在這個脈絡中,是指您正在處理的間隔。 | 
[5, 90] | 
        解讀為 5 <= x <= 90,其中包含端點 | 
(12, 20] | 
        解讀為 12 < x <= 20,其中不含 12,但含 20 | 
[12, 20) | 
        解讀為 12 <= x < 20,其中包含 12,但不包含 20 | 
(500, inf) | 
        解讀為 x > 500,其中不含 500,且無限大一律表示為「開放」(不含)。inf 可以省略,(500, inf) 則可以寫成 (500,) | 
    
(-inf, 10] | 
        解讀為 x <= 10,其中包含 10,且無限大一律表示為「開放」(不包含)。inf 可以省略,(-inf, 10] 可以寫成 (,10] | 
    
[0,9],[20,29] | 
        0 到 9 (含) 或 20 到 29 (含) 之間的數字 | 
[0,10],20 | 
        0 到 10 (含首尾) 或 20 | 
NOT (3,12) | 
        解讀為 x < 3 和 x > 12 | 
位置
位置篩選運算式是以經緯度為準,但可接受部分自然語言,定義要限制搜尋範圍的方塊和圓圈。
| 範例 | 說明 | 
|---|---|
36.97, -122.03 | 
        位置的經緯度為 36.97 和 122.03 | 
40 miles from 36.97, -122.03 | 
        位置在緯度 36.97、經度 -122.03 的 40 英里範圍內 | 
inside box from 72.33, -173.14 to 14.39, -61.70 | 
        位置位於方塊內,西北角為緯度 72.33、經度 -173.14,東南角為緯度 14.39、經度 -61.70 | 
NOT NULL (works the same as -NULL) | 
        地點的緯度和經度皆非空值 (當做為 LookML 篩選器運算式的一部分時,請將 NOT NULL 放在引號中,如 filters 說明文件頁面所示) | 
    
-NULL (works the same as NOT NULL) | 
        地點的緯度和經度皆非空值 (當做為 LookML 篩選器運算式的一部分時,請將 -NULL 放在引號中,如 filters 說明文件頁面所示) | 
    
NULL | 
        地點的緯度或經度為空值,或兩者皆為空值 (當做為 LookML 篩選器運算式的一部分使用時,請將 NULL 放在引號中,如 filters 說明文件頁面所示) | 
    
支援的測量單位
如要在特定地點周圍的區域進行篩選,可以使用下列單位:
- 公尺
 - 英尺
 - 公里
 - 英里
 
系統不支援單一計量單位。舉例來說,如要篩選一英里半徑內的結果,應輸入 within 1 miles of 36.97, -122.03。
使用者屬性值
如要在篩選運算式中使用使用者屬性的值,請使用資料庫方言所需的語法,透過 _user_attributes Liquid 變數參照使用者屬性:
{{ _user_attributes['name_of_attribute'] }}
舉例來說,假設您需要將 sf_ 前置字元套用至 salesforce_username 使用者屬性的值,因為資料庫就是以這種方式儲存值。如要為使用者屬性值新增前置字元,請在相關欄位中新增「相符 (進階)」篩選器,並在篩選器運算式中使用 _user_attributes Liquid 變數,如下所示:
sf_{{_user_attributes['salesforce_username']}}
您可以使用相同模式,將使用者屬性插入 LookML 資訊主頁篩選器和資訊主頁元素篩選器。