lookml-model について
LookML のモデルファイル作成者向けに、接続、ファイルの読み込み範囲、キャッシュ設定を解説するスキルです。datagroups でキャッシュ無効化を ETL/ELT に合わせ、明確な include パターンでモデルの範囲を制御します。
主な機能
- 01接続とファイル読み込みの設定
- 02datagroups によるキャッシュ管理
- 03モデルラベルと週の開始曜日の設定
- 04明確な include パターンの選択
活用シーン
- 01Looker プロジェクトのモデルファイル作成
- 02キャッシュ無効化と ETL/ELT 完了の連携
- 03モデルに含めるビューとダッシュボードの制限
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ lkrdev/ lookml_skills --skill lookml-modelインストール後、Claude Code で/lookml-modelを入力して読み込まれたか確認します。
詳細
手順
- モデルファイルを定義する:モデルファイルは通常、単一のデータベース接続に対応し、Explore を含みます。
- 必須パラメーター:
connection: "connection_name":Looker Admin で定義された接続と一致する必要があります。include: "pattern":モデルで利用できるビューおよびダッシュボードのファイルを指定します。
- ベストプラクティス:
- インクルード:パフォーマンスの問題や名前空間の煩雑化を防ぐため、可能であれば
include: "*.view"は避けてください。include: "/views/users.view"やinclude: "/views/marketing/*.view"のような特定のパスまたはワイルドカードを使用してください。 - ラベル:UI でモデルにわかりやすい名前を付けるには、
label:を使用してください。 - 週の開始曜日:ビジネスロジックで特定の開始曜日(例:
monday)が必要な場合は、week_start_day:を設定してください。 - データグループとキャッシュ:Looker を ETL/ELT プロセスに合わせるため、キャッシュポリシーには必ずデータグループを使用してください。
- インクルード:パフォーマンスの問題や名前空間の煩雑化を防ぐため、可能であれば
4. データグループとキャッシュ
データグループは、キャッシュポリシーを管理するための推奨メカニズムです。
- 定義:モデルファイルで定義します。
- sql_trigger:単一の値(例:最大タイムスタンプ)を返すクエリです。値が変わると、キャッシュが無効化されます。
- max_cache_age:トリガーが変化しない場合の代替期間です。
- persist_with:データグループを Explore またはモデル全体に適用します。
データグループと persist_for の比較
| 機能 | データグループ(推奨) | persist_for |
|---|---|---|
| トリガー | SQL クエリ(スマート) | 固定時間(単純) |
| 連携 | ETL/ELT の完了に合わせる | 不整合(推測に依存) |
| 管理 | モデルファイルで一元管理 | Explore/モデルに分散 |
| 用途 | 本番ダッシュボード、ETL 同期 | アドホッククエリ、リアルタイム(<1h)のニーズ |
ヒント
X 分ごとにキャッシュを強制的に更新する必要があるリアルタイムダッシュボード(例:株価ティッカー、在庫の急速な変動)に限り、
persist_forを使用してください。それ以外では、データグループを使用してください。
5. インクルードパターン
スコープとパフォーマンスを制御するため、厳密なパターンを使用してください。
| パターン | 説明 | 用途 |
|---|---|---|
include: "/views/*.view" | 特定のフォルダー内のすべてのビュー | 標準的なモジュール化 |
include: "/views/marketing/users.view" | 特定のファイル | 正確な制御、競合の回避 |
include: "/**/*.view" | 再帰的(プロジェクト内のすべてのビュー) | プロジェクトが小規模な場合を除き、避ける |
include: "/dashboards/*.dashboard" | フォルダー内のすべてのダッシュボード | ダッシュボードのインポート |
例
基本的なモデル
connection: "thelook"
# Include all views in the views/ folder
include: "/views/*.view"
# Include all dashboards
include: "/*.dashboard"
# Define an Explore (usually better to define in separate files for large projects, but acceptable here for small ones)
explore: orders {
join: users {
type: left_outer
sql_on: ${orders.user_id} = ${users.id} ;;
relationship: many_to_one
}
}
特定の設定を含むモデル
connection: "snowlooker"
label: "eCommerce Analytics"
# Set valid week start day
week_start_day: monday
# Include specific folders
include: "/views/finance/*.view"
include: "/views/marketing/*.view"
## Model with Datagroup (Best Practice)
```lookml
connection: "thelook"
# Define the caching policy
datagroup: ecommerce_etl {
description: "Triggers when the max created_at date changes in the events table."
sql_trigger: SELECT MAX(created_at) FROM `project.dataset.events` ;;
max_cache_age: "24 hours" # Fallback
}
# Apply default caching to all Explores in this model
persist_with: ecommerce_etl
include: "/views/*.view"
explore: orders {
# This explore inherits 'persist_with: ecommerce_etl' from the model default
}
explore: real_time_dashboard {
# Override with a different policy if needed
persist_for: "5 minutes"
}
```
コメント
Markdown 対応