mcpField
L
lookml-fields

lookml-fields

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

lookml-fields について

LookMLのフィールド型とSQL生成ルールをまとめた、Lookerのデータモデルを作成・保守する人向けのリファレンススキルです。ディメンション、メジャー、フィルター、パラメーター、ディメンショングループの用途と参照ルールを説明します。

主な機能

  1. 015種類のLookMLフィールドを解説
  2. 02型ごとのSQL生成方法を説明
  3. 03フィールド間の参照制約を提示
  4. 04時間ディメンショングループの例

活用シーン

  1. 01新規フィールドの型を選ぶ
  2. 02メジャー式の参照方法を確認
  3. 03日付フィールドの時間粒度を設定

インストール

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

$npx skills add https://github.com/looker-open-source/looker-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 句(テンプレート化されたフィルター経由)。
パラメーター動的ロジックのためのユーザー入力を受け取ります。直接のフェーズなし(値を他のフィールドに挿入します)。
ディメンショングループ時間ベースのディメンション(type: time)を生成するか、日付の差分や期間(type: duration)を計算します。SELECT 句および GROUP BY 句(複数の列)。

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

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

ディメンション:「何を」
  • 役割:集計の前に、列に対して行う生の変換を定義します。
  • SQL コンテキスト:式は GROUP BY 句に直接配置されます。
  • 入力:テーブル列(${TABLE}.col)、他のディメンション(${dim})、または生の SQL 関数を参照できます。
  • 例:
    dimension: full_name {
      sql: CONCAT(${first_name}, ' ', ${last_name}) ;;
    }
    -- 生成結果: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} ;; 
    }
    -- 生成結果: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}) ;;
    }
    
ディメンショングループ:「時間生成と日付差分の計算」
  • 役割: type: time の場合、基準となるタイムスタンプから複数の時間枠を生成します。type: duration の場合、2つのタイムスタンプ間の経過時間や日付の差分(例:month_since_signup、datediff)を計算します。
  • SQL コンテキスト: 列に対してキャスト、切り捨て、または日付差分の計算を行います。
  • 入力: 標準化されたタイムスタンプ/日付の式、または開始/終了タイムスタンプ列。
  • 例:
    dimension_group: created {
      type: time
      timeframes: [date, month]
      sql: ${TABLE}.created_at ;;
    }
    -- Generates:
    -- created_date -> CAST(table.created_at AS DATE)
    -- created_month -> DATE_TRUNC(table.created_at, MONTH)
    

3. 違いのまとめ

種類sql の参照先...Measure を参照できますか?集計済みですか?
ディメンション列、その他のディメンションいいえいいえ
Measure(集計)列、ディメンションいいえはい
Measure(数値)その他の Measureはいはい(すでに集計済み)
フィルター(ほとんど使用しません)いいえ該当なし
パラメーター(なし)いいえ該当なし

リファレンススキル

フィールドの種類ごとの詳細な基準については、以下を参照してください。

コメント