定数

用途

constant: constant_name {
  value: "string"
  export: none | override_required | override_optional
}
階層
constant
デフォルト値
なし

許可
  • value サブパラメータ。定数の値を指定する文字列を受け取ります。
  • export サブパラメータ。インポートするプロジェクトで使用する場合に定数をオーバーライドする必要があるかどうかを指定します。

定義

constant パラメータは LookML 定数を定義し、プロジェクト全体で再利用できる値を指定できます。定数は、文字列が受け入れられるモデル内の任意の場所と、LookML ダッシュボード要素の model パラメータと explore パラメータで参照できるため、LookML コードの繰り返しを減らすことができます。

定数は、プロジェクト マニフェスト ファイルで定義する必要があります。定数は、@{constant_name} 構文を使用してプロジェクト全体で使用できます。

exportサブパラメータconstantを使用して、参照するファイルが別のプロジェクトにインポートされたときに、デベロッパーが定数の値をオーバーライドするかどうかを指定できます。

export

使用できますexportサブパラメータconstant定数を参照するファイルが、他のプロジェクトにインポートされました

デフォルトでは、定数を参照するインポートされたファイルは、インポート元のプロジェクトで、インポートされたプロジェクトのマニフェストファイルで指定された値を使用します。export パラメータは、インポートするプロジェクトで使用する定数に新しい値を指定して、デベロッパーが定数の値をオーバーライドする必要があるかどうかを指定します。export パラメータには次の値を使用できます。

  • none: export のデフォルト値。インポートしたプロジェクトで定数の値をオーバーライドすることはできません。インポート プロジェクトでは、インポートしたプロジェクトのマニフェスト ファイルで指定された定数値を使用します。
  • override_optional: インポートしたプロジェクトでは、定数値をオプションでオーバーライドできます。インポートされたプロジェクトのマニフェスト ファイルで値が指定されていない場合は、インポートされたプロジェクトの元の値が使用されます。
  • override_required: インポートしたプロジェクトは、インポートしたプロジェクトのマニフェスト ファイルで最初に指定された定数値をオーバーライドする必要があります。インポートしたプロジェクトで新しい定数値が指定されていない場合は、エラーが表示されます。

定数は、元々定義されたプロジェクトのファイルでのみ使用できます。そのため、ファイルをインポートしたプロジェクトで定義された定数は、インポートしたファイルでのみ使用でき、インポート元のプロジェクトで定義されたファイルでは使用できません。

インポートしたプロジェクトのファイルで定数を使用する場合は、インポートしたプロジェクトのマニフェスト ファイルに新しい定数を定義します。この方法で定義された定数は、インポートしたプロジェクトで定義されたファイルでのみ使用できます。

定数を参照するファイルを別のプロジェクトにインポートする場合、インポートするプロジェクトのマニフェスト ファイルで local_dependency または remote_dependencyoverride_constant サブパラメータを使用できます。これにより、exportoverride_optional または override_required に設定されている定数に新しい値を指定できます。

詳細と、プロジェクトのインポートで定数をオーバーライドする例については、他のプロジェクトからのファイルのインポートに関するドキュメント ページをご覧ください。

constant パラメータを使用して、プロジェクト全体で使用できる値を定義する方法の例を次に示します。

constant パラメータを使用して Explore にラベルを付ける

たとえば、UI で San Francisco UsersSan Francisco Orders というラベルの 2 つの Explore を作成するとします。これを行うには、プロジェクトの manifest.lkml ファイル内の値 "San Francisco" で定数 city を定義します。

constant: city {
  value: "San Francisco"
}

この定数は、文字列が受け入れられているプロジェクトの任意の部分で構文 @{city} を使用して参照できます。この例では、以下のように label パラメータの値として "@{city} Users""@{city} Orders" を指定して、usersorders の Explore を定義できます。


explore: users {
  label: "@{city} Users"
}

explore: orders {
  label: "@{city} Orders"
}

この例では、Looker で Explore メニューと Explore のタイトルに、デフォルトの UsersOrders ラベルではなく San Francisco UsersSan Francisco Orders が表示されます。

定数で sql_table_name パラメータを使用する

スキーマ 02349_sfo のテーブルに基づいて複数のビューを作成するとします。値 02349_sfo を複数回指定する必要がないように、プロジェクトの manifest.lkml ファイルに schema という名前の定数を作成します。


constant: schema {
  value: "02349_sfo"
}

