此内容由人工智能翻译,尚未经过人工编辑审核。图像和图表保持其原始语言。
要点速览
- Best Practice Analyzer 是一个用于改进语义模型的简单工具。 Tabular Editor 创建的 Best Practice Analyzer(BPA)也是 Fabric 笔记本中提供的实用工具,可扫描你的语义模型,提升质量与性能。
- BPA 规则开箱即用,查找和使用都很方便。 你可以从多个地方获取并使用 BPA 规则。 它们内置于 Tabular Editor 3 和 Fabric 中,你也可以在 GitHub 上找到它们。
- 在 Power BI 中使用 BPA,Tabular Editor 3 提供最佳体验。 Tabular Editor 中的 BPA 具有可操作性。 这意味着你可以忽略不适用于你的模型的规则,并修复 BPA 规则识别出的相关问题。
- 你应该创建自己的 BPA 规则。 通用的 BPA 规则很有帮助,但当你编写贴合自身模型与流程的规则时,才能从 BPA 中获得最大价值。 过去这是一项很复杂的工作,但现在借助 AI 工具容易多了。
此摘要由作者撰写,并非由 AI 生成。
<!--more-->提示
截至 2026 年一月,Tabular Editor 现已为所有安装版本内置 BPA 规则。
什么是 Best Practice Analyzer(或 BPA)?
在开发语义模型时,你需要定期检查,以确保其质量。 当你在模型的整个生命周期内持续管理和变更它时,这一点尤其重要。 有一个工具可以让你几乎不费力地做到这一点:Best Practice Analyzer,简称 BPA。BPA 是由 Tabular Editor 创建的工具,后来也被应用于 Microsoft Fabric 笔记本。 它会扫描你的模型,检查是否遵循一些通用的最佳实践规则,从而帮助你把模型做得更好。
这些规则可能针对常见错误,例如使用 Auto Date/Time,这会显著增大模型体积,或没有为 DAX 度量值设置格式字符串。 你也可以设置更复杂的规则,用于提示 DAX 或 M 中的反模式,这些反模式可能导致 Report 和数据刷新变慢。 当你使用 BPA 时,一旦违反这些规则,它就会提醒你,以便你修复问题并改进模型。
BPA 有几个好处:
- 为你指向清晰、业界常用的改进方式,覆盖组织结构、性能和体积等方面。
- 你可以一次扫描多个模型;当数据建模较为分散时,这有助于团队或大型组织落实质量保证与质量控制(QA/QC)。
- 允许你定义面向组织、团队或模型的自定义规则,让 BPA 更贴合你的实际需求。
由于 BPA 是开源的,你可以在多种工具中使用它,例如:
- Tabular Editor 2: 你可以在 TE2 的 UI 中配置并使用 BPA 规则。
- Tabular Editor CLI: 你可以以编程方式使用 BPA 规则,对语义模型自动执行检查,例如在 CI/CD 过程中。
- Tabular Editor 3: 你可以在 TE3 中使用与 TE2 相同的 BPA 规则。
- Fabric 中的笔记本: Fabric 在 笔记本里提供了一个版本的 BPA,它基于 Tabular Editor 的实现,但使用 Python 而不是 C#。

本文将介绍如何在 Tabular Editor 3 中配置并使用 Best Practice Analyzer,以及如何通过创建自己的规则,在任何场景下都能把它的价值发挥到最大。
获取 BPA 规则
已经有很多由他人创建的 BPA 规则可供使用。 例如,截至 2026 年一月,Tabular Editor 3 已预先加载 BPA 规则。 你也可以在 GitHub repository 中找到 BPA 规则,例如来自 Tabular Editor 团队,以及 Microsoft 的 Fabric Customer Advisory Team (CAT),他们会在客户项目中使用。
要将这些规则加载到 Tabular Editor 中,你只需获取规则的 .json 文件链接(例如来自 GitHub repository)。 或者,你也可以将这些文件下载到本地计算机。 然后,你可以在 BPA 窗口中提供该链接,或上传 BPA 规则文件:

根据你的选择,这些规则可以添加到三个不同的范围:当前模型中的规则、本地用户的规则,以及本地计算机上的规则。 更多信息请参阅我们的文档:管理最佳实践规则 。
注意
如果你从本地规则文件添加 BPA 规则并在导入时遇到问题,请在选择文件时取消勾选“使用相对路径”选项。
Tabular Editor 3 内置的规则或你在网上找到的规则,通常都是标准且经受过验证的,但它们未必适合你的模型。 我们尽量只包含在所有场景和受众中都具有普适性的规则。 用户和组织往往还有自己希望强制执行的具体规范,这时就可以使用自定义 BPA 规则来实现(我们会在本文后面讨论)。
使用 BPA 规则
在 Tabular Editor 中,你可以禁用单条规则,使其不参与扫描。 这样你就可以把规则集精简为你认为真正有用的那些:

