home ユーザーガイド 基本情報 ヘルプセンター ドキュメンテーション コミュニティ トレーニング 認証
menu
close
settings
Looker keyboard_arrow_down
language keyboard_arrow_down
English
Français
Deutsch
日本語
search
print
Looker documentation will be moving to cloud.google.com on August 22, 2022!
All the information you rely on will be migrated and all docs.looker.com URLs will be redirected to the appropriate page.
Liquid変数の参照

Liquidは、より動的なコンテンツを作成するためにLookerで使用するテンプレート言語です。例えば、クエリの結果に基づいて外部ツールへのURLを構築したり、ユーザーの選択に基づいてクエリ対象のデータベーステーブルを変更したりすることができます。

Liquidステートメントは、変数、フィルター、タグを使用して作成します。変数には、使用する情報を格納します。Lookerで使用可能な変数については、このページで説明します。これらの値をさらに変更するには、フィルターやタグを使用します。これらについては、こちらのLiquidガイドで説明されています。

LookMLでは、次に示す複数の場所でLiquidを使用できます。

Liquid変数の使用

Liquid変数の基本的な使用方法は簡単です。使用する変数が決まったら(次のリストを参照)、その変数を有効なLookMLパラメーターに挿入するだけです。特定のLiquid変数は、次の定義に示すように、特定のLookMLパラメーターでのみ使用できます。

Liquidの2つの使用方法

Liquid変数は次の2つの方法で使用できます。

  1. 出力構文:この方法は、テキストを挿入するものであり、LookerでLiquidを使用する最も一般的な方法と考えられます。この方法では、Liquid変数を2つの中括弧で囲みます。例えば、{{ value }}のようにします。
  2. タグ構文:この方法は、通常、テキストを挿入するという形ではなく、代わりに論理比較やその他のLiquid演算に使用します。この方法では、Liquid変数を1つの中括弧と1つのパーセント符号で囲みます。例えば、{% if value > 10000 %}のようにします。

基本的な例

HTMLでの使用方法を示す次の例では、<img>タグに商品IDを挿入することで、商品画像を生成しています。

dimension: product_image { sql: ${product_id} ;; html: <img src="http://www.brettcase.com/product_images/{{ value }}.jpg" /> ;; }

URLでの使用方法を示す次の例では、URLにアーティスト名を挿入することで、そのアーティストに関するGoogle検索を生成しています。

dimension: artist_name { sql: ${TABLE}.artist_name ;; link: { label: "Google" url: "http://www.google.com/search?q={{ value }}" icon_url: "http://google.com/favicon.ico" } }

SQLでの使用方法を示す次の例では、ユーザーが選択するフィールドに基づいてデータベーステーブルを決定しています。この構文では、クエリに含まれているフィールドのチェックとそれに対する応答の実行にif、else if(elsifと表記)、else構造を使用しています。

sql_table_name: {% if event.created_date._in_query %} event_by_day {% elsif event.created_week._in_query %} event_by_week {% else %} event {% endif %} ;;

ラベルでの使用方法を示す次の例では、emailディメンションのlabel値がLookMLのモデル名に応じて変わるようにしています。これにより、フィールドピッカーやクエリ結果において、emailディメンションを含むフィールドの名前が動的に変わるようになります。

dimension: email { label: "{% if _model._name == 'thelook' %} Looker Registered Email Address {% else %} External Email Address {% endif %}" type: string sql: ${TABLE}.email ;; }

その他の使用例については、興味のある個別のLookMLパラメーターページを参照してください。

他のフィールドからの変数へのアクセス

Liquid変数は、通常、それらを使用するフィールドに基づきます。ただし、その値には、必要に応じて他のフィールドからもアクセスできます。

クエリ結果内の同一行の他のフィールドにアクセスするには、{{ view_name.field_name._liquid-variable-name }}という書式を使用します。_liquid-variable-nameをLookerのLiquid変数のいずれかに置き換えてください。次のように、変数名の先頭には必ずアンダースコアを付けてください(標準でアンダースコアが付いていない場合)。