次に、sql_table_name パラメータの値として @{schema}.view_name を指定して、02349_sfo スキーマに基づいてビューを作成できます。


view: users {
  sql_table_name: @{schema}.users ;;
}

これにより、スキーマ 02349_sfousers テーブルに基づく Users というビューが作成されます。

定数を使用した Liquid 変数と HTML の使用

負のデータ値を括弧で囲み、赤いフォントで表示したいとします。LookML 定数の値としてこの形式を設定すると、Liquid 変数HTML を使用して形式を 1 回指定するだけでできます。そうすれば、その形式をフィールドに適用するときは、いつでも定数を参照できます。

たとえば、この形式をフィールドに適用するために使用できる negative_format という定数を作成できます。


constant: negative_format {
  value: "{% if value < 0 %}<p style='color:red;'>({{rendered_value}})</p>{% else %} {{rendered_value}} {% endif %}"
}

これにより、負のデータ値が赤いフォントで、括弧で囲まれるように指定する定数 negative_format が作成されます。html パラメータを使用して、この形式をデータセットのディメンションと measure に適用できます。

たとえば、type: sumTotal Amount measure を作成し、html パラメータの値として @{negative_format} を指定できます。


measure: total_amount {
  type: sum
  value_format_name: usd
  sql: ${amount} ;;
  html: @{negative_format} ;;
}

表では、Total Amount measure の負の値が、negative_format 定数定義で指定された形式に従い、赤色のフォントで括弧で囲まれています。

LookML ダッシュボードで定数を使用する

LookML ダッシュボードのダッシュボード要素を定義するときに、LookML 定数を使用して、要素のベースとなるモデルと Explore を定義できます。

たとえば、プロジェクトの manifest.lkml ファイルで定数 model_nameexplore_name を定義したとします。


constant: model_name {
  value: "thelook"
}

constant: explore_name {
  value: "orders"
}

ダッシュボード ファイルで、モデル thelook と Explore orders に基づくダッシュボード要素の model の値を "@{model_name}" に設定し、explore の値を "@{explore_name}" に設定できます。

たとえば、縦棒グラフの要素の LookML を編集しているとします。ダッシュボード ファイルで、model パラメータと explore パラメータの値を次のように指定できます。


- dashboard: dashboard_name
  title: "dashboard title"
  layout: newspaper
  elements:
  - title: Element Title
    name: element_name
    model: "@{model_name}"
    explore: "@{explore_name}"
    type: looker_column

ダッシュボード エージェントの手順で定数を使用する [プレビュー]

また、LookML ダッシュボード エージェントinstructions パラメータ内で LookML 定数を使用して、複数のダッシュボード エージェント間で標準のビジネスルールやガイドラインを共有することもできます。

たとえば、manifest.lkml ファイルで定数を定義します。

constant: FISCAL_YEAR_RULE {
  value: "Always filter all requests by the current fiscal year unless specified otherwise."
}

次に、agent 定義の instructions パラメータで定数を参照できます。

agent: sales_dashboard_agent {
  instructions: "Focus on revenue metrics. @{FISCAL_YEAR_RULE}"
  is_dashboard_agent: yes
}

知っておくべきこと

定数定義内の定数を参照する

定数を定義する際、プロジェクトのマニフェストファイル内で定義されている他の定数を参照することができます。定数 city がすでに宣言されているとします。


constant: city {
  value: "San Francisco"
}

次に、city 定数を参照する定数 state を宣言できます。


constant: city_state {
  value: "@{city}, California"
}

定数 state は文字列「San Francisco, California」に解決されます。

定数のエスケープ構文

定数構文に似た文字列を記述したいが、その文字列を定数として評価したくない場合は、@ 文字の後にバックスラッシュ エスケープ文字 \ を使用して定数構文をエスケープできます。次に例を示します。

```none

ディメンション: id { タイプ: 文字列 ラベル: "@{id}" SQL: ${TABLE}.id }




In this example, the [`label` parameter](/looker/docs/2614/reference/param-explore-label) displays the string **@{id}** as the label for the `id` dimension, rather than evaluating the `id` constant and outputting its value.

Constant references won't be evaluated if the brackets are not closed, in which case it is not necessary to escape constant syntax. Thus, `@{id` in the following example wouldn't be evaluated as a constant.


```none

dimension: id {
  type: string
  label: "@{id"
  sql: ${TABLE}.id
}