mcpField
L
lookml-model

lookml-model

github.com/looker-open-sourceデータ・データベース43148 回インストール2 週間前に更新
リポジトリ

lookml-model について

接続、include、キャッシュ設定を扱う、LookML 開発者向けのモデルファイルガイドです。datagroup を使い、キャッシュの無効化を ETL/ELT の処理に合わせる方法を説明します。

主な機能

  1. 01モデル接続とラベルの設定
  2. 02具体的な include パターンの指定
  3. 03週の開始曜日の設定
  4. 04datagroup によるキャッシュ管理

活用シーン

  1. 01LookML モデルで利用するビューやダッシュボードの選択
  2. 02ETL/ELT の状態に応じた本番ダッシュボードのキャッシュ更新

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/looker-open-source/looker-skills --skill lookml-model

インストール後、Claude Code で/lookml-modelを入力して読み込まれたか確認します。

詳細

手順

  1. モデルファイルを定義する:モデルファイルは通常、単一のデータベース接続に対応し、Explore を含みます。
  2. 必須パラメーター:
    • connection: "connection_name":Looker Admin で定義された接続と一致する必要があります。
    • include: "pattern":モデルで使用できるビューおよびダッシュボードのファイルを指定します。
  3. ベストプラクティス:
    • Includes:パフォーマンスの問題や名前空間の煩雑化を防ぐため、可能であれば include: "*.view" は避けてください。include: "/views/users.view" や include: "/views/marketing/*.view" のような具体的なパスまたはワイルドカードを使用してください。
    • ラベル:label: を使用して、UI でモデルにわかりやすい名前を付けてください。
    • 週の開始曜日:ビジネスロジックで特定の開始曜日(例:monday)が必要な場合は、week_start_day: を設定してください。
    • Datagroups とキャッシュ:Looker を ETL/ELT プロセスに合わせるため、キャッシュポリシーには必ず datagroups を使用してください。

4. Datagroups とキャッシュ

Datagroups は、キャッシュポリシーを管理するための推奨メカニズムです。

  • 定義:モデルファイルで定義します。
  • sql_trigger:単一の値(例:最大タイムスタンプ)を返すクエリです。値が変わると、キャッシュは無効になります。
  • max_cache_age:トリガーが変わらない場合の代替期間です。
  • persist_with:Explore またはモデル全体に datagroup を適用します。
Datagroups と persist_for の比較
機能Datagroups(推奨)persist_for
トリガーSQL クエリ(スマート)固定時間(単純)
整合性ETL/ELT の完了に合わせる不整合(推測に依存)
管理モデルファイルで一元管理Explore/モデルに分散
ユースケース本番ダッシュボード、ETL 同期アドホッククエリ、リアルタイム(<1h)のニーズ

ヒント

X 分ごとにキャッシュを強制的に更新する必要があるリアルタイムダッシュボード(例:株価表示、動きの速い在庫)に限り、persist_for を使用してください。それ以外では、Datagroups を使用してください。

5. Include パターン

範囲とパフォーマンスを制御するため、厳密なパターンを使用してください。

パターン説明ユースケース
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"

Datagroup を含むモデル(ベストプラクティス)

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"
}

コメント