mcpField
L
lookml-fields

lookml-fields

github.com/lkrdevデータ・データベース1656 回インストール22 週間前に更新
リポジトリ

lookml-fields について

lookml-fieldsは、LookMLのフィールド型とsqlパラメーターが生成SQLに与える影響を解説するリファレンススキルです。データモデルを記述する人向けに、ディメンション、メジャー、フィルター、パラメーター、ディメンショングループを区別します。

主な機能

  1. 015種類のLookMLフィールド型を解説
  2. 02型ごとのsqlの動作を説明
  3. 03集計とメジャー参照の規則
  4. 04テンプレートフィルターの使い方
  5. 05パラメーターとLiquid変数の説明
  6. 06ディメンショングループの時間粒度

活用シーン

  1. 01モデル定義に使うフィールド型の選択
  2. 02LookMLフィールドから生成されるSQLの確認
  3. 03パラメーターによる動的ロジックの構築
  4. 04時間ベースのディメンションの定義

インストール

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

$npx skills add https://github.com/lkrdev/lookml_skills --skill lookml-fields

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
dimension_group.md
dimension.md
filter_parameter.md
measure.md
value_format.md

詳細

手順

1. フィールドタイプの概要

LookML のフィールドは、データモデルを構成する基本要素です。各タイプは、SQL の生成においてそれぞれ特定の役割を果たします。

フィールドタイプ目的SQL 生成フェーズ
ディメンションデータ(属性)を表します。結果をグループ化します。SELECT 句と GROUP BY 句。
メジャーデータ(指標)を集計します。結果を計算します。SELECT 句(集計を伴います)。
フィルター条件に基づいてデータを絞り込みます。WHERE 句または HAVING 句(テンプレートフィルター経由)。
パラメーター動的なロジックのためのユーザー入力を受け取ります。直接はなし(他のフィールドに値を挿入します)。
ディメンショングループ時間に基づくディメンションのセットを生成します。SELECT 句と GROUP BY 句(複数の列)。

2. sql パラメーターの役割

sql パラメーターの動作は、フィールドタイプによって厳密に異なります。

ディメンション:「何を」
  • 役割:集計の前に、列に適用する未集計の変換を定義します。
  • SQL コンテキスト:式は GROUP BY 句に直接配置されます。
  • 入力:テーブル列(${TABLE}.col)、他のディメンション(${dim})、または生の SQL 関数を参照できます。
  • 例:
    dimension: full_name {
      sql: CONCAT(${first_name}, ' ', ${last_name}) ;;
    }
    -- 生成される SQL:CONCAT(table.first_name, ' ', table.last_name)
    
メジャー:「どれだけ」
  • 役割:集計対象の値、または他の集計を伴う計算を定義します。
  • SQL コンテキスト:式は集計関数の内側(例:SUM(sql))に配置されるか、type: number の場合は単独の計算式になります。
  • 入力:
    • type: sum/avg/min/max の場合:ディメンションまたは列を参照します。
    • type: number の場合:他のメジャーを参照します。
    • type: count の場合:sql は無視されます(常に COUNT(*) または COUNT(primary_key) になります)。
  • 例:
    measure: total_profit {
      type: sum
      sql: ${sale_price} - ${cost} ;; 
    }
    -- 生成される SQL:SUM(sale_price - cost)
    
フィルター:「どれを」
  • 役割:通常、派生テーブルまたは sql_always_where で使用するテンプレートフィルターの条件ロジックを定義します。
  • SQL コンテキスト:現代的な LookML では、filter フィールドの sql パラメーターが直接使用されることはほとんどありません。代わりに、フィルターへの入力値を {% condition %} タグ内で使用します。
  • ベストプラクティス:filter フィールドが必要なのか、それとも parameter と dimension の組み合わせだけでよいのかを判断します。
  • 例(テンプレートフィルター):
    filter: date_filter { type: date }
    -- 派生テーブルの SQL での使用例:
    -- WHERE {% condition date_filter %} created_at {% endcondition %}
    
パラメーター:「ユーザー入力」
  • 役割:SQL 自体は生成しません。他のフィールドに挿入するユーザー選択値を保持します。
  • SQL コンテキスト:ディメンション、メジャー、または派生テーブル内で Liquid 変数({% parameter name %})を使ってアクセスします。
  • 入力:ユーザーが UI のリストから値を選択するか、値を入力します。
  • 例:
    parameter: timeframe_selector {
      type: unquoted
      allowed_value: { value: "month" }
      allowed_value: { value: "year" }
    }
    dimension: dynamic_date {
      sql: DATE_TRUNC({% parameter timeframe_selector %}, ${created_raw}) ;;
    }
    
ディメンショングループ:「時間の生成」
  • 役割:ソースとなるタイムスタンプ列または日付列を定義します。その後 Looker が、timeframes リストに基づいて複数のディメンションフィールドを生成します。
  • SQL コンテキスト:各期間の形式に合わせて、ソース列をキャストおよび切り捨てます。
  • 入力:標準化されたタイムスタンプまたは日付の式である必要があります。
  • 例:
    dimension_group: created {
      type: time
      timeframes: [date, month]
      sql: ${TABLE}.created_at ;;
    }
    -- 生成される項目:
    -- created_date -> CAST(table.created_at AS DATE)
    -- created_month -> DATE_TRUNC(table.created_at, MONTH)
    

3. 違いの概要

種類sql が参照するものメジャーを参照可能か集計済みか
ディメンション列、その他のディメンションいいえいいえ
メジャー(集計)列、ディメンションいいえはい
メジャー(数値)その他のメジャーはいはい(すでに集計済み)
フィルター(ほとんど使用しません)いいえ該当なし
パラメーター(なし)いいえ該当なし
値の形式(なし)いいえ該当なし

参照スキル

各フィールドタイプの詳細な規則については、以下を参照してください。

コメント