Lookerフィルター式

フィルタ式は、Looker クエリをフィルタリングする高度な方法です。このページではフィルタ式の作成方法を紹介します。Looker の Explore セクションでは、フィルタを追加して [matchs (advanced)] オプションを選択するとフィルタ式を使用できます。また、フィルタ式は、LookML で filter パラメータを指定できる要素に対しても使用されます。

LookML でフィルタ式を使用する場合は、式を引用符で囲む必要があります(適切な使用方法については、filters のドキュメント ページをご覧ください)。これは、NULL のような論理値にとって特に重要です。

LookerのExploreセクションでフィルタ式を使用するときは、式を引用符で囲む必要はありません。

フィルタ式は、アクセス許可ではサポートされていません。 詳しくは、access_grant のドキュメント ページをご覧ください。

String

文字列フィルタでの一致は、モデルファイルの case_sensitive 設定と、言語で大文字と小文字の区別がサポートされているかどうかによって異なります。たとえば、モデルで case_sensitive が有効になっている場合、式 FOO% は「food」という単語と一致しませんcase_sensitive が有効になっていない場合や、言語で大文字と小文字の区別がサポートされていない場合、式 FOO% は「food」という単語と一致します。

説明
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(値なし)である
NULL 値は null である(LookML フィルタ式の一部として使用される場合、filters のドキュメント ページで示されているように NULL を引用符で囲みます)
-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 文字列が空ではない(1文字以上である)
-NULL 列の値が NULL ではない(LookML フィルタ式の一部として使用する場合は、filters のドキュメント ページで示されているように -NULL を引用符で囲みます)
FOO%,BAR 「FOO」で始まっている、または「BAR」と完全に一致する。「food」に一致し、「bar」には一致しているが「barfood」には一致しない
FOO%,-FOOD 先頭は「FOO」だが、「FOOD」ではない
_UF 任意の 1 文字の後に「UF」があり、「buffoon」に一致する

文字列フィルタに特殊文字を含める

文字列フィルタに特殊文字を含めるには、次のルールに注意します。

  • "%_ を含めるには、エスケープ文字 ^ を前に付けます。例: ^"^%^_
  • 先頭に - を含めるには、^- としてエスケープします。これは、- が先頭文字である場合にのみ必要です。- が文字列の中にある場合は、エスケープする必要はありません。
  • ^ を含めるには、^^ としてエスケープします。
  • 通常の UI 文字列フィルタにカンマを含めるには、カンマの前にバックスラッシュ文字(\)を付けます。例: Santa Cruz\, CA
  • フィルタの matchs(advanced)オプションにカンマを含めるには、カンマの前にエスケープ文字 ^ を付けます。例: Santa Cruz^, CA
  • LookML のフィルタ式にカンマを含めるには、カンマの前にエスケープ文字 ^ を付けます。例:
  field: filtered_count {
      type: count
      filters: [city: "Santa Cruz^, CA"]
    }

場合によっては、Lookerコンテンツにカスタムドリルを使用するときに、エスケープしたり、文字列Filterに特殊文字を含めたりすることもできます。 詳しくは、Link パラメータ ページの Looker コンテンツにリンクする際の考慮事項をご覧ください。

日付と時刻

Lookerの日付フィルタリングでは、SQLデータ関数の代わりに英語の語句を使用することができます。

日付と時刻フィルタの基本構造

次の例では、

  • {n} は整数です。
  • {interval} は、時間、日、週、月などの時間増分です。

    {interval} に部分的な期間が含まれるか、完全な期間のみが含まれるかは、使用する語句によって決まります。たとえば、式 3 days には、今日(部分的な 1 日)と直前の 2 日間が含まれます。式 3 days ago for 3 days には、直前の丸 3 日間が含まれ、今日(部分的な 1 日)は除外されます。詳細については、相対日付のセクションをご覧ください。

  • {time} では、YYYY-MM-DD HH:MM:SS または YYYY/MM/DD HH:MM:SS という書式の時間か、YYYY-MM-DD または YYYY/MM/DD という書式の日付を指定できます。YYYY-MM-DDの書式を使用する場合、月と日を必ず2桁で入力します。例:2016-01。 月または日を1桁にすると、日付ではなくオフセットと解釈されます。 例えば、2016-1は2016年マイナス1年、つまり2015年と解釈されます。

以下は、日付フィルタが取り得るすべての組み合わせです。

組み合わせ メモ
this {interval} this month this weekthis monththis 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 年 5 月 18 日 12:00:00」から「2018 年 5 月 18 日 13:59:59」までのデータを返します。
this {interval} to {interval} this year to second 各期間の開始時点が使用されます。 たとえば、式 this year to second は、クエリの実行年の初日からクエリ実行の 2 年目の最初までのデータを返します。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 は直近の月曜日を返します。

