Looker 篩選運算式

篩選運算式是篩選 Looker 查詢的進階方式。您可以使用篩選器運算式執行下列操作:

  • 在 Looker 的「探索」部分,您可以新增篩選器、選擇「符合 (進階)」選項,然後輸入這個頁面列出的其中一個運算式做為篩選器類型的篩選器值。
  • 在採用 filter 參數的 LookML 元素中。

這個頁面列出您可以在 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 weekthis monththis quarterthis 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},搭配 beforeafter 關鍵字。舉例來說,運算式 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 值類型。

範例 說明
yesYes 欄位評估結果為 true

Looker 開發人員:type: yesno 維度使用小寫,filters 參數 (例如用於指標用於 always_filter) 使用大寫
noNo 欄位評估結果為 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 < 3x > 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 資訊主頁篩選器資訊主頁元素篩選器