TMDL 视图 允许使用 Power BI Desktop 中的 表格模型定义语言(TMDL) 通过新式代码编辑器编写、修改和应用对语义模型对象的更改,从而提高开发效率,并提供对语义模型元数据的完整可见性和控制。
TMDL 视图 提供使用代码进行语义建模的替代体验,而不是图形用户界面(例如 模型视图)。
TMDL 视图具有以下优势:
- 使用丰富的代码编辑器增强开发效率,其中包括搜索和替换、键盘快捷方式、多行编辑等。
- 通过在语义模型开发人员之间轻松编写脚本、共享和重用 TMDL 脚本来提高可重用性。 例如,使用集中式 SharePoint 网站轻松共享可重用的语义模型对象,例如日历表或时间智能计算组。
- 获取更多的控制和透明度,显示所有语义模型对象和属性,并允许更改 Power BI Desktop 用户界面中不可用的项目,如 IsAvailableInMDX 或 DetailRowsDefinition。
启用预览功能
若要使用 TMDL 视图,必须启用预览功能。 在 Power BI Desktop 中,选择 “文件 > 选项和设置> 选项> 预览功能”,然后选择 TMDL 视图旁边的框。
用于 TMDL 的脚本
在 Power BI Desktop 中,选择位于窗口左侧的 TMDL 视图 图标,如下图所示。
当 TMDL 视图打开时,代码编辑器最初为空。 可以通过从 “数据”窗格中 选择对象并将其拖动到代码编辑器来编写任何语义模型对象(如表、度量值或列)的脚本:
使用 TMDL 视图并从“数据”窗格中拖动对象时,Power BI 会将整个对象的元数据编写成 TMDL 脚本,并将其添加到当前选项卡中。如果当前选项卡不为空,则会打开一个新选项卡,以所选对象的 createOrReplace TMDL 脚本形式呈现,如下图所示:
或者,可以在“数据”视图中右键单击某个对象,然后选择“将脚本 TMDL 发送到新选项卡”或“复制到剪贴板”,如下图所示:
小窍门
在将对象编写到 TMDL 视图代码编辑器之前,按 Ctrl 键支持多重选择。
代码编辑器
编写语义模型对象或将 TMDL 脚本粘贴到代码编辑器后,即可使用 TMDL 视图代码编辑器提供的综合代码体验功能。 代码体验功能使你能够浏览模型元数据,或进行修改,这些修改以后可以应用于语义模型。
语义高亮显示
语义突出显示内置于代码编辑器中,通过基于含义将不同颜色应用于代码的各个部分,从而提高可读性。 这种颜色编码可以更轻松地理解 TMDL 代码的结构和功能,如下图所示。
还可以展开或折叠 TMDL 脚本的各个部分,如下图所示:
自动完成
自动完成内置于代码编辑器中,并在键入时提供智能建议。 自动完成可以加快工作流速度,减少错误的可能性,并通过考虑游标位置来动态建议可能的值或属性,从而帮助你了解代码选项。
还可以通过按 Ctrl+Space 在任何位置触发自动完成功能。
工具提示
上下文工具提示在鼠标悬停时显示,提供有关每个 TMDL 对象或属性的信息。
代码操作
当光标位于波浪线或选定文本上时,TMDL 视图会显示一个灯泡图标,指示可用的代码操作,例如生成继承标签或更正属性名称的拼写错误。
代码格式
按 Shift + Alt + F 或单击功能区中的“格式”选项,设置 TMDL 代码的格式。
还可以使用上下文菜单中的“格式选择”选项设置所选文本的格式。
错误诊断
代码编辑器的内置错误诊断通过突出显示代码编辑器中的 TMDL 语言错误来帮助你识别和修复问题,并提供有关如何解决这些问题的详细消息。 此外,“ 问题”窗格中提供了错误摘要,允许轻松导航到代码编辑器中的错误位置,如下图所示。
对语义模型应用更改
准备就绪后,可以选择 “应用 ”按钮以针对语义模型执行 TMDL 脚本,并应用 TMDL 代码更改。
成功后,会显示通知,并将建模更改应用于语义模型。
如果发生故障,将显示错误通知,以显示建模更改未应用于语义模型。 可以通过在通知中选择“ 显示详细信息 ”链接来查看有关错误的详细信息,然后展开“ 输出”窗格 并显示错误详细信息。
注释
TMDL 视图仅修改语义模型元数据,而不会刷新数据或影响报表。 如果更改需要数据刷新(例如更改 PowerQuery 表达式或计算列表达式),则必须手动刷新表或模型才能使更改生效。 此外,重命名 TMDL 视图中的字段可能会中断使用该字段的报表中的视觉对象。
预览对语义模型的更改
通过 TMDL 视图,可以通过在脚本执行前后显示语义模型的预览(显示为 TMDL 代码差异)来预览脚本更改。 从其他源复制脚本时,预览脚本更改特别有用,让你在针对语义模型运行脚本之前评估其影响。
选择 “预览 ”按钮会在打开的选项卡中执行 TMDL 脚本之前和之后显示语义模型的 TMDL 差异。
右侧窗格中会显示一个并排窗口,如下图所示。
红色和绿色框突出显示更改,红色框指示已删除或更改的行,绿色表示新行。
注释
此比较不直接与当前显示的 TMDL 脚本进行比较,而是在执行脚本之前和之后进行全面的语义模型比较。 因此,某些属性的排序方式可能与选项卡中显示的属性不同,并遵循默认 TMDL 属性/对象排序。
预览是只读的,但你可以继续编辑脚本。 若要在更改后刷新预览,请选择 “更新预览 ”按钮,如下图所示。
预览屏幕右上角有一个工具栏,用于启用所有代码差异的导航,使你可以在 内联 或 并排 差异之间切换,查看或隐藏未更改的区域,以及关闭预览视图。
预览对语义模型的更改时,请注意以下几个注意事项:
- TMDL 视图会在每个预览执行时将视图配置重置为默认值。
- 预览仅在有效的 TMDL 更改时运行。 无效的 TMDL 脚本不会执行预览,并在“输出”窗格中显示错误。
TMDL 脚本选项卡
在 TMDL 视图中,可以同时有多个脚本选项卡,其中任何一个都可以重命名或删除。
保存 Power BI Desktop 报表时,TMDL 视图选项卡的内容将保存在报表文件中,以便下次打开 Power BI Desktop 报表文件时可以继续未完成的内容。 保存到 Power BI 项目(PBIP)时,每个脚本选项卡将另存为 \TMDLScripts 文件夹中的 .tmdl 文件,如下图所示。
小窍门
可以在 Visual Studio Code 中打开和编辑 TMDL 脚本,并在重启 Power BI Desktop 后正确重新加载它们。
“问题和输出”窗格显示特定于当前所选和显示的脚本选项卡的错误和消息。 切换到不同的 TMDL 脚本选项卡会刷新这两个窗格,其中包含特定于所选选项卡和当前显示的选项卡的信息。
可以选择“ 清除 ”按钮来清空 “输出 ”窗格消息。
消息仅在当前 Power BI Desktop 会话期间保留,因此重启 Power BI Desktop 会清除所有脚本选项卡的输出消息。
兼容性级别升级提示
Power BI 语义模型的 兼容性级别 决定了可访问的功能。 TMDL 视图允许您添加所有 Analysis Services 对象或属性,即使这些对象或属性在当前兼容级别不可用。 应用需要兼容级别升级的更改时,TMDL 视图会提供一个提示,指示哪些对象或对象需要升级。
使用 TMDL 视图重命名对象
若要在 TMDL 视图中重命名某个对象,必须为该对象的父对象编写或运行脚本。 例如,重命名列需要编写表的脚本,而重命名表需要编写整个语义模型的脚本。 在以下文档中详细了解表格对象模型 层次结构:表格对象模型层次结构。
使用 TMDL 视图,可以使用简单的查找和替换模式高效执行批量重命名。 例如,可以按照以下步骤将所有表列重命名为小写。
打开 TMDL 视图,编写要修改的表的脚本。
按 Ctrl+F 打开“查找和替换”对话框,确保已启用正则表达式选项。
在“查找”和“替换”字段中输入以下模式,然后选择“ 全部替换”。
行动 | 模式/替换 |
---|---|
查找 | (^\s+column\s+)(.+) |
将 | $1\L$2 |
运行 TMDL 脚本以立即将所有表列重命名为小写:
请注意,列名称将与 sourceColumn 属性不同。
语义模型表和 Power Query 查询之间的同步依赖于 sourceColumn,使名称保持独立。 打开 Power Query 编辑器时,它将显示与 sourceColumn 匹配的列名称,而不是模型的列名。 此外,在 sourceColumn 和列名相同之前,在用户界面中重命名列不会自动向查询添加重命名步骤。
TMDL 视图和 Power BI 项目
将工作另存为 Power BI 项目(PBIP)时,你可以以 TMDL 文件的形式访问语义模型定义元数据,从而提供有用的源代码管理和共同开发体验,同时允许你 更改 Power BI Desktop 外部的语义模型。 但是,如果修改 PBIP 中的 TMDL 文件,则必须重启 Power BI Desktop 以重新加载这些更改。 相比之下,TMDL 视图遵循一种脚本化心理模型,使您能够直接高效地应用更改至 Power BI Desktop 中正在编辑的语义模型,无论文件格式是 PBIX 还是 PBIP。
可以无缝集成这两种体验。 例如,可以在 PBIP 中更新 TMDL 定义以快速更改,而无需启动 Power BI Desktop,并在 Power BI Desktop 已打开时利用 TMDL 视图有效地实现语义模型的一系列更改。 这两种方法都提供了丰富且一致的 TMDL 编码体验。
TMDL 视图的常见用例
场景: 我需要重复使用或共享语义模型表及其完整定义,包括列、Power Query 表达式以及按配置排序,以及其他语义模型中的其他人。
解决方案: 使用带有表格的语义模型并打开,然后利用 TMDL 视图对其进行脚本编写。 将脚本复制到其他 Power BI Desktop 窗口,打开 TMDL 视图选项卡并应用该脚本。
场景: 我已命名了前缀为“dim_”或“fact_”的所有表。 我想删除这些前缀,而无需手动更新每个超过 100 个表。
解决方案: 打开 TMDL 视图,编写语义模型的脚本,查找前缀(支持正则表达式),并将其替换为空文本。
场景: 我需要在语义模型中创建透视才能使用 个性化视觉对象功能。 但是,我无法使用 Power BI Desktop 的图形界面创建或编辑它。
解决方案: 打开 TMDL 视图,创建一个新的空选项卡(或使用现有视图中的脚本),然后使用 TMDL 创建或编辑视图。 此方法也适用于缺少图形界面的其他语义模型元数据,例如翻译、详细信息行表达式和其他。
createOrReplace
perspective SalesView
perspectiveTable Sales
perspectiveMeasure 'Sales Amount'
perspectiveMeasure 'Sales Qty'
perspectiveColumn Quantity
perspectiveColumn 'Amount'
场景: 我需要在不触发刷新的情况下修改表的 Power Query 表达式。
解决方案: 编写表脚本、修改 Power Query 表达式并应用更改。 TMDL 视图不需要刷新数据。
场景: 我需要将表的存储模式从 DirectQuery 切换到导入,反之亦然
解决方案: 生成表脚本,更新分区模式并应用更改。
场景: 我需要在进行重大更改之前备份语义模型定义,并在需要时轻松回滚到以前的定义。
解决方案: 为您想要备份的语义模型或特定部分编写脚本,在其他视图中进行更改,然后如果需要,可返回到 TMDL 视图,通过运行保存的脚本来恢复之前的元数据。
注意事项和限制
TMDL 视图目前处于预览状态,因此请记住以下限制:
- 可以使用 TMDL 视图编辑语义模型中的任何对象或属性。 但是,不完整或不正确的修改可能会导致意外行为。 有关这些操作的更多指导,请参阅 模型创作文章。
- 命令面板显示当前不支持的某些命令。
- 在工作区设置初始 Git 集成时,将不包括保存在已发布语义模型中的 TMDL 视图脚本。 在 Fabric Git 集成 文章中了解详细信息。
- 不能编写模型资源管理器组(如度量值、列等)的脚本。
相关内容
以下文章详细介绍了 TMDL 及其用法。