Looker 篩選運算式

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

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

本頁面列出 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 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-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} 搭配 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 放入「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 值互動。

範例 說明
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 不包含在內,而無窮大數一律會表示為「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 < 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'] }}

舉例來說,假設您需要在 salesforce_username 使用者屬性的值上套用 sf_ 前置字串,因為值會以這種方式儲存在資料庫中。如要在使用者屬性值中加入前置字串,您可以在相關欄位上新增相符 (進階) 篩選器,並在篩選器運算式中使用 _user_attributes Liquid 變數,如下所示:


sf_{{_user_attributes['salesforce_username']}}

您可以使用相同的模式,將使用者屬性插入 LookML 資訊主頁篩選器資訊主頁元素篩選器