使用数据流创建维度模型的最佳做法

设计维度模型是可以使用数据流执行的最常见任务之一。 本文重点介绍了使用数据流创建维度模型的一些最佳做法。

临时数据流

任何数据集成系统中的一个关键点是减少源操作系统的读取次数。 在传统的数据集成体系结构中,通过创建名为 暂存数据库的新数据库来完成此缩减。 暂存数据库的目的是定期将数据从数据源 as-is 加载到临时数据库中。

然后,其余的数据集成使用暂存数据库作为进一步转换的源,并将其转换为维度模型结构。

我们建议您使用数据流来遵循相同的方法。 创建一组数据流,负责仅从源系统加载数据 as-is(仅针对所需的表)。 然后,结果存储在数据流的存储结构中(Azure Data Lake Storage 或 Dataverse)。 此次更改确保了源系统的读取操作降至最低。

接下来,可以创建其他数据流,这些数据流从临时数据流中获取数据。 此方法的优点包括:

  • 减少源系统中的读取操作数,并因此减少源系统上的负载。
  • 如果使用本地数据源,则减少数据网关上的负载。
  • 在源系统数据可能发生更改的情况下,保留一个中间副本用于数据校对。
  • 使转换数据流与源无关。

显示暂存数据流时的流的关系图。

强调暂存数据流和暂存存储的图表。 该图显示了通过暂存数据流从数据源访问的数据,以及存储在 Cadavers 或 Azure Data Lake Storage 中的表。 随后,这些表将与其他数据流一起被转换,最终作为查询发送出去。

转换数据流

将转换数据流与暂存数据流分开时,转换独立于源。 如果将源系统迁移到新系统,这种分离将有所帮助。 在这种情况下,只需更改过渡数据流。 由于转换数据流的数据完全来自临时数据流,因此转换过程中不太容易出现错误。

这种分离也有助于应对源系统连接速度缓慢的情况。 转换数据流无需长时间等待以获取通过源系统慢速连接传输的记录。 过渡数据流已经执行了该部分,并且数据已准备好用于转换层。

该图类似于前一张图片,但更强调转换,并且数据正被发送到数据仓库。

分层体系结构

分层体系结构是在单独的层中执行操作的体系结构。 过渡和转换数据流可以是多层数据流体系结构的两层。 尝试在多个层级中执行操作可确保所需的最低维护。 如果要更改某些内容,只需在它所在的层进行更改。 其他所有层都应继续良好运作。

下图显示了数据流的多层体系结构,其中表随后在 Power BI 语义模型中使用。

显示多层体系结构的关系图,其中暂存数据流和转换数据流位于单独的层中。

尽可能多地使用计算表

在另一个数据流中使用数据流的结果时,将使用计算表的概念,这意味着从“已处理和存储的”表获取数据。 数据流中可能发生同样的事情。 当需要从一个表中引用另一个表的数据时,可以使用计算表。 当你在多个表中需要完成的一组转换(称为 常见转换)时,此方法非常有用。

显示从数据源中获取的用于处理常见转换的计算表的图示。

在上图中,计算表直接从源获取数据。 但是,在临时数据流和转换数据流的体系结构中,计算表的数据很可能来源于临时数据流。

图表显示一个源自数据流的计算表,这些数据流用于处理常见转换。

生成星型架构

最佳维度模型是一个星型架构模型,该模型具有维度和事实数据表,旨在最大程度地减少从模型查询数据所需的时间。 星型架构模型还使数据可视化工具易于理解。

将操作系统的相同布局中的数据引入 BI 系统并不理想。 应重新建模数据表。 某些表应采用维度表的形式,该表保留描述性信息。 某些表应采用事实数据表的形式,以保留可聚合数据。 构建事实表和维度表的最佳布局是星型模式。 有关详细信息,请转到 了解星型架构以及 Power BI 的重要性

一个星型架构图,该图显示了维度表包围的事实数据表,其形状为五角星。

对维度使用唯一键值

生成维度表时,请确保为每个维度表都设置一个键。 此键可确保维度之间没有多对多(或换句话说为“弱”)关系。 可以通过应用某些转换来创建键,以确保列或列的组合在维度中返回唯一的行。 然后,可以将列组合标记为数据流中表中的键。

Power Query 转换选项卡的屏幕截图,其中突出显示了“标记为键”选项和表日期列中的键图标。

对大型事实数据表执行增量刷新

事实数据表始终是维度模型中的最大表。 建议减少这些表的传输行数。 如果你有非常大的事实数据表,请确保对该表使用增量刷新。 可以在 Power BI 语义模型中以及数据流表中完成增量刷新。

可以使用增量刷新来仅刷新部分数据,即已更改的部分。 有多种选项可用于选择要刷新的数据部分以及要保留哪些部分。 有关详细信息,请访问将 Power BI 数据流与增量刷新结合使用

数据流的增量刷新设置对话框的屏幕截图。

引用以创建维度表和事实数据表

在源系统中,通常有一个表,用于在数据仓库中生成事实数据表和维度表。 这些表是计算表的理想选择,并且也非常适合用于中间数据流。 该过程的常见部分(例如数据清理和删除额外的行和列)可以执行一次。 通过使用这些操作输出中的引用,您可以生成维度表和事实表。 此方法使用计算表进行常见转换。

显示 Orders 查询的屏幕截图,其中使用引用选项创建了一个名为“Orders 聚合”的新查询。