次の例では、この方法を使用してウェブサイトのURLに別のフィールドからアクセスしています。

dimension: linked_name { sql: ${name} ;; html: <a href="{{ website.url._value }}" target="_blank">{{ value }}</a> ;; }

{{ field_name._value }}というLiquid変数構文を使用して別のフィールドを参照する場合は、参照先のフィールドがSQLクエリのSELECT句に追加され、さらにGROUP BY句に追加の列として挿入されます。これは、参照先のフィールドから値を適切に取得するために必要な処理です。ただし、これが原因で集計メジャーで予期しない結果が発生する可能性があります。詳細については、ヘルプセンターの集計メジャーでのLiquid変数の使用に関する記事を参照してください。

Liquid変数の定義

次の表に、LookMLで使用可能なLiquid変数の説明を示します。「使用方法」列では、次のオプションを使用して、各Liquid変数で使用できるLookMLパラメーターを示しています。以下のようなオプションがあります。

a = actionパラメーターで使用可能
dv = default_value(ダッシュボード用)パラメーターで使用可能
de = フィールドレベルのdescriptionパラメーターで使用可能(ただし、Exploreレベルのdescriptionでは使用不可)
f = filters(ダッシュボード要素用)パラメーターで使用可能
h = htmlパラメーターで使用可能
la = フィールドレベルのラベルパラメーター(labelパラメーター、view_labelパラメーター、group_labelパラメーター、group_item_labelパラメーター)で使用可能(ただし、モデル、Explore、ビュー、リファレンスラインレベルのラベルパラメーターでは使用不可、またlinkのサブパラメーターとしてのlabelでも使用不可)
li = linkパラメーターで使用可能
s = sqlで始まるすべてのLookMLパラメーターで使用可能(sqlsql_onsql_table_nameなど)

変数 定義 使用方法 出力例
フィールド値
value データベースクエリによって返される生のフィールド値。ピボットされたフィールドの値を参照できます。

「使用方法」列に表示されるパラメーターに加えて、actionおよびlinkパラメーターのlabelサブパラメーターではvalueがサポートされています。
a h li 8521935
rendered_value Lookerのデフォルトのフォーマットを使用したフィールドの値。

Liquidを使用した簡単な日付のフォーマットのヘルプセンターの記事に示されているように、rendered_value日付フォーマット構文を参照できます。

[使用法]列に示されているパラメーターに加えて、rendered_valueactionおよびlinkパラメーターのlabelサブパラメーターでサポートされています。
a h li $8,521,935.00
filterable_value Looker URL内でフィルターとして機能する書式付きフィールド値。

例えば、「Periaptly, Inc」などのコンマが含まれるストリング値をフィルタリングする場合、value変数によって「Periaptly」と「Inc」の2つの異なるストリングが戻ります。filterable_value変数の場合、特殊文字をエスケープして、1つのストリング(この例では「Periaptly, Inc」)を戻すことによって、この点が修正されます。
a h li 8521935
リンク
link LookerのデフォルトドリルリンクのURL。一部のフィールドにはデフォルトリンクがありません。 a h li s /explore/thelook/orders?fields=orders.order_amount&limit=500
linked_value Lookerのデフォルト書式およびデフォルトリンクを使用するフィールド値。メジャーにはデフォルトリンクがないため、メジャーでlinked_valueを使用するには、drill_fieldsパラメーターを設定する必要があります。 a h li $8,521,935.00
フィルター
_filters['view_name.field_name'] view_name.field_nameで要求するフィールドに適用されるユーザーフィルター。

_filters['view_name.field_name']派生テーブルsqlパラメーターでもサポートされていますが、他のsqlパラメーターではサポートされていません。

