定数

使用状況

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

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

定義

constant パラメータでは LookML 定数を定義します。これにより、プロジェクト全体で再利用できる値を指定できます。定数は、モデルが受け入れられる場所であればどこでも、LookML ダッシュボード要素の modelexplore を使用して参照できるため、LookML コードの繰り返しを減らすことができます。

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

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

export

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

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

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

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

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

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

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

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

constant パラメータで Explore にラベルを付ける

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

constant: city {
  value: "San Francisco"
}

この定数は、構文 @{city} を使用して、文字列を受け付ける任意の場所で参照できます。この例では、次の例のように usersorders の Explore を定義できます。label パラメータの値として "@{city} Users""@{city} Orders" を指定します。


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

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

この例では、デフォルトの [Users] ラベルと [Orders] ラベルではなく、[Explore] メニューと Explore のタイトルに [San Francisco Users] と [San 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: "{% dynamic if value < 0 %}&#60;p style=&#92;"color:red; &#92;">({{rendered_value}})</p>{% dynamic else %} {{rendered_value}} {% dynamic endif %}"
}

これにより定数 negative_format が作成され、負のデータ値を赤色のフォントで囲む必要があります。この形式をデータセットのディメンションとメジャーに適用するには、html パラメータを使用します。

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


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

表内の [Total Amount] メジャーの負の値は、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

知っておくべきこと

定数定義内での定数の参照

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


constant: city {
  value: "San Francisco"
}

その後、上記の例の city 定数を参照する定数 state を宣言できます。


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

上記で宣言された定数 state は、文字列「カリフォルニア州サンフランシスコ」に解決されます。

定数構文のエスケープ

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


dimension: id {
  type: string
  label: "@&#92;{id}"
  sql: ${TABLE}.id
}

上記の例では、label パラメータは、id 定数を評価してその値を出力するのではなく、文字列 @{id}id ディメンションのラベルとして表示します。

角かっこが閉じられていなければ定数参照は評価されません。その場合、定数構文をエスケープする必要はありません。したがって、以下の例の @{id は定数として評価されません。


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