mcpField
L
lookml-fields

lookml-fields

github.com/lkrdev数据与数据库1656 次安装22 周前更新
代码仓库

关于 lookml-fields

lookml-fields 是一项参考技能,说明 LookML 字段类型及其 sql 参数如何影响生成的 SQL,面向编写数据模型的人员。它区分维度、度量、筛选器、参数和维度组的用途与规则。

主要功能

  1. 01说明五种 LookML 字段类型
  2. 02介绍各类型的 sql 行为
  3. 03解释聚合与度量引用规则
  4. 04展示模板筛选器用法
  5. 05说明参数与 Liquid 变量
  6. 06介绍维度组中的时间粒度

适用场景

  1. 01为模型定义选择字段类型
  2. 02检查 LookML 字段生成的 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}) ;;
    }
    -- 生成: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}) ;;
    }
    
维度组:“时间生成器”
  • 作用:定义源时间戳或日期列。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 引用……可以引用度量吗?是否已聚合?
维度列、其他维度否否
度量(聚合)列、维度否是
度量(数值)其他度量是是(已聚合)
筛选器(很少使用)否不适用
参数(无)否不适用
值格式(无)否不适用

参考指南

有关特定字段类型的详细规范,请参阅:

  • 维度:命名、标签和类型特定规则。
  • 度量:聚合类型、筛选器和格式。
  • 筛选器和参数:模板化筛选器和用户输入。
  • 维度组:时间范围和间隔。
  • 值格式:命名格式和自定义货币/数字格式。

评论

支持 Markdown