この場合、before キーワードと after キーワードで {day of week} を使用することもできます。たとえば、式 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 キーワードは、前述の間隔のうち 1 つを必要とし、他の間隔では動作しないという点で特異です。
{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 ロジックを取得するには: 複数の日付または時間フィルタに条件を 1 つずつ入力します。たとえば、[作成日] フィルタに 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日午前0時から2018年5月12日午後11時59分59秒まで
after 2018/05/10 2018/05/10 00:00:00以降
before 2018/05/10 2018年5月10日午前0時より前
2018/05 2018年5月中
2018/05 for 2 months 2018年5月および6月中
2018/05/10 05:00 for 5 hours 2018年5月10日午前5時から2018年5月10日午前9時59分59秒まで
2018/05/10 for 5 months 2018年5月10日午前0時から2018年10月9日午後11時59分59秒まで
2018 2018年中(2018年1月1日の午前0時から2018年12月31日の午後11時59分59秒まで)
FY2018 2018 年に始まる会計年度中(Looker デベロッパーが 4 月に会計年度を開始すると指定した場合、2018 年 4 月 1 日午前 0 時から 2019 年 3 月 31 日午後 11 時 59 分まで)
FY2018-Q1 2018 年に始まる会計年度の第一四半期(Looker デベロッパーが 4 月に会計年度を開始すると指定した場合、2018 年 4 月 1 日午前 0 時から 2018 年 6 月 30 日午後 11 時 59 分 59 秒まで)

相対日付

相対日付を使って、現在の日付に対して変化する日付の値でクエリを作成することができます。 実行するごとに更新されるクエリを作成する場合に役立ちます。

以下のすべての例について、今日が 2018 年 5 月 18 日金曜日の午後 6 時 30 分 2 秒であると仮定しています。Looker では、week_start_day で設定を変更しない限り、週は月曜日から始まります。

説明
1 second 現在の秒(2018年5月18日午後6時30分2秒)
60 seconds 60秒に対して60秒前(2018年5月18日午後6時29分2秒から2018年5月18日午後6時30分1秒まで)
60 seconds ago for 1 second 60秒前から1秒間(2018年5月18日午後6時29分2秒)

説明
1 minute 現在時刻(2018年5月18日午後6時30分から午後6時30分59秒まで)
60 minutes 60分前から60分間(2018年5月18日午後5時31分から2018年5時18分午後6時30分59秒まで)
60 minutes ago for 1 minute 60分前から1分間(2018年5月18日午後5時30分から2018年5時18分午後5時30分59秒まで)

Hours

説明
1 hour 現在時刻(2018年5月18日午後6時から2018年5月18日午後6時59分まで)
24 hours 24時間前の同じ時刻から24時間(2018年5月17日午後7時から2018年5月18日午後6時59分まで)
24 hours ago for 1 hour 24時間前の同じ時刻から1時間(2018年5月17日午後6時から2018年5月17日午後6時59分まで)

説明
today 今日(2018年5月18日午前0時から2018年5月18日午後11時59分まで)
2 days 昨日と今日(2018年5月17日午前0時から2018年5月18日午後11時59分まで)
1 day ago 昨日のみ(2018年5月17日午前0時から2018年5月17日午後11時59分まで)
7 days ago for 7 days 過去7日間(2018年5月11日午前0時から2018年5月17日午後11時59分まで)
today for 7 days 今日の深夜から7日間(2018年5月18日午前0時から2018年5月24日午後11時59分まで)
last 3 days 2日前から今日の終わりまで(2018年5月16日午前0時から2018年5月18日午後11時59分まで)
7 days from now 7日後(2018年5月25日午前0時から2018年5月25日午後11時59分まで)

説明
1 week 今週の始まりから終わりまで(2018年5月14日午前0時から2018年5月20日午後11時59分まで)
this week 今週の始まりから終わりまで(2018年5月14日午前0時から2018年5月20日午後11時59分まで)
before this week 今週が始まるまで(2018年5月14日午前0時より前)
after this week 今週が始まってから(2018年5月14日午前0時以降)
next week 次の月曜日から1週間(2018年5月21日午前0時から2018年5月27日午後11時59分まで)
2 weeks 1週間前の月曜日から2週間(2018年5月7日午前0時から2018年5月20日午後11時59分まで)
last week 「1 週間前」と同義
1 week ago 1週間前の月曜日から1週間(2018年5月7日午前0時から2018年5月13日午後11時59分まで)

説明
1 month 今月(2018年5月1日午前0時から2018年5月31日午後11時59分まで)
this month 「0 か月前」と同義(2018 年 5 月 1 日午前 0 時から 2018 年 5 月 31 日午後 11 時 59 分まで)
2 months 過去2カ月(2018年4月1日午前0時から2018年5月31日午後11時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日午前0時から2018年6月30日午後11時59分まで)
this quarter 「0 四半期前」と同義(2018 年 4 月 1 日午前 0 時から 2018 年 6 月 30 日午後 11 時 59 分まで)
2 quarters 過去2四半期(2018年1月1日午前0時から2018年6月30日午後11時59分まで)
last quarter 第1四半期全体(2018年1月1日午前0時から2018年3月31日午後11時59分まで)
2 quarters ago 昨年の第4四半期全体(2017年10月1日午前0時から2017年12月31日午後11時59分まで)
before 2 quarters ago 昨年の第4四半期より前
next quarter 次の四半期全体(2018年7月1日午前0時から2018年9月30日午後11時59分まで)
2018-07-01 for 1 quarter 第3四半期全体(2018年7月1日午前0時から2018年9月30日午後11時59分まで)
2018-Q4 第4四半期全体(2018年10月1日午前0時から2018年12月31日午後11時59分まで)

Looker デベロッパーが会計年度の使用を指定している場合は、これらの式に fiscal と入力して、暦四半期の代わりに会計年度を使用できます。たとえば、last fiscal quarter を使用できます。

説明
1 year 今年全体(2018年1月1日午前0時から2018年12月31日午後11時59分まで)
this year 今年全体(2018年1月1日午前0時から2018年12月31日午後11時59分まで)
next year 来年全体(2019年1月1日午前0時から2019年12月31日午後11時59分まで)
2 years 過去2年間(2017年1月1日午前0時から2018年12月31日午後11時59分まで)
last year 2017年全体
2 years ago 2016年全体
before 2 years ago 2016年1月1日より前(2016年1月1日から2016年5月18日までの日は含まれません)

Looker デベロッパーが会計年度の使用を指定している場合は、これらの式に fiscal を入力して、暦四半期の代わりに会計年度を使用できます。たとえば、last fiscal year を使用できます。

ブール値

Looker で真/偽タイプの値をフィルタリングするには、どのようなタイプの真/偽値を扱っているのかを知る必要があります。

説明
yes または Yes フィールドは真に評価されます

Looker デベロッパー: type: yesno ディメンションの場合は小文字を使用し、filters パラメータ(メジャーで使用されるまたは always_filter で使用されるパラメータなど)は、大文字を使用します。
no または No フィールドは偽に評価されます

Looker デベロッパー: type: yesno ディメンションの場合は小文字を使用し、filters パラメータ(メジャーで使用されるまたは always_filter で使用されるパラメータなど)は、大文字を使用します。
TRUE 真値を含むフィールド(Booleanデータベース値を含むフィールド)
FALSE 偽値を含むフィールド(Booleanデータベース値を含むフィールド)

数値

数値のフィルタでは、自然言語式(3 to 10 など)と関係演算子(>20 など)の両方がサポートされます。Looker では OR 演算子がサポートされており、複数のフィルタ範囲(3 to 10 OR 30 to 100 など)を表現できます。AND 演算子を使用して、関係演算子(>=3 AND <=10 など)で数値範囲を表現し、範囲を指定できます。数値のフィルタでは、代数区間表記を使用して数値フィールドをフィルタリングすることもできます。

NOT を使用した数値フィルタ式の構文は、直感的ではないことがあります。最初のフィルタ条件に NOT が含まれ、他のフィルタ条件に NOT が含まれていない場合、すべてのフィルタ条件が否定されます。詳しくは以下の例をご確認ください。

説明
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 フィルタ式の一部として使用する場合は、filters のドキュメント ページで示されているように NULL を引用符で囲みます)
NOT NULL データが含まれている(LookML フィルタ式の一部として使用する場合は、filters のドキュメント ページで示されているように NOT NULL を引用符で囲みます)
(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) 非 null の緯度と非 null の経度の両方を持つ場所(LookML フィルタ式の一部として使用する場合は、filters ドキュメント ページで示されているように NOT NULL を引用符で囲みます)
-NULL (works the same as NOT NULL) 非 null の緯度と非 null の経度の両方を持つ場所(LookML フィルタ式の一部として使用される場合は、filters ドキュメント ページで示されているように -NULL を引用符で囲みます)
NULL Null 値の緯度、または Null 値の経度のいずれかまたは両方を持つ場所(LookML フィルタ式の一部として使用する場合、filtersドキュメント ページで示されているように NULL を引用符で囲みます)

使用できる測定単位

特定の場所を中心としたエリアでフィルタリングする場合、次の単位を使用できます。

  • メートル
  • フィート
  • キロメートル
  • マイル

測定単位の単数形はサポートされていません。 たとえば、半径 1 マイルをフィルタリングする場合、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 のダッシュボード フィルタダッシュボードの要素フィルタにユーザー属性を挿入できます。