mcpField
S
standardize-naming-conventions

standardize-naming-conventions

github.com/data-goblin数据与数据库1.1k54 次安装今天更新
代码仓库

关于 standardize-naming-conventions

用于审查和统一 TMDL 格式 Power BI 语义模型命名的交互式技能。它帮助模型维护者按业务术语规范表、度量值、列和显示文件夹,并检查跨文件引用及下游报表影响。

主要功能

  1. 01扫描 TMDL 模型命名模式
  2. 02收集业务术语和现有规范
  3. 03变更前审核拟议重命名
  4. 04更新 DAX 与关系引用
  5. 05验证语法及残留引用

适用场景

  1. 01审查语义模型中的命名不一致
  2. 02按业务术语统一指标名称
  3. 03重命名字段并检查模型引用

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/data-goblin/power-bi-agentic-development --skill standardize-naming-conventions

安装后在 Claude Code 中输入/standardize-naming-conventions确认已加载。

附带文件references/naming-rules.md

详细介绍

标准化命名约定

用于审计和标准化以 TMDL 文件形式存储的 Power BI 语义模型中命名约定的交互式工作流。确保表、列、度量值和显示文件夹遵循易读、一致且符合业务需求的命名标准。

主要工作流

阶段 1:发现模型

找到 TMDL 文件。如果上下文中没有明确路径,请向用户询问 .SemanticModel/definition/ 目录的路径。然后扫描模型结构:

# Count tables and get an overview
ls <path>/tables/*.tmdl

读取所有表的 TMDL 文件,全面了解当前的命名模式。重点关注:

  • 表名(检查是否有 DIM_、FACT_ 或其他技术前缀)
  • 度量值名称(检查缩写、编程命名约定和不一致的语法)
  • 列名(检查 CamelCase、snake_case 和缩写)
  • 显示文件夹结构(检查组织方式和一致性)
  • 是否存在说明(/// 注释)
阶段 2:了解业务背景

重要:在理解业务术语之前,不要重命名任何内容。

使用 AskUserQuestion 收集背景信息:

  1. 业务术语:“贵组织对关键指标使用哪些术语?例如,称其为 Revenue、Turnover、Sales 还是 Gross Sales?”
  2. 现有约定:“贵组织是否已有文档记录的命名约定或标准?”
  3. 期间约定:“贵组织通常如何指代以前的期间?(例如,1YP、PY、Prior Year、Last Year)”
  4. 单位约定:“贵组织通常如何在度量值名称中表示单位?(例如,使用括号,如 (%)、(Value)、(Quantity))”
  5. 下游影响:“是否有连接到此模型的下游报表,需要在重命名后重新绑定可视化对象?”

根据用户的业务背景调整命名规则。references/naming-rules.md 中的规则是默认规则——如果用户所在组织已有既定约定,请以其约定为准。

阶段 3:审计并报告

在进行更改之前,生成审计报告。使用 Markdown 表格列出每项建议的重命名:

| Object Type | Current Name | Proposed Name | Issues Found |
|-------------|-------------|---------------|-------------|
| Table | FACT_Invoices | Invoices | Technical prefix |
| Measure | NetSls | Net Sales | CamelCase, abbreviation |
| Column | shp_dt | Ship Date | snake_case, abbreviation |

按问题类型归类:

  • 编程命名约定:CamelCase、snake_case、UPPER_CASE
  • 缩写/首字母缩略词:名称缩短或含义不明
  • 语法不一致:期间、单位或聚合模式不统一
  • 技术前缀:表名中的 DIM_、FACT_、STG_
  • 缺少说明:没有 /// 文档注释的对象
  • 文件夹组织不当:缺少显示文件夹层级,或层级过于扁平

请用户确认或调整建议的重命名,然后再继续。

阶段 4:应用更改

获得用户批准后,编辑 TMDL 文件。针对每个表文件:

  1. 重命名表(如有必要):更改 table 声明
  2. 重命名度量值:更改其声明中的度量值名称。重要:还要在模型的所有表文件中,将内部 DAX 引用按 [Old Name] -> [New Name] 的模式更新
  3. 重命名列:更改其声明中的列名。重要:还要在所有表文件中,将 DAX 引用按 'Table'[Old Column] -> 'Table'[New Column] 的模式更新
  4. 重新组织显示文件夹:添加或重构 displayFolder: 属性
  5. 添加说明:为缺少说明的度量值和列添加 /// 注释
  6. 更新关系引用:检查 relationships.tmdl 中已重命名的表/列

跨文件更新引用至关重要。 重命名度量值或列时,请在整个 definition/ 目录中搜索所有引用:

# Find all references to a renamed measure
rg "OldMeasureName" <path>/definition/tables/
rg "OldMeasureName" <path>/definition/relationships.tmdl
阶段 5:验证

应用更改后,验证以下内容:

  1. 所有 TMDL 文件仍可正确解析(没有语法错误)
  2. 所有文件中都不再存在指向旧名称的孤立引用
  3. 各表的显示文件夹保持一致
  4. 所有可见度量值和列均有说明

最后进行一次搜索,检查是否有遗漏的引用:

# Check for any remaining old names
rg -n "old_name_pattern" <path>/definition/

命名规范规则

请参阅 references/naming-rules.md,了解完整规则集,包括:

  • 易于理解的名称要求
  • 缩写和首字母缩略词规则
  • 技术前缀规则
  • 聚合、单位和周期语法标准
  • 显示文件夹组织模式
  • 度量值名称构造顺序:[Aggregation] [Base Name] [Period] ([Unit])
  • 列命名模式

需要检测的主要反模式

常见问题的速查清单:

反模式规则修正示例
snake_case使用空格net_sales -> Net Sales
CamelCase使用空格NetSales -> Net Sales
UPPER_CASE使用空格TOTAL_COST -> Total Cost
缩写写出全称Del. Mrgn -> Delivery Margin
含义不明的首字母缩略词写出全称TFS -> Total Freight Surcharge
技术前缀移除FACT_Orders -> Orders
周期不一致统一格式LY/PY/Last Year -> 1YP
单位不一致统一格式pct/%/(%) -> (%)
缺少说明添加为所有可见对象添加 /// 文档字符串
文件夹层级扁平组织层级使用带子文件夹的编号层级

对下游报表的影响

**警告:**重命名模型对象会破坏引用这些字段的下游报表可视化对象。重命名后:

  1. 找出所有关联的报表(.pbir 文件或 Power BI Service 报表)
  2. 重新绑定可视化对象,使其使用新的字段名称
  3. 使用 pbir fields replace 或 pbir fields replace-table 修复每个报表;切勿直接编辑报表 JSON

应用重命名前,务必向用户说明这一点。如果存在下游报表,请考虑:

  • 在更改前备份模型
  • 规划重命名后的重新绑定工作
  • 在 Tabular Editor 中使用 C# 脚本批量重命名并重新绑定

其他资源

参考文件
  • references/naming-rules.md —— 完整的命名规范,包含检测模式、反模式表和度量值名称构造顺序
获取文档

如需获取最新的语义模型和 TMDL 参考文档,如果有 microsoft_docs_search + microsoft_docs_fetch(MCP),请使用它们;否则使用 mslearn search + mslearn fetch(CLI)。根据用户的请求进行搜索,并按需执行多次搜索,以确保在继续操作前获得充分的上下文。

评论

支持 Markdown