ℹ️
LookMLって定数を定義できるの?
what
- LookMLで定数を定義する事ができるのか調べてみた個人ログ
Q.LookMLって定数を定義できるの?
A. できる
LookMLも他のプログラミング言語と同じように定数を設定できる。
定数の定義とマニフェストファイル
マニフェストファイル
LookMLにおいて、定数はマニフェストファイルというファイルを作成することによって定義する事ができる。
マニフェストファイルは、定数の定義以外にも以下の場合にも利用される。
- 現在のプロジェクトに他のプロジェクトをインポートする際の指定
- モデルのローカライズ設定の指定
- プロジェクトに拡張子を追加する
- プロジェクトにカスタムの可視化を追加する
なお、マニフェストファイルは1プロジェクトに付き1つまでしか作成できない点に注意。
constantパラメータ
定数を定義する際に利用するパラメータで、マニフェストファイルに記載する。
記入例
まず、マニュフェストファイルに定数を定義する。
# manifest.lkml
constant: city {
value: "San Francisco"
}
次に、modelファイルに定義した定数を記載する。
このコードの中では、label
に「San Francisco」と値がつくようにしている。
# view_from_other_project.view.lkml
explore: users {
label: "@{city} Users"
}
記載例では、modelファイルを対象にしているが、viewファイルにも定数を利用できる。
詳細に関しては公式ドキュメントを参照。
実際に触ってみる
今回はデモデータが入ったBQテーブルを対象にして、マニフェストファイルで定数を定義。
利用してみる。
【やってみること】
test_demo_data
というexploreでデータを表示・集計する際に、特定のuser_idのデータを除外したい。
- 対象user_id:
1230456
このuser_idを定数として定義し、利用する。
1.マニフェストファイルの作成
変数を定義するためのマニフェストファイルを作成する。
-
プロジェクト一覧の「ファイルブラウザ」→「プロジェクト マニフェストを作成」を選ぶ
-
ファイル一覧に「manifest.lkml」ファイルが出来ているのを確認する
2.変数を定義する
マニフェストファイルに変数を定義する。
# 集計対象外となるuser_id一覧
constant: excluded_user_ids {
value: "1230456"
}
3.exploreに追加する
手順2で定義した変数をexploerに追加する。
# sql_always_whereを利用し、集計対象から除外するようにしている
explore: test_demo_data {
sql_always_where: ${test_demo_data.user_id} not in (@{excluded_user_ids});;
}
4.exploreで実際に確認してみる
実際にexploreで確認してみる。
画像がないが、user_id: 1230456
が集計から除外されていることを確認できた。
まとめ
- 「LookMLで定数を定義できるのか」という疑問から調べてみたが、他の言語と同じように定義ができる事がわかった
- 調査の中でマニフェストファイルというものを今回初めて知り、定数以外にも複数の場面で利用できることがわかった
- 他にもマニフェストロックファイルなるファイル等もあり、奥が深そうだと感じだ
- LookMLに関してはまだまだ知らないこともあるので、色々と理解をしていきたい
参考
Discussion