如何使用 Azure Datafactory v2 填充星型模式

How to populate a star schema using Azure Datafactory v2

我有一些源提要,我想使用 Azure 数据工厂 v2 将数据提取到传统的星型模式数据库(Azure SQL 数据库)以用于 OLAP 目的。

大多数源提要对应一个维度,因此它们映射到我的数据仓库数据库中的模式,除了内部代理键。

然后我有另一个提要,它几乎符合事实 table。那里的许多标识符对应于维度 tables.

的业务键

副本 Activity 的 Azure 数据工厂 v2 文档建议尽可能使用(默认)Bulk Copy API to copy the data in append mode.

所以我的问题是:

  1. 同步我的维度 table 的最佳方法是什么。我不想删除我现有的数据并重新填充它,因为它会破坏我的代理键,我的事实 table 将引用它。我正在考虑使用 upsert 存储过程,它检查该行是否已经存在,并进行更新而不是插入。这是不是会很慢?有没有更好的方法(也许以某种方式使用预复制脚本?)。

  2. 填充事实 table 时,我想查找维度的所有相应 ID(代理键),并在插入数据之前将所有业务键转换为这些 ID .实现这一目标的推荐方法是什么?同样,存储过程可能会做,但恐怕它很慢。有更好的方法吗?

我(和我的一些朋友)知道的最好方法是合并数据。

为此 - 创建一个暂存 table(同一目标服务器上的相同或不同数据库),其结构与源 table + 仅 PK 相同。 因此,ADF 中的过程应分为 2 个步骤:

  1. 截断目标(暂存)table
  2. 将源中的所有数据插入暂存区
  3. 运行 存储过程,其中包含 MERGE 语句和所有必需的逻辑。

采用这种方法,您将保持:

  • 将数据放入分段时的最佳性能table(批量)
  • 更新插入 (update/insert) 目标的最快方法 table
  • 实现复杂业务逻辑的能力
  • 需要时应用 SCD(渐变维度)
  • 减少磁盘操作量

以下 post 可以帮助您理解该过程并构建整个 MERGE 语句:[https://sqlplayer.net/category/bi/data-warehousing/ ]

这是一个很常见的场景,所以你给了我一个新博客的想法 post。谢谢

希望对你有帮助。