派生テーブルsqlパラメーターで_filters['view_name.field_name']を使用するには、sql_quoteLiquidフィルターが必要です。
a de h la li NOT NULL
{% date_start date_filter_name %} date_filter_nameで要求する日付フィルターの開始日。 s 2017年1月1日
{% date_end date_filter_name %} date_filter_nameで要求する日付フィルターの終了日。 s 2017年1月1日
{% condition filter_name %}
sql_or_lookml_reference
{% endcondition %}
filter_nameで要求するフィルターの値。SQLとしてsql_or_lookml_referenceに適用されます。この変数は、テンプレートフィルターおよび条件付き結合とともに使用します。 s 例については、テンプレートフィルターのドキュメンテーションページおよびsql_onのドキュメンテーションページの条件付き結合のセクションを参照してください。
{% parameter parameter_name %} parameter_nameで要求するパラメーターフィルターの値。 de la s 例については、parameterパラメーターのドキュメンテーションページを参照してください。
parameter_name._parameter_value parameter_nameで要求するパラメーターフィルターの値を論理ステートメントに挿入します。 de h la li s 重要な詳細情報や例については、parameterパラメーターのドキュメンテーションページを参照してください。
ユーザー属性
_user_attributes['name_of_attribute'] クエリを実行する特定のユーザーについて、name_of_attributeで要求するユーザー属性の値(ユーザー属性が使用されている場合)。_user_attributes['name_of_attribute']変数は、高度なフィルター構文でも使用できます。 a de h la li s dv f northeast
例えば、ユーザー属性が「region」の場合

その他の例については、動的スキーマとテーブル名の挿入にユーザー属性を使用するのヘルプセンター記事を参照してください。
_localization['localization_key'] モデルのストリングファイルで定義されているローカライズキーに関連付けられている値をユーザーのロケールに基づいて返します。 dv f 例については、LookMLモデルのローカライズのドキュメンテーションページを参照してください。
LookMLオブジェクト
_model._name 当該フィールドのモデルの名前。 a de h la li s thelook
_view._name 当該フィールドのビューの名前。 a de h la li s orders
_explore._name 当該フィールドのExploreの名前。 a de h la li s order_items
_field._name view_name.field_nameという書式で表される、フィールド自体の名前。 a de h la li s orders.total_order_amount
クエリ
_query._query_timezone クエリが実行されたタイムゾーン a de h la li s America/Los_Angeles
view_name._in_query ビュー内のいずれかのフィールドがクエリに含まれている場合はtrueを返します。 de la li s true
view_name.field_name._in_query view_name.field_nameで要求するフィールドがクエリデータテーブルに存在するか、クエリのフィルターに含まれているか、required_fieldsパラメーターを使用したクエリに含まれている場合はtrueを返します。 de la li s true
view_name.field_name._is_selected view_name.field_nameで要求するフィールドがクエリデータテーブルに存在する場合はtrueを返します。 de la li s true
view_name.field_name._is_filtered view_name.field_nameで要求するフィールドがクエリのフィルターに含まれている場合はtrueを返します。 de la li s true

date_startおよびdate_endの使用

Liquid変数date_startおよびdate_endは、BigQueryなど、日付を基準にデータを複数のテーブルにパーティション化するデータベースダイアレクトで非常に役立ちます。これらの変数の結果はテキストになりますが、出力構文{{ date_start date_filter_name }}ではなく、タグ構文{% date_start date_filter_name %}を使用する必要があることに留意してください。

Liquid変数date_startおよびdate_endを使用して、日付を基準にパーティション化したテーブルを扱う方法の詳細については、date_startとdate_endの使用に関するLookerコミュニティトピックを参照してください。

date_startおよびdate_endを使用した柔軟な前期比分析の例については、ヘルプセンターの柔軟な前期比分析に関する記事を参照してください。

_in_query_is_selected_is_filteredの使用

_in_query_is_selected_is_filteredの各変数では、こちらの例に示すように、trueまたはfalseの値が使用されることに留意してください。したがって、Liquid変数の参照形式を適切に選択することが重要です。

何らかの要素がクエリに含まれているかどうかを判別し、それに基づいて特定のテキストを挿入する場合は、次のようなパターンを使用する必要があります。

{% if view_name.field_name._in_query %} something to insert if true {% else %} something to insert if false {% endif %}

「true」または「false」という単語をそのまま挿入する場合は、次のようなパターンを使用します。

