ADF 到 Snowflake 增量负载和流

ADF to Snowflake incremental load and streams

我正在尝试将文件从我的 Azure blob 增量加载到 Snowflake table。然后在雪花中,我将流放在 table 上并将数据加载到目标 table.

我无法执行从 Azure 到 Snowflake 的增量加载。我尝试了很多方法但没有用。我附上了我的 2 种不同方式(管道)的图像来做同样的事情。

在这个管道中,我刚刚添加了 3 个额外的列,我想在我的接收器中添加这些列

在此管道中,我尝试创建条件拆分

这两个都没有解决。 请建议我如何解决这个问题。

您可以通过 selecting Allow Upsertsink settings 的 Update 方法下实现。

以下是我的复现详情:

  1. 这是雪花中的暂存table,我正在向其加载增量数据。

  1. 源文件-增量数据

a) 此文件包含暂存 table 中存在的记录(StateCode = 'AK' & 'CA'),因此这 2 条记录应该是 已更新 在暂存 table 中使用 Flag 中的新值。

b) 其他 2 条记录 (StateCode = 'FL' & 'AZ') 应该 inserted into the staging table.

  1. 数据流源设置:

  1. 添加 DerivedColumn 转换以添加不在源文件中但在接收器中的列 modified_date table.

  1. 添加 AlterRow 转换:当您使用 Upsert 方法时,AlterRow 转换是必须包含 upsert 条件。

a) 在条件下,您可以提及 upsert 仅当 unique column(在我的例子中是 StateCode)时的行 不为空.

  1. 使用 Snowflake 阶段 table 作为接收器数据集向 AlterRow 添加 sink 转换。

a) 在sink settings, select Update method as Allow upsert 并提供基于键(唯一)的列Upsert 应该在接收器 table.

中发生

  1. 在您 运行 管道之后,您可以在接收器中看到结果。

a) 由于 StateCode AK & CA 已经存在于 table 中,只有这些行的其他列值(标志 & modified_date)是 已更新.

b) StateCode AZ & FL 未在阶段(接收器)中找到 table 因此,这些行已 插入 .