在 Tabular Editor 中,BPA 规则是可执行的。 这意味着你可以根据这些规则直接对模型进行操作:要么定位到需要修复的对象并手动修复,要么点击按钮自动修复。 如果规则误报了问题——或者你只是想忽略它—— 你可以选择在该对象上忽略这条规则,系统会在这个模型里记住这个选择。
如果该规则定义了 Fix Expression(这是规则的可选属性),那就只要点一下按钮就能自动修复相应问题。 这是一段 C# 表达式,像脚本一样以编程方式修改模型。 要使用它,在选择一个或多个规则时,只需点击 BPA 窗口顶部的“螺丝刀”按钮。 例如,下面的示例展示了 Tabular Editor 的 Best Practice Analyzer 中的一个 BPA 问题:外键未隐藏;点击螺丝刀会自动隐藏这些列,问题也就不会再出现:

并非所有规则都有 Fix Expression。 如果没有,你可以双击该问题,跳转到对应对象并自行修复。 不过,有些问题可能是假阳性,你未必需要去“修复”。
例如,你可能有一条规则建议禁用 IsAvailableInMdx,在某些情况下这会带来性能提升。 但这样一来,你就无法在“在 Excel 中分析”中使用该字段,因为该功能通过 MDX 进行查询。 因此,你可以忽略这些规则,这意味着除非你选择“显示已忽略项”,否则它们不会出现在 BPA 窗口中:

忽略规则会在对象上设置一个自定义注释,而且很容易“取消忽略”某些内容,或审计任何可能被错误(或无意)忽略的规则。 这意味着你始终可以对 BPA 问题采取行动:要么修复,要么忽略。 因此,BPA 新提示的任何内容都值得你立即关注。
注意
Fabric 笔记本中的 BPA 目前还不支持直接对语义模型执行操作;除非你在新的笔记本中显式指定修复,否则无法在笔记本里忽略规则或自动修复规则。 笔记本也无法识别你在 Tabular Editor 中配置或忽略过的任何规则。
如果你计划在 Fabric 笔记本中使用 BPA,我们确实建议你改造这些笔记本,以便自定义 并 对你的 BPA 规则采取操作。
创建你自己的 BPA 规则并修复表达式;使用 AI 协助
使用 BPA 的最佳方式是创建你自己的规则。 这需要修改现有的 BPA 规则 JSON 文件,以指定新的 BPA 规则表达式 或 Fix Expression。 BPA 规则表达式是一段 C# 表达式,面向一种或多种语义模型对象类型(度量值、表等);当规则被违反时,该表达式计算结果为 true。
你可以在 Tabular Editor 应用中创建 BPA 规则,也可以通过修改 BPA 规则 JSON 文件来创建。 下面展示了在 Tabular Editor 用户界面中选择“新建规则”时的效果示例:

如你所见,BPA 规则要求你在“表达式编辑器”中指定表达式。 你也可以直接在 BPA 规则 JSON 中填写所有这些信息。 下面展示了一个简单的自定义 BPA 规则示例:当语义模型表中的列数超过 12 列时就会提出问题:

但遗憾的是,很少有人会创建自定义 BPA 规则,因为这需要具备 C# 知识。 好在,借助大语言模型(LLM)和像 Claude Code 这样的编码代理,现在用 AI 做这件事已经很简单了。
我们创建并分享了 一个 Best Practice Analyzer skill,你可以将其与 Claude Desktop、Claude Code 或 GitHub Copilot(以及其他工具)等 AI 代理一起使用,让它们知道如何为你创建 BPA 规则。 Skill 是遵循特定格式的简单文本文件,旨在提升智能体在特定任务上的表现。 在这个场景下,这个 Skill 由我们 Tabular Editor 团队设计,使代码智能体能够帮助你审计和管理 BPA 规则,并与你一起提出新规则建议。
如果你使用 Claude Code,可以通过 Kurt Buhler 维护的 Power BI Agentic Development repository 中的 Tabular Editor 插件来安装这些 Skill:
claude plugin marketplace add data-goblin/power-bi-agentic-development
claude plugin install tabular-editor@power-bi-agentic-development
例如,你可以用这个 Skill 来审计你为某个模型配置的现有 BPA 规则。 它可以识别当前应用的完整规则集,以及任何被禁用或被忽略的规则,然后给出修改或新增建议:

在上面的示例中,用户在一个语义模型上询问“审计我设置的 BPA 规则”。 代理会加载该 skill,然后识别已应用的规则。 在这个例子里,编码代理 (Claude Code) 建议新增规则,因为 Power Query 中的合并操作过多可能导致性能问题。
现在,用户只需让代理用正确语法把这条规则添加到语义模型中即可:

这条规则会自动检查你的模型中是否存在任何合并操作,以便人类作者或代理进行复核,并在必要时调整做法。
提示
BPA 规则不仅对语义模型的人类作者有用,对代理同样有用。 这些 BPA 规则可以作为一种方式,在代理修改语义模型时提供自动化反馈,从而帮助确保输出更优。 我们会在后续文章中进一步讨论。
结论
BPA 是 Tabular Editor 中一项很有价值的工具,你可以用它来提升语义模型的质量。 它会扫描你的模型,找出可处理的问题,并支持自动修复或忽略这些问题。 不过,BPA 的最大价值在于:你可以创建自己的自定义规则并修正表达式——这既可以自行完成,也可以借助 AI 智能体的协助。