Power BI 仪表板构建器
将仪表板规范(参见 bi-dashboard-design/references/dashboard-spec.md)转换为可工作的 Power BI 工件。领域知识来自领域技能;布局和样式规则来自 bi-dashboard-design。本技能涵盖 Power BI 特有的内容。
首先选择构建模式
检查可用条件并告知用户你使用的模式:
| 模式 | 适用时机 | 产出内容 |
|---|---|---|
| A. 通过 MCP/CLI 操作实时模型 | Power BI Modeling MCP 服务器(@microsoft/powerbi-modeling-mcp)或 pbi-cli 已连接,并且 Power BI Desktop 已打开模型 | 直接在打开的模型中创建表、关系和度量;报表以 PBIR 文件形式构建 |
| B. PBIP 项目文件 | 可以写入文件但无实时连接 | 生成 .pbip 项目文件夹:<Name>.SemanticModel/definition/*.tmdl 和 <Name>.Report/definition/(PBIR),用户可在 Power BI Desktop 中打开 |
| C. 构建工具包 | 文件或工具均不可用(如仅聊天环境) | 生成 DAX 度量脚本、TMDL 片段、主题 JSON 以及分页构建指南,供开发人员手动执行 |
优先选择模式 A,其次选择模式 B。在模式 B 中,提醒用户启用 PBIP 保存选项以及在 Power BI Desktop 预览功能中启用“使用 TMDL 格式存储语义模型”(如果其版本仍将这些功能标记为预览)。
工作流
- 读取规范和领域指标文件。 你创建的每个度量必须与领域技能的
<domain-skill>/references/metrics.md中的定义完全一致。 - 建模星型模式(
references/tmdl-patterns.md):- 每个粒度一个事实表;维度在事实表之间保持一致。
- 一个专用的
Date表标记为日期表,连续,覆盖所有事实日期,若领域使用财政日历则包含财政列。 - 从维度到事实表的单向一对多关系。仅在附有书面理由时才使用双向关系。角色扮演日期(如发票日期、到期日期、付款日期):一个活动关系,其他为非活动关系,并在度量中使用
USERELATIONSHIP激活。 - 隐藏外键以及被度量替换的原始数值列;对键、ID、年月数字设置
summarizeBy: none。 - 对月份名称以及桶标签(如账龄、区间)设置排序依据列。
- 编写度量(
references/dax-patterns.md):一个_Measures表,按主题使用显示文件夹(如01 Revenue、02 Margin),每个度量包含格式字符串和描述。先构建基础度量,再构建比率度量,然后是时间智能度量,最后是显示帮助度量(变化百分比、箭头、状态颜色)。 - 构建报表页(
references/report-pbir.md):将每个规范组件映射到可视化对象,在 1280×720 画布上按网格映射放置,应用来自bi-dashboard-design/references/theme-tokens.md的主题,添加钻取页面和一个重置书签。 - 安全性: 如果规范包含
row_level,则创建 RLS 角色,在相关维度上使用 DAX 筛选器,并记录如何在服务中分配成员。 - 验证: 运行
references/dax-patterns.md#verification中的 DAX 检查(总计与原始数据匹配、时间智能返回最新期间的值、没有空白的 KPI),然后运行bi-dashboard-design验收清单。报告你无法验证的内容。
网格映射(1280 × 720 画布)
- 边距 16 px;可用宽度 1248 px;12 列,每列 88 px,列间距 16 px。
- 列跨度
c→ 宽度c*88 + (c-1)*16px;x =16 + col_index*104。 - 一个高度单位 = 56 px,间距 16 px(标题行约 64 px)。
- 长页面:对于 L1/L2 层级,优先使用第二页而非垂直滚动;L3 详情页可使用更高的画布(1280 × 1440)来显示表格。
可视化映射
| 规范组件 | Power BI 可视化对象 | 备注 |
|---|---|---|
| kpi_card | 卡片(新式)/ KPI | 使用参考标签进行比较;通过度量设置条件颜色 |
| trend_line | 折线图 | 目标作为第二度量或常量线;通过相对日期筛选器或度量窗口显示最近 13 个月 |
| ranked_bar | 簇状柱形图 | 如果需要,通过动态分段度量实现 Top N 筛选 + “其他” |
| variance_bar | 基于方差度量的簇状柱形图 | 根据 Var 符号 × 方向设置颜色规则 |
| waterfall | 瀑布图 | 细分字段 = 驱动维度 |
| stacked_bar | 100% 堆叠柱形图 | |
| matrix | 矩阵 | 行层次结构,值 Actual/Budget/Var/Var%,单元格元素显示 Var% |
| exception_table | 表格 | Top N 或严重性筛选,条件图标,启用钻取 |
| aging_buckets | 簇状柱形图 | 按桶排序列排序的桶列 |
| funnel | 漏斗图或柱形图 | 按阶段顺序排序的柱形图更易读 |
| map | Azure Map / 填充地图 | 仅在租户允许地图的情况下使用 |
| slicer | 切片器(下拉或磁贴) | 在页面间同步周期和组织切片器 |
护栏
- 切勿在度量中硬编码日期(如
"2026-10-31");应从数据或参数中推导“最新完整期间”。 - 每个比率必须使用
DIVIDE()。切勿对行之间的比率求平均值。 - 优先使用度量而非计算列;优先使用 Power Query / 仓库转换而非 DAX 计算表。
- 除非规范特别要求并且已经配置了 RLS/OLS,否则不要导入敏感列(如 SSN、患者姓名、薪资详情)。
- 关闭自动日期/时间功能;它会膨胀模型并与日期表冲突。
参考文件
references/tmdl-patterns.md– 表的 TMDL 语法、列、关系、日期表、角色。在模式 A/B 中阅读。references/dax-patterns.md– 可复用的 DAX:比率、时间智能、半累加快照、账龄桶、Top N + 其他、显示帮助、验证查询。references/report-pbir.md– PBIR 文件夹布局、可视化对象 JSON 要点、钻取、书签以及模式 C 的构建工作表格式。