篩選運算式是篩選 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 to 2018-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 資訊主頁篩選器和資訊主頁元素篩選器。