使用数据流创建维度模型的最佳做法
设计维度模型是可以使用数据流执行的最常见任务之一。 本文重点介绍使用数据流创建维度模型的一些最佳做法。
暂存数据流
任何数据集成系统中的一个关键点是减少源操作系统中的读取次数。 在传统的数据集成体系结构中,缩减工作是通过创建一个名为暂存数据库的新数据库来完成的。 暂存数据库的用途是定期从数据源按原样将数据加载到暂存数据库中。
然后,其余的数据集成将使用暂存数据库作为进一步转换的源,并将其转换为维度模型结构。
建议你使用数据流遵循相同的方法。 创建一组只负责按原样从源系统加载数据的数据流(仅适用于所需的表)。 然后,结果会存储在数据流的存储结构(Azure Data Lake Storage 或 Dataverse)中。 此更改可确保源系统中的读取操作最少。
接下来,你可以创建从暂存数据流获取数据的其他数据流。 此方法的优点包括:
- 减少源系统中的读取操作次数,因此将减少源系统的负载。
- 如果使用本地数据源,则减少数据网关的负载。
- 采用数据的中间副本用于对帐用途,以防源系统数据发生更改。
- 使转换数据流与源无关。
该图像着重显示暂存数据流和暂存存储,并显示暂存数据流从数据源访问的数据以及存储在 Cadarvers 或 Azure Data Lake Storage 中的表。 然后,这些表将连同其他数据流一起进行转换,然后作为查询发送出去。
转换数据流
将转换数据流与暂存数据流分离后,转换将独立于源。 如果将源系统迁移到新系统,那么这种分离有用。 在这种情况下,只需更改暂存数据流。 转换数据流可能会正常工作而没有任何问题,因为它们仅源自暂存数据流。
此分离还有助于防止源系统连接缓慢。 转换数据流不需要等待很长时间,即可从源系统获得慢速连接的记录。 暂存数据流已完成该部分,将为转换层准备好数据。
分层体系结构
分层体系结构是在单独的层中执行操作的体系结构。 暂存和转换数据流可以是多层数据流体系结构中的两层。 尝试在层中执行操作可确保所需的维护工作最少。 如果要更改某些内容,只需在其所在的层中对其进行更改即可。 其他层应都继续正常工作。
下图显示了数据流的多层体系结构,其中的表以后会在 Power BI 语义模型中使用。
尽可能多地使用计算表
在另一个数据流中使用某个数据流的结果时,将使用计算表的概念,这意味着将从“已处理和存储的”表中获取数据。 数据流中可能发生同样的事情。 从另一个表引用表时,你可以使用计算表。 当你在多个表中需要完成一组转换(称为常见转换)时,这非常有用。
在上图中,计算表直接从源中获取数据。 但是,在暂存和转换数据流的体系结构中,计算表可能源自暂存数据流。
生成星型架构
最佳维度模型是一种星型架构模型,该模型具有维度和事实数据表,旨在最大程度减少从模型查询数据所需的时间量,并使数据可视化工具易于理解。
将操作系统的相同布局中的数据引入 BI 系统并不理想。 应重新建模数据表。 某些表应采用保留描述性信息的维度表的形式。 某些表应采用用于保留可聚合数据的事实数据表的形式。 要构成的事实数据表和维度表的最佳布局是星型架构。 详细信息:了解星型架构和 Power BI 的重要性
对维度使用唯一键值
生成维度表时,请确保每个维度表都有一个键。 此键可确保维度之间没有多对多(或换句话说为“弱”)关系。 你可以通过应用某些转换来创建键,以确保列或列组合在维度中返回唯一行。 然后,可以将该列组合标记为数据流内表中的键。
对大型事实数据表执行增量刷新
事实数据表始终是维度模型中最大的表。 建议减少为这些表传输的行数。 如果你有很大的事实数据表,请确保对该表使用增量刷新。 可以在 Power BI 语义模型和数据流表中完成增量刷新。
你可以使用增量刷新来仅刷新部分(已更改的部分)数据。 有多种选项可用于选择要刷新的数据部分以及要保留哪个部分。 详细信息:对 Power BI 数据流使用增量刷新
进行引用以创建维度和事实数据表
在源系统中,通常有一个表,用于在数据仓库中生成事实数据表和维度表。 这些表非常适合计算表和中间数据流。 该过程的常见部分(例如数据清理以及删除额外的行和列)可以执行一次。 通过使用这些操作的输出中的引用,可以生成维度和事实数据表。 此方法将使用计算表进行常见转换。