[Looker] constantパラメーターを利用してLookMLで定数を定義する #looker

ルッカ・デ・コンスタンタン
2021.03.20

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

LookMLで開発をしている際に、定数を定義したい場面があると思います。その際の方法をご紹介します。

manifestファイルを作成する

LookMLで定数を定義するパラメーターは、constantパラメーターです。このconstantパラメーターは、manifestファイルで定義します。

manifestファイルは、1つのプロジェクトで1ファイルのみ作成できます。manifestファイルには定数の定義以外にも、プロジェクトをインポートする際の定義や、ユーザーに合わせた言語設定(ローカライズ)Lookerの拡張機能カスタムビジュアライゼーションといったプロジェクト全体に関わる設定を書き込みます。

manifestファイルはLooker開発画面の左側ペイン上部の+からCreate Project Manifestを選択すれば作成できます。

1プロジェクト1manifestファイルなので、すでに作成済みの場合は、ファイル追加の候補に出てきません。

manifestファイルに定数を定義する

それでは、manifestファイルにconstantパラメーターで定数を定義します。
サブパラメーターのexportがどのような動きをしているかはこちらのブログで紹介しています。

今回は、Lookerのconnectionで定義しているBigQueryのプロジェクトから、別のプロジェクトへアクセスする際のプロジェクト名を定数として定義します。

# manifest.lkml
# プロジェクト名を指定
project_name: "constantin"

# 定数を定義
constant: bq_pub_data {
  value: "bigquery-public-data"
}

# view_from_other_project.view.lkml
explore: view_from_other_project {}
# @{constant_name}で参照
view: view_from_other_project {
  derived_table: {
    sql:
      SELECT
        address
      FROM `@{bq_pub_data}.austin_crime.crime`
    ;;
  }
  dimension: address {}
}

Explore画面で動作を確認します。

テーブル名がきちんとbigquery-public-data.austin_crime.crimeになっています。

おまけ

@{constant_name}を定数ではなく文字列として使用したい場合

公式ドキュメントで、@{constant_name}を定数ではなく文字列として扱いたい場合の対処方法が紹介されていますが、実際のExplore画面でどのように表示されるのかは画像がなかったので、試してみました。

まずはバックスラッシュ(\)でエスケープする方法:

dimension: address {
  label: "@\{bq_pub_data}"
}

@{constant_name}が文字列として表示されています。

次は、括弧が閉じていないと定数として認識されない点を利用した方法:

dimension: address {
  label: "@{bq_pub_data"
}

こちらもそのまま文字列として表示されています。