定数

用途

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

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

定義

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

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

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

export

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

デフォルトでは、定数を参照するインポートされたファイルは、インポート プロジェクトでインポートされたプロジェクトのマニフェスト ファイルで指定された値を使用します。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

知っておくべきこと

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

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


constant: city {
  value: "San Francisco"
}

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


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

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

定数のエスケープ構文

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


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

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

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


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