篩選運算式是篩選 Looker 查詢的進階方式。您可以使用下列方式使用篩選器運算式:
本頁面列出 Looker Explore 中使用「相符 (進階)」條件選項的篩選器可輸入的值。視篩選器類型和您輸入的篩選器值而定,Looker 可能會將「相符 (進階)」選項轉換為更適當的篩選器條件。
篩選運算式相關注意事項
使用 Looker 篩選器運算式時,請注意下列事項:
- 當 Looker 連接器參照 Looker Explore 做為資料來源,且篩選器採用「相符 (進階)」條件時,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」,與「小丑」和「速食」相符 |
FOO% |
開頭為「FOO」,符合「foolish」和「food」,但不包括「buffoon」或「fast food」 |
%FOO |
結尾為「FOO」,比對「buffoo」和「fast foo」,但不包括「buffoon」或「fast food」 |
F%OD |
開頭為「F」且結尾為「OD」,符合「速食」 |
EMPTY |
字串為空白 (零個字元) 或為空值 (沒有值) |
NULL |
值為空值 (如果用於 LookML 篩選器運算式,請將 NULL 放在引號內,如 filters 說明文件頁面所示) |
-FOO |
不等於「FOO」(等於「FOO」以外的任何值),與「pizza」、「trash」、「fun」相符,但不包括「foo」 |
-FOO,-BAR |
不等於「FOO」或「BAR」,但會與「FOO」和「BAR」以外的任何值相符 |
-%FOO% |
不含「FOO」、不符合「小丑」或「速食」 |
-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 減去 1 年,也就是 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-01-01 之前所有日期的資料,但不會傳回 2018-01-01 之後的資料。 |
after {time} |
after 2018-10-05 |
after 包含您指定的時間。因此,運算式 after 2018-10-05 會傳回 2018-10-05 和 2018-10-05 之後的所有日期的資料。 |
{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
放入「Created Date」篩選器,然後將before 2 days ago
放入「Created Time」篩選器。這表示「2 天前之前和之後的 2014 年 1 月 1 日」。
絕對日期
絕對日期篩選器會使用特定日期值產生查詢結果。這類參數可用於建立特定日期範圍的查詢。
範例 | 說明 |
---|---|
2018/05/29 |
2018 年 5 月 29 日的某個時間 |
2018/05/10 for 3 days |
從 2018/05/10 00:00:00 到 2018/05/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/05 整個月內 |
2018/05 for 2 months |
在 2018/05 和 2018/06 整個月內 |
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/05/10 00:00:00 到 2018/10/09 23:59:59 |
2018 |
整個 2018 年 (2018/01/01 00:00:00 至 2018/12/31 23:59:59) |
FY2018 |
從 2018 年開始的整個會計年度 (如果 Looker 開發人員指定會計年度從 4 月開始,則是從 2018/04/01 00:00 到 2019/03/31 23:59) |
FY2018-Q1 |
自 2018 年起的財務年度第一季 (如果 Looker 開發人員指定財務年度的開始日期為 4 月,則這段時間為 2018/04/01 00:00:00 至 2018/06/30 23:59:59) |
相對日期
相對日期篩選器可讓您建立查詢,其中的日期值會相對於目前日期。這類查詢會在每次執行時更新,因此非常實用。
在以下所有範例中,假設今天是 2018/05/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/05/18 18:00 至 2018/05/18 18:59) |
24 hours |
24 小時前同一天的同一個小時,持續 24 小時 (2018/05/17 19:00 至 2018/05/18 18:59) |
24 hours ago for 1 hour |
24 小時前的同一小時,持續 1 小時 (2018/05/17 18:00 到 2018/05/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/05/14 00:00 之前) |
after this week |
本週起 (2018/05/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/05/01 00:00 至 2018/05/31 23:59) |
2 months |
過去兩個月 (2018/04/01 00:00 至 2018/05/31 23:59) |
last month |
2018/04 的所有資料 |
2 months ago |
2018/03 整個月 |
before 2 months ago |
2018/03/01 之前的所有時間 |
next month |
2018/06 的所有資料 |
2 months from now |
2018/07 的所有資料 |
6 months from now for 3 months |
2018/11 到 2019/01 |
季
範例 | 說明 |
---|---|
1 quarter |
目前季度 (2018/04/01 00:00 至 2018/06/30 23:59) |
this quarter |
「0 季前」的同義詞 (2018/04/01 00:00 至 2018/06/30 23:59) |
2 quarters |
過去兩季 (2018/01/01 00:00 至 2018/06/30 23:59) |
last quarter |
第一季 (2018/01/01 00:00 至 2018/03/31 23:59) |
2 quarters ago |
去年第 4 季 (2017 年 1 月 1 日 00:00 至 2017 年 12 月 31 日 23:59) |
before 2 quarters ago |
去年第四季之前的所有時間 |
next quarter |
整個下一季 (2018/07/01 00:00 至 2018/09/30 23:59) |
2018-07-01 for 1 quarter |
整個第 3 季 (2018/07/01 00:00 至 2018/09/30 23:59) |
2018-Q4 |
整個第 4 季 (2018/10/01 00:00 至 2018/12/31 23:59) |
年
範例 | 說明 |
---|---|
1 year |
今年全年 (2018/01/01 00:00 至 2018/12/31 23:59) |
this year |
今年全年 (2018/01/01 00:00 至 2018/12/31 23:59) |
next year |
整個後續年份 (2019/01/01 00:00 至 2019/12/31 23:59) |
2 years |
過去兩年 (2017/01/01 00:00 至 2018/12/31 23:59) |
last year |
2017 年全年 |
2 years ago |
2016 年全年 |
before 2 years ago |
2016/01/01 之前的所有時間 (不包括 2016/01/01 至 2016/05/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 不包含在內,而無窮大數一律會表示為「open」(不包含在內)。inf 可以省略,(500, inf) 則可寫成 (500,) |
(-inf, 10] |
會解讀為 x <= 10,其中包含 10,而無窮大數一律會表示為「open」(不包含)。inf 可以省略,(-inf, 10] 可以寫成 (,10] |
[0,9],[20,29] |
0 到 9 之間的數字 (含 0 和 9),或 20 到 29 之間的數字 (含 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'] }}
舉例來說,假設您需要在 salesforce_username
使用者屬性的值上套用 sf_
前置字串,因為值會以這種方式儲存在資料庫中。如要在使用者屬性值中加入前置字串,您可以在相關欄位上新增相符 (進階) 篩選器,並在篩選器運算式中使用 _user_attributes
Liquid 變數,如下所示:
sf_{{_user_attributes['salesforce_username']}}
您可以使用相同的模式,將使用者屬性插入 LookML 資訊主頁篩選器和資訊主頁元素篩選器。