如果正在开发的数据流越来越复杂,可以执行以下作来改进原始设计。
将其分解为多个数据流
不要在一个数据流中进行所有操作。 不仅单个复杂的数据流使数据转换过程更长,也使得理解和重用数据流更加困难。 通过将不同数据流中的表,甚至将一个表拆分为多个数据流,即可将数据流分解为多个数据流。 可以使用计算表或链接表的概念在一个数据流中生成转换的一部分,并在其他数据流中重复使用它。
将数据转换数据流与暂存/提取数据流分离
某些数据流仅用于提取数据(即 暂存数据流),而其他数据流仅用于转换数据,不仅有助于创建多层体系结构,还有助于降低数据流的复杂性。 某些步骤只是从数据源中提取数据,例如获取数据、导航和数据类型更改。 通过分离临时数据流和转换数据流,可以简化数据流的开发。
图像显示将数据从数据源提取到暂存数据流阶段,其中表格分别存储在 Dataverse 或 Azure Data Lake Storage 中。 然后,数据将被转移到转换数据流中,在那里数据被转化为数据仓库结构。 然后,数据将移动到语义模型。
使用自定义函数
自定义函数在必须对来自不同源的多个查询执行一定数量的步骤的情况下非常有用。 可以通过 Power Query 编辑器中的图形界面或使用 M 脚本开发自定义函数。 函数可以根据需要在数据流中的多个表格中重复使用。
使用自定义函数可以帮助维护一个源代码版本,从而避免代码重复。 因此,维护 Power Query 转换逻辑和整个数据流要容易得多。 有关详细信息,请转到以下博客文章: 在 Power BI Desktop 中轻松使用自定义函数。
注释
有时可能会收到一条通知,告知使用自定义函数刷新数据流需要高级容量。 可以忽略此消息并重新打开数据流编辑器。 这通常可以解决问题,除非函数引用了“已启用负载”查询。
将查询放入文件夹中
将文件夹用于查询有助于将相关查询组合在一起。 开发数据流时,花点时间在有意义的文件夹中排列查询。 使用此方法,可以在将来更轻松地查找查询并维护代码。
使用计算表
计算表不仅使数据流更易于理解,而且还可提供更好的性能。 在使用计算表时,引用该表的其他表将从一个“已处理和存储”的表中获取数据。 转换更简单、更快。
利用增强的计算引擎
在 Power BI 管理门户中开发的数据流时,为确保使用增强的计算引擎,应先在计算表中执行联接和筛选转换,然后再进行其他类型的转换。
将多个步骤分解为多个查询
很难在一个表中记录大量步骤。 相反,应将大量步骤分解为多个表。 对于其他查询,可以使用 “启用加载 ”并禁用它们(如果它们是中间查询),并且仅通过数据流加载最终表。 如果有多个查询,每个查询中的步骤较小,则使用依赖项关系图并跟踪每个查询进行进一步调查会更容易,而不是在一个查询中挖掘数百个步骤。
为查询和步骤添加属性
文档是轻松维护代码的关键。 在 Power Query 中,可以将属性添加到表中和步骤中。 将鼠标悬停在该查询或步骤上时,在属性中添加的文本显示为工具提示。 本文档可帮助你将来维护模型。 通过浏览表格或步骤,你可以了解发生了什么,而不用重新思考和回忆你在该步骤中所做的事情。
确保容量位于同一区域
数据流目前不支持多个国家或地区。 高级容量必须与 Power BI 租户位于同一区域。
将本地源与云源分开
建议为每种源类型创建单独的数据流,例如本地、云、SQL Server、Spark 和 Dynamics 365。 按源类型分隔数据流有助于快速进行故障排除,并在刷新数据流时避免内部限制。
根据表格所需的计划刷新,分开数据流
如果某个销售事务表每小时在源系统中更新一次,并且每周更新一个产品映射表,请使用不同的数据刷新计划将这两个表分成两个数据流。
避免为同一工作区中的链接表计划刷新
如果您经常无法访问包含链接表的数据流,可能是因为同一工作区中存在相关的依赖数据流在刷新时被锁定。 此类锁定提供事务准确性,并确保两个数据流都成功刷新,但可以阻止你编辑。
如果为链接的数据流设置了单独的计划,则可以不必要地刷新数据流,并阻止编辑数据流。 有两个建议可避免此问题:
- 不要在与源数据流相同的工作区中为链接数据流设置刷新计划。
- 如果要单独配置刷新计划并想要避免锁定行为,请将数据流移动到单独的工作区。