此内容由人工智能翻译,尚未经过人工编辑审核。图像和图表保持其原始语言。
要点速览
- 从获取正确且形态合适的数据开始,构建你的 语义模型。
- 你可以用多种方式转换数据,包括 Fabric 和 Power BI 中的多种工具。
- 在数据进入语义模型之前,尽量用合适的工具完成大规模转换。
- 当你想使用 Tabular Editor 3 在语义模型中连接并转换数据时,可以选择三种方式之一。
- 第一种方式:使用表导入向导连接到受支持的数据源。
- 第二种方式:使用 Power Query,并将“高级编辑器”中的代码复制到 Tabular Editor。
- 第三种方式:将 Tabular Editor 作为 Power BI Desktop 的外部工具使用。

一个 语义模型 通过对象、计算和逻辑为数据赋予含义,用来表示现实世界的业务流程,例如销售或定价。 语义模型是Microsoft Fabric 和 Power BI 的核心组件 ;也是端到端解决方案中你需要管理的最重要项目类型之一,因为终端用户主要通过它与数据交互。 因此,了解如何高效地设计、构建和部署高质量的语义模型很重要,这样你才能满足业务数据需求!
在本系列中,我们提供一些建议和指导,帮助你高效构建语义模型。 在 上一篇文章中,我们介绍了在开始构建模型之前如何评估数据,以便识别并解决潜在问题。 这一步同样有助于弄清楚需要做哪些转换,才能把数据整理成适合构建优质模型的形态。
在本文中,我们将展示在使用 Tabular Editor 或 Power BI Desktop 构建模型时,如何连接并转换数据。
注意构建满足数据需求的语义模型,有很多种同样可行的方法。 本系列介绍其中一种做法,并基于我们的经验分享一些技巧和最佳实践。 |
选择你的数据转换方式
要为语义模型转换数据,你在 Fabric 和 Power BI 中有很多选择。 根据你的需求、可用资源、技能和偏好的工作流,你可以选择不同的工具;没有所谓“最佳”方案。 通常认为,一个良好的实践是尽量把这些转换尽可能前移到上游,并在确有必要时才放到下游(这一范式常被称为 “Roche’s maxim”)。 原因在于:下游转换往往更难维护,也可能带来性能影响。
在转换数据时,你的目标是创建最贴合模型预期用途的数据结构。 通常,这意味着创建一个包含清晰事实表与维度表的星型架构;但模型的具体结构会因你的需求以及你想实现的目标而不同。
使用 Fabric 和 Power BI 转换数据的方法
在 Fabric 和 Power BI 中,你都有不同工具可用于转换数据。 下图展示了一些常见工具示例。
图 1: 在 Fabric 和 Power BI 中,你可以在不同位置转换数据。 了解各选项及其适用场景很重要,包括优缺点和成本影响 (即 Fabric Capacity Units; CUs)。 对症选工具;当有更好的上游工具可用时,不要把所有转换都放在语义模型里完成。 同样,遵循 Roche’s maxim of data transformation:能上移就上移,必要时才下沉到下游。
下面是一些示例,展示你可以如何用 Fabric 里提供的不同项目来转换数据。 通常,这些工具会从数据源摄取数据、进行转换,并将结果落地到语义模型可以访问的位置。 你可能会使用其中一种或多种工具来转换数据。
注意由于本系列聚焦语义模型,下面仅列出可用选项的简要清单;本文不展开解释各方法的差异与考量。 这也会因你的需求、技能和具体情况而有很大差异。 如需更详细信息,请点击以下链接查看 Microsoft 文档。 |
- Dataflow Gen2 (Power Query)
下面是一些使用 Power BI 转换数据的示例:
- Power BI 数据流 (Gen1 数据流; Power Query)
- Power BI Datamarts (预览版; Power Query)
- 语义模型 (Power Query 或 DAX)
TIP如果你将在 Power Query 中转换数据,请阅读 Microsoft 文档中的 使用 Power Query 的最佳实践。 本文还提供了一些有用的建议,帮助提升查询性能。 |
一般来说,你最好在数据到达语义模型之前,尽量用合适的工具完成这些繁重的转换工作。 当你计划构建使用 Direct Lake(仅限 Fabric)或 DirectQuery 存储模式的语义模型时,这一点至关重要。 不过,如果你要构建导入模式下的模型,仍然常常需要在 Power Query 中做一些轻度到中度的转换。 此类转换示例包括:
-
减少明细粒度,例如限制行数、列数或小数精度(这些都是减小导入模式下的模型大小并提升性能的关键步骤)。
-
添加用于 Report 的表,例如度量值表、日期表或选择表。
-
添加用于 Report 的列,例如用于排序、分箱或以特定方式对数据分组。
在本文的后续内容中,我们将展示如何使用 Tabular Editor、Power BI Desktop,或两者结合,在 Power Query 中连接并转换数据。
在语义模型中连接并转换数据
根据你的模型和数据,在 Power Query 中为语义模型进行转换完全可行。 在你开始转换数据之前,需要提醒你:在语义模型中执行大量转换可能会带来问题。 例如,与其他上游工具相比,这种方法在数据量更大、转换更复杂时,可扩展性就不那么理想。
警告Power Query 中的某些转换可能会让数据刷新变慢,并让你的模型更难维护。 例如:
我们会在后续的一篇文章《优化你的语义模型》中进一步讨论这类注意事项。
|
要在 Tabular Editor 中构建模型的同时,在 Power Query 中连接并转换数据,你可以选择以下三种不同的方法。
方法 1:使用表导入向导连接到受支持的数据源
对于 SQL Endpoint 或 Dataflow 等受支持的数据源,Tabular Editor 中的表导入向导会为你创建对象,并生成 Power Query 代码。 在以下情况下用这种方法:
-
你要连接的是受支持的数据源。
-
你不需要使用 Power Query 用户界面(UI)。
-
你不需要在用 Power Query / M 转换数据时实时查看数据。
图 2:你可以对受支持的数据源使用表导入向导,Tabular Editor 会自动为你生成 Power Query(M 代码)以及表/列。
要用这种方法,按下面步骤操作:
-
在“模型”菜单中,选择“导入表”。
-
选择“使用隐式数据源(凭据由 Fabric/Power BI 服务管理)”。
-
从列表中选择你的数据源。
-
输入相应的连接信息并进行身份验证,以连接到你的数据源。
-
选择要从中导入元数据的源表/视图。 在选择表或视图时,你可以选择特定列,甚至预览数据。
-
按向导继续并确认;Tabular Editor 会自动将对象添加到模型中。
-
选择表分区以查看(并调整)Power Query(M 代码)。
使用这种方法时,你可以把转换下推到上游工具,然后从受支持的数据源(例如 Fabric OneLake)连接到已转换的数据。 如果你是少数擅长编写 M 代码的人之一,还可以直接在 Tabular Editor 中进一步调整分区表达式。
不过,如果你连接的是这个表导入向导不支持的数据源,例如 SharePoint,该怎么办? 或者,如果你还想做更多转换,并且需要 Power Query UI 呢?
方法 2:使用 Power Query,并把 高级编辑器 的代码复制到 Tabular Editor
你可以在 Power BI Desktop、Excel 或 Dataflow 的 Power Query 用户界面中连接到数据源,然后等准备好了,再把 M 代码复制到 Tabular Editor。 通过这种方法,你可以使用 Power Query UI 并在转换时看到数据;但需要手动在工具之间切换。
在以下情况下用这种方法:
-
你要连接的是不受支持的数据源。
-
你熟悉并愿意使用 Power Query 的操作体验。
-
你有理由更喜欢在“断开连接模式”下处理模型元数据,而不是保持在“连接模式”下持续连接,或像在 Power BI Desktop 中那样导入数据。
要用这种方法,按下面步骤操作:
-
像平时一样,在你选择的客户端工具中连接到数据源。
-
像平时一样,使用 Power Query 转换数据。
-
准备就绪后,打开“高级编辑器”并复制代码。
-
在 Tabular Editor 中,新建一个表。
-
选择表分区,并粘贴你复制的 M 代码。
-
保存更改,然后右键单击该表,选择“更新表架构”。 Tabular Editor 会根据你的代码自动创建列并设置其数据类型。
注意用这种方法时,我们建议你把转换内容单独存成一个 .pbip 文件,并和语义模型放在同一个 repository 里。 这样,你就可以设置自动化逻辑,将未来 .pbip 查询中的更改复制到模型元数据中,从而更便于维护。 |
方法 3:将 Tabular Editor 作为 Power BI Desktop 的外部工具使用
你也可以继续在 Power BI Desktop 中开发模型,并保存和部署 Power BI 项目(.pbip)文件。 在这种场景下,你既能享受 Tabular Editor 的效率提升,也能保留 Power BI 用户界面在管理查询和其他功能上的便利。
在以下情况下使用此方法:
-
你最习惯使用 Power BI Desktop 来开发和发布语义模型。
-
你使用的是 Tabular Editor 3 桌面版许可证。
要使用这种方法,请按以下步骤操作:
-
像平时一样,在 Power BI Desktop 中连接到并转换你的数据源。
-
连接到数据后,你可以根据需要结合使用 Power BI Desktop 和 Tabular Editor 来继续开发。 你可以从“外部工具”功能区打开 Tabular Editor 2 或 3。
注意在 Tabular Editor 中,你可以在三个位置通过表达式编辑器查看和编辑 Power Query:
|
如有需要,添加静态表或计算表格
很多语义模型除了从数据源添加的表之外,还包含额外的表。 这些表通常在模型里或连接到它的 Report 里承担特定功能。 这些表的示例包括:
-
度量值表:用于将度量值与其他对象分开排序和组织的表。
-
日期表:使用 Power Query 或 DAX 创建、用于时间智能的表(当数据源中没有合适的日期表时)。
-
上次刷新:对于导入存储模式的模型,一个包含标量值的表,用于记录最近一次成功刷新模型的日期和时间。
-
静态表:用于多种目的的表,通常用于实现特定 Report 功能,例如 动态度量值选择。
通常,在创建新模型时,你需要添加同一批静态表。 所以,用 Tabular Editor 中的 C# Script 把这个流程自动化,是个不错的选择。 例如,这个脚本会创建度量值表,这个脚本会创建日期表。
注意如果你使用的是 Direct Lake 或 DirectQuery 存储模式,则需要在数据源中添加这些表。 |
当你完成以上步骤,并在模型中具备所有表后,就可以继续创建关系、编写 DAX,并添加额外的业务逻辑。
总结
在收集完语义模型的需求后,下一步就是连接到数据。 在进行这一步之前,你需要确保数据已经适合建模;如果还没有,请先处理数据质量问题,并用你选择的合适工具完成转换。 如果你需要在 Power Query 中转换数据,那么在 Tabular Editor、Power BI Desktop,或两者结合的开发方式下,你都有多种可选方案来完成这件事。
在本系列的下一篇文章中,我们将分享如何使用 Tabular Editor 和 Power BI Desktop 在语义模型中创建、测试并管理关系。
