Table of Contents

Best Practice Analyzer

Tabular Editor 2.8.1 起,Best Practice Analyzer 迎来了一次重大改版。

你首先会注意到,Tabular Editor 现在会在主界面中直接报告最佳实践问题的数量:

图片

每当模型发生更改时,Best Practice Analyzer 都会在后台扫描你的模型以查找问题。 你可以在“文件 > 偏好设置”中禁用此功能。

单击该链接(或按 F10)会打开全新改进后的 Best Practice Analyzer 界面:

图片

如果你在早期版本中用过 Best Practice Analyzer,首先会注意到它的界面已被彻底重新设计,占用的屏幕空间更少。 这样一来,你可以将该窗口停靠在屏幕的一侧,同时将主窗口放在另一侧,从而同时使用两者。

Best Practice Analyzer 窗口会持续列出适用于你的模型的所有有效规则,以及违反各项规则的对象。 在列表中的任意位置右键单击,或使用窗口顶部工具栏上的按钮,即可执行以下操作:

  • 管理规则...:这会打开“管理规则”界面,下面会详细介绍。 也可以通过主界面的“工具 > 管理 BPA 规则...”菜单打开此界面。
  • 转到对象...:选择此选项,或在列表中双击某个对象,都会在主界面中定位到该对象。
  • 忽略项/多项:在列表中选择一个或多个对象并使用此选项后,系统会为所选对象添加一条注释,指示 Best Practice Analyzer 后续忽略这些对象。 如果你误忽略了某个对象,可以切换窗口顶部的“显示已忽略”按钮。 这样你就可以取消忽略之前已被忽略的对象。
  • 忽略规则:如果你已在列表中选择了一条或多条规则,此选项会在模型级别添加一条注释,用于指示应始终忽略所选规则。 同样,通过切换“显示已忽略项”按钮,你也可以取消对规则的忽略。
  • 生成修复脚本:对于可轻松修复的规则(即只需在对象上设置单个属性即可解决问题),将启用此选项。 点击后,会将一段 C# Script 复制到你的剪贴板。 随后,你可以将该脚本粘贴到 Tabular Editor 的 Advanced Scripting 区域,在执行以应用修复之前先进行检查。
  • 应用修复:如上所述,此选项同样适用于可轻松修复的规则。 脚本不会被复制到剪贴板,而是会立即执行。

管理最佳实践规则

如果你需要添加、删除或修改应用于模型的规则,这里也提供了一个全新的 UI 来完成这些操作。 你可以通过点击 Best Practice Analyzer 窗口左上角的按钮打开它,也可以在主窗口中使用“Tools > Manage BPA Rules...”菜单项。

图片

该界面包含两个列表:上方列表显示当前已加载的规则集。 在此列表中选择某个规则集后,下方列表会显示该规则集中定义的所有规则。 默认会显示三个规则集:

  • 当前模型中的规则:顾名思义,这是在当前模型内定义的规则集。 这些规则定义作为注释存储在 Model 对象上。
  • 本地用户规则:这些规则存储在 %AppData%\..\Local\TabularEditor3\BPARules.json 文件(Tabular Editor 3)或 %AppData%\..\Local\TabularEditor\BPARules.json 文件(Tabular Editor 2)中。 这些规则将应用于当前登录的 Windows 用户在 Tabular Editor 中加载的所有模型。
  • 本地计算机上的规则:这些规则存储在 %ProgramData%\TabularEditor\BPARules.json 中。 这些规则将应用于当前计算机上在 Tabular Editor 中加载的所有模型。

如果多个规则集中都包含同一条规则(按 ID),则优先级从上到下。也就是说,模型内定义的规则优先于本地计算机上定义的同 ID 规则。 这样你就可以覆盖现有规则,例如将模型特定的约定考虑在内。

在列表顶部,你会看到一个名为 (Effective rules) 的特殊集合。 选择此集合后,你将看到实际应用于当前已加载模型的规则列表,并会按前文所述遵循相同 ID 规则的优先级。 下方列表会指明每条规则所属的规则集。 此外,如果在优先级更高的集合中存在 ID 相同的规则,你会注意到该规则的名称会显示为删除线:

image

添加更多规则集

Tabular Editor 2.8.1 的一项新功能是,可以在模型中包含来自其他来源的规则。 例如,如果你的某个规则文件位于网络共享上,现在可以将该文件作为规则集包含到当前模型中。 如果你对该文件所在位置具有写入权限,还可以添加/修改/删除该文件中的规则。 以这种方式添加的规则集,其优先级高于模型内定义的规则。 如果你添加了多个此类规则集,可以通过上移和下移来控制它们之间的优先级。

点击“添加...”按钮,将新规则集添加到模型中。 这会提供以下选项:

image

  • 创建新规则文件:这会在指定位置创建一个新的空 .json 文件,之后你可以向其中添加规则。 选择文件时,注意有一个使用相对文件路径的选项。 如果你希望将规则文件存储在与当前模型相同的 repository 中,这会很有用。 但要注意,相对规则文件引用仅在模型从磁盘加载时才有效(因为从 Analysis Services 实例加载模型时不存在工作目录)。
  • 包含本地规则文件:如果你已经有一个包含规则的 .json 文件,并想把它包含到模型中,就用这个选项。 同样,你也可以使用相对文件路径;如果该文件位于靠近模型元数据的位置,这会更方便。 如果该文件位于网络共享上(或者更一般地说,位于与当前已加载模型元数据所在位置不同的驱动器上),则只能使用绝对路径来包含它。
  • 从 URL 包含规则文件:此选项允许你指定一个 HTTP/HTTPS URL,该 URL 应返回有效的规则定义(JSON)。 如果你想包含来自在线来源的规则,这会很有用,例如来自 BestPracticeRules GitHub 站点标准 BPA 规则。 注意,从在线来源添加的规则集将是只读的。

修改规则集中的规则

屏幕下半部分允许你在当前选中的规则集中添加、编辑、克隆和删除规则,前提是你对该规则集的存储位置具有写入权限。 此外,“移动到...”按钮允许你将所选规则移动或复制到另一个规则集,从而更轻松地管理多个规则集。

规则说明占位符

相比之前版本有一个小改进:现在你可以在最佳实践规则的说明中使用以下占位符值。 这将提供更多可自定义的说明,并在“最佳实践”界面中以工具提示的形式显示:

  • %object% 返回当前对象的完全限定 DAX 引用(如适用)
  • %objectname% 仅返回当前对象的名称
  • %objecttype% 返回当前对象的类型

图片