【问题标题】:How to implement scd2 in snowflake tables using Azure Data Factory如何使用 Azure 数据工厂在雪花表中实现 scd2
【发布时间】:2020-09-29 17:26:10
【问题描述】:

我想在雪花表中实现 scd2。我的源表和目标表仅存在于雪花中。整个过程必须使用 Azure 数据工厂完成。 我浏览了 azure 提供的使用数据流实现 scd2 的文档,但是当我尝试为雪花连接创建数据集时,它显示为禁用。

有什么方法或任何文档可以让我看到使用雪花表在 adf 中创建 SCD2 的步骤。

谢谢 蝮蛇

【问题讨论】:

  • 我猜 SCD2 你的意思是慢慢改变尺寸类型 2?据我所知,Azure 数据工厂不支持您,您需要编写适合您数据的自定义 SQL。
  • 是的,我的意思是慢慢改变维度。实际上我对 adf 和 sql 都很陌生。我们迫切需要实施这一点。您能否分享一些可以使用一些自定义 sql 实现的链接,或者如果您有任何 sql sn-ps 那就太好了。

标签: azure-data-factory azure-data-factory-2 scd2 snowflake-cloud-data-platform


【解决方案1】:

ADF 中的 SCD2 可以通过数据流以图形方式构建和管理。目前用于 ADF 的 Snowflake 连接器还不能直接处理数据流。因此,目前,您需要在 ADF 管道中使用 Copy Activity,并在 Blob 或 ADLS 中暂存维度数据,然后使用暂存数据在数据流中构建 SCD2 逻辑。

您的管道将如下所示:

[复制 Activity Snowflake-to-Blob] -> [数据流 SCD2 逻辑 Blob-to-Blob] -> [复制 Activity Blob-to-Snowkflake]

我们正在努力从数据流中直接连接到 Snowflake,并希望尽快实现。

【讨论】:

  • 谢谢马克...看起来很有希望。我试试看
  • 嗨@MarkKromer 我尝试了这种方法,但我面临的问题是每次复制前我都必须在雪花中截断表格。有什么办法可以避免这种情况。由于所有更新的数据都在必须推送到雪花的 csv 文件中。如果我不截断,则会导致重复。
  • 还没有。我们正在努力直接完成数据流的雪花连接器,这将消除对暂存的需要,然后您可以使用 Alter Row 进行更新、更新插入等。
  • 感谢@MarkKromer,这对我们未来的用例肯定会很有帮助。是否有任何预期的发布日期,以便至少我可以向我的客户保证将来我们可以直接使用它。
  • @VipendraSingh 微软昨天发布了对 Snowflake 映射数据流的支持; techcommunity.microsoft.com/t5/azure-data-factory/…。如果这对您来说是一个悬而未决的问题,可能值得一看。
【解决方案2】:

如果您的源表和目标表都在 Snowflake 中,您可以使用 Snowflake Streams 来执行此操作。 https://community.snowflake.com/s/article/Building-a-Type-2-Slowly-Changing-Dimension-in-Snowflake-Using-Streams-and-Tasks-Part-1 有一篇博文对此进行了更详细的介绍

不过,简而言之,如果你有一个源表source,你可以像这样在上面放一个流:

create or replace stream source_changes on table source;

这将捕获对源表所做的所有更改。然后,您可以在该流上构建一个视图,确定您希望如何将这些更改馈送到 SCD 表中。 (博客文章使用案例语句将开始和结束日期放在视图的每一行中)。

从那里,您可以使用 Snowflake Task 自动执行从流加载到 SCD 的过程,仅当流实际发生更改时。

【讨论】:

  • 是的,实际上我的团队正在研究两种方法。一种方法是通过流,另一种方法是使用 adf。所以我必须从 adf 开始。请让我知道是否有任何方法可以使用数据流从 adf 执行此操作。
猜你喜欢
  • 2021-09-02
  • 2020-09-29
  • 2021-11-24
  • 2022-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多