关于 programmatic-development
这是一份通过代码开发 Power BI 报表和语义模型的参考技能,指导开发者处理 PBIP、PBIR 与 TMDL 的编写、验证、工具选择及部署工作流。
主要功能
- 01PBIP 项目结构指引
- 02PBIR 报表格式与编辑
- 03TMDL 语义模型编写
- 04本地验证参考
- 05部署工具选择
- 06CI/CD 与环境晋级模式
适用场景
- 01用 Python 生成或更新报表页面
- 02以代码编辑语义模型
- 03从 CI 部署 PBIP 项目
- 04在不同环境间晋级 Power BI 内容
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ josiahsiegel/ claude-plugin-marketplace --skill programmatic-development安装后在 Claude Code 中输入/programmatic-development确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/fabric-cicd-recipes.mdpbir-format-deep-dive.mdpbir-schema-reference.mdtom-advanced-patterns.mdtools-and-tabular-editor.md详细介绍
以编程方式开发 Power BI
概述
Power BI 支持通过代码创建和管理报表及语义模型的多种方式。截至 2026 年,规范技术栈如下:
- PBIP(Power BI Project)作为基于文件夹的源格式
- TMDL 作为 PBIP 中的语义模型格式(参见
tmdl-mastery技能) - PBIR(Power BI Enhanced Report Format)作为 PBIP 中的报表格式
- 使用 fabric-cicd(Python)或 Fabric CLI
fab deploy进行部署 - 使用 TOM / .NET SDK 进行高级编程式模型编辑
- 使用 semantic-link-labs 从 Fabric 笔记本编写 Python 脚本
参考索引
详细内容位于 references/。仅加载当前任务所需的内容。
| 主题 | 文件 | 加载时机 |
|---|---|---|
| PBIR 推出时间线、完整 PBIP 文件夹结构、byPath/byConnection、批注、验证和限制 | references/pbir-format-deep-dive.md | 手动编写 PBIR、调试 definition.pbir、验证生成的 PBIR、了解 2026 年的推出状态 |
| PBIR JSON 架构(视觉对象、页面、报表设置)及 Python 操作示例 | references/pbir-schema-reference.md | 使用 Python 编写 PBIR 脚本:添加页面、批量更新视觉对象、在报表之间复制 |
| TOM/Tabular Editor/fabric-cicd/Fabric CLI/semantic-link/pbi-tools/ALM Toolkit——设置、示例、Desktop 开发者功能 | references/tools-and-tabular-editor.md | 选择工具、部署、编写 TOM 脚本、运行 C# 脚本、配置 Desktop |
| TOM 高级模式(RLS、OLS、分区、透视、翻译、计算组、SP 身份验证) | references/tom-advanced-patterns.md | 编写超出基本度量值/表格编辑范围的复杂 TOM .NET 代码 |
| fabric-cicd 高级方案(多工作区、钩子、GitHub Actions/Azure DevOps 管道、参数模式、故障排除) | references/fabric-cicd-recipes.md | 生产级 CI/CD 工作流、多环境推广、OIDC 联合凭据 |
PBIR - Power BI Enhanced Report Format
PBIR 是 Microsoft 现代、公开文档化、基于文件夹的 JSON 报表格式。它取代了不透明的 report.json 数据块(现称为 PBIR-Legacy),改为每个视觉对象、页面和书签各用一个文件,从而支持真正的 Git 差异比较/合并、代码审查,以及在 VS Code 中进行架构验证的编辑。
当前状态(2026 年 4 月): PBIR 已成为 Service 中新建报表的默认格式。现有 Service 报表正在逐步自动升级。Desktop 在 2026 年 5 月版本发布之前仍需启用预览开关;届时 PBIR 将成为 Desktop 的默认格式。PBIP 达到 GA 时,PBIR-Legacy 将被弃用。
有关 2026 年完整的推出时间线、管理员退出选项、Service/Desktop 还原策略、主权云注意事项、完整项目结构、byPath 与 byConnection 示例、批注、自我验证流程和限制,请参阅 references/pbir-format-deep-dive.md。
PBIP 快速结构(仅含要点):
MyProject.pbip # Entry JSON
├── MyProject.Report/
│ ├── definition.pbir # Required entry; uses byPath or byConnection
│ └── definition/ # PBIR folder (one file per page/visual/bookmark)
└── MyProject.SemanticModel/
├── definition.pbism
└── definition/ # TMDL folder
TMDL - Tabular Model Definition Language
TMDL 是一种易于阅读且适合源代码管理的语义模型定义格式。自 2025 年起已达到 GA。如需全面了解 TMDL,包括完整语法参考、所有对象类型、CI/CD 模式和部署工作流,请加载专用的 powerbi-master:tmdl-mastery 技能。
快速示例:
table Sales
measure 'Total Sales' = SUM(Sales[Amount])
formatString: $ #,##0.00
displayFolder: Revenue
partition 'Sales-Partition' = m
mode: import
source =
let
Source = Sql.Database("server", "db"),
Sales = Source{[Schema="dbo",Item="Sales"]}[Data]
in
Sales
column Amount
dataType: decimal
sourceColumn: Amount
formatString: $ #,##0.00
核心工作流
- 选择源格式 — 新项目使用 PBIP(现代格式,采用 TMDL + PBIR);仅当用于 Report Server 或现有 PBIP 之前的项目时,才使用旧版 PBIX。
- 以编程方式编辑 — 使用 VS Code 编辑 PBIR/TMDL JSON;使用 Tabular Editor 编写模型;使用 semantic-link-labs 处理 Fabric 笔记本;使用 TOM .NET 构建自定义应用。
- 本地验证 — 使用 JSON 架构、PBI-InspectorV2、血缘遍历器和 BPA。请参阅
powerbi-master:validation-testing技能。 - 参数化 — 使用
parameter.yml配置特定于环境的 GUID/连接字符串。 - 部署 — 使用
fabric-cicd(Python 库,主要方式)或fab deploy(CLI 封装程序)。两者都使用同一个parameter.yml。首次部署需要在 Fabric 门户中手动输入数据源凭据。 - 比较差异并提升 — 使用 ALM Toolkit 比较架构差异;使用 Fabric 部署管道或脚本化的多工作区部署进行提升。
部署决策矩阵(2026)
| 场景 | 推荐工具 |
|---|---|
| 使用 CI/CD 的 PBIP 项目(GitHub Actions / Azure DevOps) | fabric-cicd(Python) |
| 在本地临时部署 PBIP | fab deploy(Fabric CLI v1.5+) |
| 基于 Fabric 笔记本编辑模型 | semantic-link-labs(sempy_labs) |
| 通过 XMLA 操作纯语义模型 | 通过 Microsoft.AnalysisServices.NetCore.retail.amd64 使用 TOM(.NET) |
| TMDL 文件夹 -> XMLA | Tabular Editor 2 CLI(-D 开关) |
| 仅有旧版 PBIX(没有 PBIP) | pbi-tools |
| 跨环境提升(开发/测试/生产) | Fabric 部署管道(图形界面)或使用 parameter.yml 的 fabric-cicd |
| 比较两个模型的架构差异 | ALM Toolkit |
工具快速选择
| 需求 | 加载参考 | 工具 |
|---|---|---|
| 修改已部署模型中的度量值 | tools-and-tabular-editor.md | TOM 或 semantic-link-labs |
| 跨文件夹自动生成度量值 | tools-and-tabular-editor.md | Tabular Editor C# 脚本 |
| 从 CI 部署 PBIP | fabric-cicd-recipes.md | fabric-cicd + parameter.yml |
| 根据模板生成 PBIR 页面 | pbir-schema-reference.md | Python + JSON 架构验证 |
| 在 .NET 中配置 RLS/OLS | tom-advanced-patterns.md | TOM |
| 提取旧版 PBIX 以比较差异 | tools-and-tabular-editor.md | pbi-tools |
相关技能
powerbi-master:tmdl-mastery-- TMDL 语言和语法的深入参考powerbi-master:validation-testing-- 部署前验证生成的 PBIR / TMDL / DAXpowerbi-master:rest-api-automation-- 当 fabric-cicd 无法满足某种场景需求时,使用原始 Fabric REST API 端点powerbi-master:deployment-admin-- Fabric 部署管道、工作区管理、部署时的 RLSpowerbi-master:fabric-integration-- Direct Lake、OneLake、Lakehouse/Warehouse 集成