mcpField
L
lookml-view

lookml-view

github.com/looker-open-source数据与数据库43151 次安装2 周前更新
代码仓库

关于 lookml-view

用于创建和维护 LookML 视图的规范技能,涵盖文件组织、主键、扩展和细化,并指导在适用时选择原生派生表。

主要功能

  1. 01规定视图文件命名与组织方式
  2. 02要求明确表名和主键
  3. 03指导视图扩展与细化
  4. 04适用时建议使用原生派生表
  5. 05规范命名与描述

适用场景

  1. 01创建标准 LookML 视图
  2. 02在现有视图上分层修改
  3. 03在多个视图间复用逻辑
  4. 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. 核心规范

  1. sql_table_name:标准视图必须设置。默认值不可靠,请明确指定。
  2. 主键:
    • 约定:将主键放在第一个维度,便于阅读。
    • 必须设置 primary_key: yes — 原因:这是 对称聚合 的关键,Looker 会用它来正确处理 JOIN 行重复问题(防止多表 JOIN 查询中的扇出)。
  3. 细化视图:在视图名称前使用 +(例如 view: +users),以细化现有视图,而不修改原始文件。
  4. 扩展视图:使用 extends 复用其他视图中的逻辑。
  5. 派生表:在可行时,评估并优先考虑原生派生表(NDT)(explore_source),而不是 SQL 派生表(sql)。创建实体汇总或摘要事实表(例如 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