{{ view_name.field_name._in_query }}

SQLダイアレクトによっては、「true」および「false」という単語がサポートされていない場合もあります。その場合、sql_booleanフィルターを追加して、必要なtrueまたはfalseの値が返されるようにすることができます。

{{ view_name.field_name._in_query | sql_boolean }}

_is_selectedおよび_is_filtered変数にも同様のパターンが適用されます。

labelパラメーターでのLiquid変数の使用

フィールドのlabelパラメーターでLiquid変数を使用すると、フィールドピッカーやビジュアリゼーションでフィールドの外観を動的に変更できます。labelパラメーターで使用可能なLiquid変数については、このページののセクションを参照してください。

Liquid変数は、フィールドレベルのラベルパラメーター(labelパラメーター、view_labelパラメーター、group_labelパラメーター、group_item_labelパラメーター)では使用できますが、モデル、Explore、ビュー、リファレンスラインレベルのラベルパラメーターでは使用できません。また、linkのサブパラメーターとしてのラベルでも使用できません。

次の変数をlabelとともに使用することで、フィールドピッカー、Exploreのデータセクション内の列見出し、およびビジュアリゼーションに影響を与えることができます。

_filtersのようにフィルターに基づいて値を返す変数やin_queryのようにクエリを実行しないと値が決まらない変数など、前述のLAマークの付いた他のLiquid変数では、フィールドピッカーにおけるフィールドの名前は変更されません。このようなケースでは、フィールド名は結果のビジュアリゼーションでのみ変更されます。

Liquid変数parameterlabelとともに使用した場合、labelvalueサブパラメーターの値が渡されます。

descriptionパラメーターでのLiquid変数の使用

descriptionパラメーターでLiquid変数を使用すると、フィールドの説明を動的に変更できます。この説明は、フィールドピッカー内のフィールドの情報アイコン、Exploreのデータセクション内のフィールドの列名、表チャート内のフィールドの列名にユーザーがマウスオーバーしたときに表示されます。descriptionパラメーターで使用可能なLiquid変数については、このページのLiquid変数の定義のセクションの表を参照してください。

Liquid変数は、フィールドレベルのdescriptionパラメーターでのみ使用できます。Exploreレベルのdescriptionパラメーターでは使用できません。

次の変数をdescriptionとともに使用することで、フィールドピッカー、Exploreのデータセクション、および表チャート内の列見出しに影響を与えることができます。

_filtersのようにフィルターに基づいて値を返す変数やin_queryのようにクエリを実行しないと値が決まらない変数など、前述のDEマークの付いた他のLiquid変数では、フィールドピッカーまたはExploreのデータセクションにおける説明は変更されません。これらのLiquid変数は、表チャート内のフィールドの列見出しにユーザーがマウスオーバーしたときに表示される説明にのみ影響します。

descriptionパラメーターでのLiquid変数の使用例については、descriptionパラメーターのドキュメンテーションページを参照してください。

考慮事項

yesnoフィールドの参照

yesnoフィールドの値を参照する場合、値の大文字と小文字が区別されます。YesまたはNoを使用してください。例:

{% if value == 'Yes' %}

Liquid変数での論理演算子の使用

Liquid変数では、論理演算子としてandornotを使用できます。Liquid変数で論理演算子を使用する場合、大文字と小文字が区別され、すべて小文字で記述する必要があります。例:

{% if value == "Shirt" or value == "Shoes" %} This is a shirt or shoes. {% endif %}

変数が見つからないことを示すエラーの発生

Liquid変数でこのエラーが発生する理由の1つとして、次のように{{ }}{% %}を同時に使用していることが考えられます。

{% if value > {{ search_latency_top_hr.limit_95._value }} %}

代わりに次のようにしてください。

{% if value > search_latency_top_hr.limit_95._value %}

テンプレートフィルターを使用している場合は、派生テーブルに結合していないテーブル名を参照しているかどうかをチェックしてください。

命名規則がクエリのグループ化に影響する場合がある

