Liquidは、より動的なコンテンツを作成するためにLookerで使用するテンプレート言語です。例えば、クエリの結果に基づいて外部ツールへのURLを構築したり、ユーザーの選択に基づいてクエリ対象のデータベーステーブルを変更したりすることができます。
Liquidステートメントは、変数、フィルター、タグを使用して作成します。変数には、使用する情報を格納します。Lookerで使用可能な変数については、このページで説明します。これらの値をさらに変更するには、フィルターやタグを使用します。これらについては、こちらのLiquidガイドで説明されています。
LookMLでは、次に示す複数の場所でLiquidを使用できます。
action
パラメーター- フィールド(Exploreのフィールドを除く)の
description
パラメーター html
パラメーター- フィールドレベルのラベルパラメーター(
label
パラメーター、view_label
パラメーター、group_label
パラメーター、group_item_label
パラメーター) link
パラメーターsql
で始まるパラメーター(sql
やsql_on
など)default_value
ダッシュボードフィルターパラメーターfilters
ダッシュボード要素パラメーター
Liquid変数の使用
Liquid変数の基本的な使用方法は簡単です。使用する変数が決まったら(次のリストを参照)、その変数を有効なLookMLパラメーターに挿入するだけです。特定のLiquid変数は、次の定義に示すように、特定のLookMLパラメーターでのみ使用できます。
Liquidの2つの使用方法
Liquid変数は次の2つの方法で使用できます。
- 出力構文:この方法は、テキストを挿入するものであり、LookerでLiquidを使用する最も一般的な方法と考えられます。この方法では、Liquid変数を2つの中括弧で囲みます。例えば、
{{ value }}
のようにします。 - タグ構文:この方法は、通常、テキストを挿入するという形ではなく、代わりに論理比較やその他のLiquid演算に使用します。この方法では、Liquid変数を1つの中括弧と1つのパーセント符号で囲みます。例えば、
{% if value > 10000 %}
のようにします。
基本的な例
HTMLでの使用方法を示す次の例では、<img>
タグに商品IDを挿入することで、商品画像を生成しています。
URLでの使用方法を示す次の例では、URLにアーティスト名を挿入することで、そのアーティストに関するGoogle検索を生成しています。
SQLでの使用方法を示す次の例では、ユーザーが選択するフィールドに基づいてデータベーステーブルを決定しています。この構文では、クエリに含まれているフィールドのチェックとそれに対する応答の実行にif
、else if(elsif
と表記)、else
構造を使用しています。
ラベルでの使用方法を示す次の例では、email
ディメンションのlabel
値がLookMLのモデル名に応じて変わるようにしています。これにより、フィールドピッカーやクエリ結果において、email
ディメンションを含むフィールドの名前が動的に変わるようになります。
その他の使用例については、興味のある個別のLookMLパラメーターページを参照してください。
他のフィールドからの変数へのアクセス
Liquid変数は、通常、それらを使用するフィールドに基づきます。ただし、その値には、必要に応じて他のフィールドからもアクセスできます。
クエリ結果内の同一行の他のフィールドにアクセスするには、{{ view_name.field_name._liquid-variable-name }}
という書式を使用します。_liquid-variable-name
をLookerのLiquid変数のいずれかに置き換えてください。次のように、変数名の先頭には必ずアンダースコアを付けてください(標準でアンダースコアが付いていない場合)。
{{ view_name.field_name._value }}
{{ view_name.field_name._rendered_value }}
{{ view_name.field_name._model._name }}
次の例では、この方法を使用してウェブサイトのURLに別のフィールドからアクセスしています。
{{ 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パラメーターで使用可能(sql
、sql_on
、sql_table_name
など)
変数 | 定義 | 使用方法 | 出力例 |
---|---|---|---|
フィールド値 | |||
value | データベースクエリによって返される生のフィールド値。ピボットされたフィールドの値を参照できます。「使用方法」列に表示されるパラメーターに加えて、action およびlink パラメーターのlabel サブパラメーターではvalue がサポートされています。 | a h li | 8521935 |
rendered_value | Lookerのデフォルトのフォーマットを使用したフィールドの値。Liquidを使用した簡単な日付のフォーマットのヘルプセンターの記事に示されているように、rendered_value で日付フォーマット構文を参照できます。[使用法]列に示されているパラメーターに加えて、rendered_value がaction および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_quote Liquidフィルターが必要です。 | 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変数の参照形式を適切に選択することが重要です。
何らかの要素がクエリに含まれているかどうかを判別し、それに基づいて特定のテキストを挿入する場合は、次のようなパターンを使用する必要があります。
「true」または「false」という単語をそのまま挿入する場合は、次のようなパターンを使用します。
SQLダイアレクトによっては、「true」および「false」という単語がサポートされていない場合もあります。その場合、sql_boolean
フィルターを追加して、必要なtrueまたはfalseの値が返されるようにすることができます。
_is_selected
および_is_filtered
変数にも同様のパターンが適用されます。
label
パラメーターでのLiquid変数の使用
フィールドのlabel
パラメーターでLiquid変数を使用すると、フィールドピッカーやビジュアリゼーションでフィールドの外観を動的に変更できます。label
パラメーターで使用可能なLiquid変数については、このページの表のセクションを参照してください。
Liquid変数は、フィールドレベルのラベルパラメーター(
label
パラメーター、view_label
パラメーター、group_label
パラメーター、group_item_label
パラメーター)では使用できますが、モデル、Explore、ビュー、リファレンスラインレベルのラベルパラメーターでは使用できません。また、link
のサブパラメーターとしてのラベルでも使用できません。
次の変数をlabel
とともに使用することで、フィールドピッカー、Exploreのデータセクション内の列見出し、およびビジュアリゼーションに影響を与えることができます。
_model._name
_view._name
_explore._name
_field._name
_user_attributes['name_of_attribute']
_filters
のようにフィルターに基づいて値を返す変数やin_query
のようにクエリを実行しないと値が決まらない変数など、前述の表でLAマークの付いた他のLiquid変数では、フィールドピッカーにおけるフィールドの名前は変更されません。このようなケースでは、フィールド名は結果のビジュアリゼーションでのみ変更されます。
Liquid変数parameter
をlabel
とともに使用した場合、label
にvalue
サブパラメーターの値が渡されます。
description
パラメーターでのLiquid変数の使用
description
パラメーターでLiquid変数を使用すると、フィールドの説明を動的に変更できます。この説明は、フィールドピッカー内のフィールドの情報アイコン、Exploreのデータセクション内のフィールドの列名、表チャート内のフィールドの列名にユーザーがマウスオーバーしたときに表示されます。description
パラメーターで使用可能なLiquid変数については、このページのLiquid変数の定義のセクションの表を参照してください。
Liquid変数は、フィールドレベルの
description
パラメーターでのみ使用できます。Exploreレベルのdescription
パラメーターでは使用できません。
次の変数をdescription
とともに使用することで、フィールドピッカー、Exploreのデータセクション、および表チャート内の列見出しに影響を与えることができます。
_model._name
_view._name
_explore._name
_field._name
_user_attributes['name_of_attribute']
_filters
のようにフィルターに基づいて値を返す変数やin_query
のようにクエリを実行しないと値が決まらない変数など、前述の表でDEマークの付いた他のLiquid変数では、フィールドピッカーまたはExploreのデータセクションにおける説明は変更されません。これらのLiquid変数は、表チャート内のフィールドの列見出しにユーザーがマウスオーバーしたときに表示される説明にのみ影響します。
description
パラメーターでのLiquid変数の使用例については、description
パラメーターのドキュメンテーションページを参照してください。
考慮事項
yesno
フィールドの参照
yesno
フィールドの値を参照する場合、値の大文字と小文字が区別されます。Yes
またはNo
を使用してください。例:
Liquid変数での論理演算子の使用
Liquid変数では、論理演算子としてand
、or
、not
を使用できます。Liquid変数で論理演算子を使用する場合、大文字と小文字が区別され、すべて小文字で記述する必要があります。例:
変数が見つからないことを示すエラーの発生
Liquid変数でこのエラーが発生する理由の1つとして、次のように{{ }}
と{% %}
を同時に使用していることが考えられます。
代わりに次のようにしてください。
テンプレートフィルターを使用している場合は、派生テーブルに結合していないテーブル名を参照しているかどうかをチェックしてください。
命名規則がクエリのグループ化に影響する場合がある
valueという名前のフィールドが存在すると、value
Liquid変数が同じビューの別のフィールドで参照されている場合は、このフィールドはExploreクエリのGROUP BY句に必ず含められます。
例:
これにより、Exploreでidだけが選択されると、以下のSQLが生成されます。
このグループ化動作を回避するには、value
変数のスコープをフィールドの名前で指定し、対象フィールドを明示的に参照します。
派生テーブルで_filters['view_name.field_name']
を使用するには、sql_quote
が必要です
SQLベースの派生テーブルを定義する際、値がSQLでレンダリングされ、フィルターが文字列の値を返す_filters['view_name.field_name']
Liquid変数を使用する場合は、出力の前後に一重引用符を追加する必要があります。sql_quote
Liquidフィルターを含めることで、これを実行できます。
例えば、derived_table
パラメーターのsql
パラメーターで、これらのLiquid変数のいずれかを使用している場合:
または
Liquid変数宣言にLiquidフィルター| sql_quote
を追加することができます。
および
_filters['view_name.field_name']
変数を使用している派生テーブルの例を次に示します。
city
フィールドはSQLへ出力されるストリングであるため、出力SQLが一重引用符で囲まれるようにするため、sql_quote
Liquidフィルターが必要です。その結果のExploreで、ユーザーが都市名をフィルターとして指定すると、Lookerはその都市名ストリングを引用符で囲みます。ユーザーがExploreクエリを都市の値New York
でフィルタリングする場合、LookerはこのSQLをデータベースに送信します。
値がSQLでレンダリングされる派生テーブルのストリングフィールドに
_filters['view_name.field_name']
Liquid変数を使用するときに、このLiquid変数に| sql_quote
を追加しないと、次のLookML警告が表示されます。
Using "_filters[]" in Derived Table SQL without "sql_quote" is discouraged.
sql_quote
とこの構文を使用して、配列の複数の値を引用符で囲むことができます。
IN
ステートメントの入力として使用されているLiquid出力の例を次に示します。
この構文により、Liquid出力では、全一覧の前後('value1, value2, value3'
)ではなく、個別の値の前後('value1','value2','value3'
)に引用符が配置されるようになります。