Lookerフィルター式

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

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

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

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

String

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

説明
FOO 「FOO」と等しい
FOO,BAR 「FOO」または「BAR」と等しい
%FOO% 「FOO」を含む、バックボーンに一致、ファストフード
FOO% &Fot
%FOO 「FOO」(終了)で終わる場合、「buffoo」と「Fast foo」とも一致しますが、「buffoon」または「fastfood」とは一致しません。
F%OD 「F」で始まり、「OD」で終わります。「ファストフード」と一致します。
EMPTY 文字列が空(文字がゼロ)であるか、Null(値なし)である
NULL value は null です(LookML フィルタ式の一部として使用する場合は、filters のドキュメント ページに示すように、NULL を引用符で囲みます)。
-FOO =(FOO など)と等しくない(「FOO」以外)は、"quozz;pizza"、"trash"、"fun" などと一致します。"foo"
-FOO,-BAR 「FOO」または「BAR」のどちらとも等しくない。また、「FOO」および「BAR」以外の値と一致
-%FOO% 「FOO」を含まない、または「バッファー」と一致しない、または「ファストフード」とは一致しない
-FOO% 先頭が「FOO」ではなく、「foolish」または「food」に一致しない
-%FOO 最後が「FOO」で終わらない、Buffoo または Fast foo に一致しない
-EMPTY 文字列が空ではない(1文字以上である)
-NULL 列の値が null ではありません(LookML フィルタ式の一部として使用する場合は、filters のドキュメント ページに示すように、-NULL を引用符で囲みます)。
FOO%,BAR 「FOO」で始まります。または、「BAR」と一致します。「食品」に一致します。
FOO%,-FOOD 「FOO」で始まるが、「FOOD」ではない
_UF 任意の 1 文字の後に「UF」の後に「buffoon」に一致

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

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

  • "%、または _ を含めるには、エスケープ文字 ^ を接頭辞として使用します。例: ^"^%^_
  • 先頭の - を含めるには、^- としてエスケープします。これは、- が先頭文字の場合にのみ必要です。- が文字列内にある場合は、エスケープする必要はありません。
  • ^ を含めるには、^^ としてエスケープします。
  • 通常の UI 文字列フィルタにカンマを含めるには、カンマにバックスラッシュ文字(\`. For example:Santa Cruz\, CA)を付けます。
  • フィルタにカンマ(一致(詳細設定))を含めるには、カンマの前にエスケープ文字(^)を付けます。例: Santa Cruz^, CA
  • LookML のフィルタ式にカンマを含めるには、エスケープ文字 ^ を付加します。例:
      field: filtered_count {
      type: count
      filters: [city: "Santa Cruz^, CA"]
    }

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

日付と時刻

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

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

次の例では、

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

    使用する語句によって、{interval} に部分的な期間が含まれるか、完全な期間のみが含まれるかが決まります。たとえば、式 3 days には、現在の 1 日とその前の 2 日間が含まれます。式 3 days ago for 3 days には、過去 3 日間が含まれ、現在の日付の一部は含まれません。詳しくは、相対期間のセクションをご覧ください。

  • {time} では、YYYY-MM-DD HH:MM:SS または YYYY/MM/DD HH:MM:SS 形式の日付、または YYYY-MM-DD または YYYY/MM/DD 形式の日付を指定できます。YYYY-MM-DD フォームを使用する場合は、月と日の両方の数字を含めてください(例: 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-01-01 より前のすべての日付のデータを返しますが、2018-01-01 のデータは返しません。
after {time} after 2018-10-05 after には、指定した時間が含まれます。したがって、式 after 2018-10-05 は 2018 年 10 月 5 日のデータと 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 は、クエリの実行年の初めからクエリ実行の 2 分の 1 までのデータを返します。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] フィールドで曜日を指定すると、指定された曜日に一致する最新の日付が返されます。たとえば、式 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 キーワードは、上記のいずれかの間隔が必要で、他の間隔では機能しないという点で一意です。
{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/04/01 00:00 ~ 2019/03/31 23:59 となります)
FY2018-Q1 2018 年度最初の会計四半期

相対日付

相対日付フィルタを使用すると、現在の日付を基準にしたローリング日付値を使用してクエリを作成できます。実行するごとに更新されるクエリを作成する場合に役立ちます。

以下の例では、今日が 2018/05/18 18:30:02(金曜日)であると仮定します。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/05/18 17:31:00 から 2018/05/18 18: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/05/17 19:00 ~ 2018/05/18 18: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/05/01 00:00 ~ 2018/05/31 23: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/04/01 00:00 ~ 2018/06/30 23: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 で true または false タイプの値をフィルタリングするには、やり取りする true または false の値のタイプを把握する必要があります。

説明
yes または Yes フィールドが true と評価される

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

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 を使用した数値フィルタ式の構文は直感的でない可能性があります。使用例を以下に示します。

説明
5 5
NOT 5
<>5
!=5
5を除くすべての値
1, 3, 5, 7 1、3、5、7のいずれかの値
NOT 66, 99, 4 66、99、4以外の値
1, NOT 2 1でも2でもない
1, NOT 2, >100 1でも2でもなく、100以下
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 は含まれず、無限大は常に "open" となります(含まれない)。inf は省略し、上記を (500,) のように記述できます。
(-inf, 10] x <= 10 として解釈されます。10 が含まれ、無限大は常に "open" として表されます(含まれない)。inf は省略し、上記を (,10] のように記述できます。
[0,9],[20,29] 0と9の間(両端を含む)、または20から29まで(両端を含む)の数値
[0,10],20 0から10まで(両端を含む)、または20
NOT (3,12) x < 3 および x > 12 と解釈されます
NOT 10,[1,5) 10を除くすべての数値、および1以上5未満の数値

ロケーション

場所のフィルタ式は、経度と緯度に基づいていますが、一定の自然言語を受け入れ、検索を制限する四角形や円を定義することができます。

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