lookml-view について
LookML ビューの作成と保守に関する規約を定めるスキルです。ファイル構成、主キー、拡張、リファインメントを扱い、適切な場合はネイティブ派生テーブルを推奨します。
主な機能
- 01ビューのファイル名と構成の規定
- 02明示的なテーブル名と主キーの指定
- 03拡張とリファインメントの指針
- 04適切な場合のネイティブ派生テーブル推奨
- 05命名と説明の規約
活用シーン
- 01標準的な LookML ビューの作成
- 02既存ビューへの変更の積み重ね
- 03ビュー間でのロジック再利用
- 04派生テーブル方式の選択
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ looker-open-source/ looker-skills --skill lookml-viewインストール後、Claude Code で/lookml-viewを入力して読み込まれたか確認します。
同梱ファイルreferences/derived_table.md
詳細
手順
1. ファイル構成
- 標準ビュー:
views/[datasource_name]/[view_name].view.lkml - 拡張ビュー:
views/[datasource_name]/[view_name]_ext.view.lkml - リファインメント:
views/[datasource_name]/[view_name]_rfn.view.lkml - NDT:
views/[datasource_name]/[view_name]_ndt.view.lkml - SDT:
views/[datasource_name]/[view_name]_sdt.view.lkml
2. 基本標準
- sql_table_name: 標準ビューでは必須です。デフォルトは不安定なため、明示してください。
- 主キー:
- 慣例: 読みやすさのため、主キーを最初のディメンションに配置します。
primary_key: yesを必ず指定してください — 理由: Looker が JOIN による行の重複を正しく処理するために使用する 対称集計 に不可欠です(複数の JOIN を含むクエリでのファンアウトを防ぎます)。
- リファインメント: 元のファイルを変更せずに既存のビューをリファインするには、ビュー名の前に
+を付けます(例:view: +users)。 - 拡張: 他のビューのロジックを再利用するには、
extendsを使用します。 - 派生テーブル: 可能であれば、SQL 派生テーブル(
sql)よりもネイティブ派生テーブル(NDT)(explore_source)を評価し、優先するよう促してください。エンティティのロールアップやサマリーファクト(例:user_order_facts)を作成する場合、既存の Explore をデータソースとして利用できるか評価します。NDT はコードのドリフトを最小限に抑え、基になる LookML の説明、書式設定、行レベルセキュリティ(RLS)を自動的に引き継ぐため、推奨されます。NDT が複雑すぎる場合や、特定の SQL 機能が必要な場合は、SDT を使用して問題ありません。
3. ベストプラクティス
- 命名: ビュー名とファイル名には
snake_caseを使用します。 - 説明: ビューの目的を説明するうえで役立つ場合は、ビュー自体に説明を追加します(例:「地域別の日次アクティブユーザー数」)。
- 出力形式: ファイルの末尾が改行になるようにします。
4. 関連スキル
- lookml-refinements:
include、リファインメント(+)、Hub & Spoke パターンのロジック。
例
基本ビュー
view: users {
sql_table_name: `project.dataset.users` ;;
dimension: user_id {
primary_key: yes
type: number
sql: ${TABLE}.id ;;
group_label: "IDs"
description: "Unique internal user ID."
}
dimension: email {
type: string
sql: ${TABLE}.email ;;
description: "User's email address."
}
}
拡張ビュー
include: "/views/base/users.view"
view: users_extended {
extends: [users]
dimension: lifetime_value {
type: number
sql: ${TABLE}.ltv ;;
description: "Total lifetime value of the user."
}
}
リファインメント(レイヤリング)
include: "/views/users.view"
view: +users {
label: "All Users (Refined)"
dimension: email {
# Adding a description to an existing field
description: "Primary contact email."
}
}
参考スキル
- 派生テーブル: 標準(SDT)およびネイティブ(NDT)の派生テーブルのパターン/マテリアライゼーション。
コメント
Markdown 対応