valueという名前のフィールドが存在すると、value Liquid変数が同じビューの別のフィールドで参照されている場合は、このフィールドはExploreクエリのGROUP BY句に必ず含められます。

例:

dimension: id { primary_key: true type: number sql: ${TABLE}.id ;; html: {% if value > 10 %} <font color="darkgreen">{{ rendered_value }}</font> {% elsif value > 11 %} <font color="goldenrod">{{ rendered_value }}</font> {% else %} <font color="darkred">{{ rendered_value }}</font> {% endif %} ;; } dimension: value { sql: ${TABLE}.status ;; type: string }

これにより、Exploreでidだけが選択されると、以下のSQLが生成されます。

SELECT orders.id AS orders.id, orders.status AS orders.value FROM order_items LEFT JOIN orders ON order_items.order_id = orders.id GROUP BY 1,2 ORDER BY orders.id LIMIT 500

このグループ化動作を回避するには、value変数のスコープをフィールドの名前で指定し、対象フィールドを明示的に参照します。

dimension: id { primary_key: true type: number sql: ${TABLE}.id ;; html: {% if value > 10 %} <font color="darkgreen">{{ id._rendered_value }}</font> {% elsif value > 11 %} <font color="goldenrod">{{ id._rendered_value }}</font> {% else %} <font color="darkred">{{ id._rendered_value }}</font> {% endif %} ;; }

派生テーブルで_filters['view_name.field_name']を使用するには、sql_quoteが必要です

SQLベースの派生テーブルを定義する際、値がSQLでレンダリングされ、フィルターが文字列の値を返す_filters['view_name.field_name'] Liquid変数を使用する場合は、出力の前後に一重引用符を追加する必要があります。sql_quote Liquidフィルターを含めることで、これを実行できます。

例えば、derived_tableパラメーターのsqlパラメーターで、これらのLiquid変数のいずれかを使用している場合:

{{ _filters['view_name.field_name'] }}

または

{% assign foo = _filters['view_name.field_name'] %} foo

Liquid変数宣言にLiquidフィルター| sql_quoteを追加することができます。

{{ _filters['view_name.field_name'] | sql_quote }}

および

{% assign foo = _filters['view_name.field_name'] | sql_quote %} foo

_filters['view_name.field_name']変数を使用している派生テーブルの例を次に示します。

view: users_sql_based_dt { derived_table: { sql: SELECT users.id AS id, (DATE(users.created_at)) AS created_date, users.city AS city, COUNT(*) AS user_count FROM public.users AS users {% if users_sql_based_dt.city._is_filtered %} WHERE users.city = {{ _filters['users_sql_based_dt.city'] | sql_quote }} {% endif %} GROUP BY 1, 2, 3 ORDER BY 2 DESC ;; }

cityフィールドはSQLへ出力されるストリングであるため、出力SQLが一重引用符で囲まれるようにするため、sql_quote Liquidフィルターが必要です。その結果のExploreで、ユーザーが都市名をフィルターとして指定すると、Lookerはその都市名ストリングを引用符で囲みます。ユーザーがExploreクエリを都市の値New Yorkでフィルタリングする場合、LookerはこのSQLをデータベースに送信します。

WHERE users.city = 'New York'

値がSQLでレンダリングされる派生テーブルのストリングフィールドに_filters['view_name.field_name'] Liquid変数を使用するときに、このLiquid変数に| sql_quoteを追加しないと、次のLookML警告が表示されます。

Using "_filters[]" in Derived Table SQL without "sql_quote" is discouraged.

sql_quoteとこの構文を使用して、配列の複数の値を引用符で囲むことができます。

{{ _filters['view_name.field_name'] | split:"," | sql_quote | join:"," }}

INステートメントの入力として使用されているLiquid出力の例を次に示します。

WHERE users.city IN({{ _filters['users_sql_based_dt.city'] | split:"," | sql_quote | join:"," }})

この構文により、Liquid出力では、全一覧の前後('value1, value2, value3')ではなく、個別の値の前後('value1','value2','value3')に引用符が配置されるようになります。

Top