【问题标题】:ADF to Snowflake incremental load and streamsADF 到 Snowflake 增量加载和流
【发布时间】:2021-12-01 16:02:18
【问题描述】:

我正在尝试以增量方式将文件从我的 Azure blob 加载到 Snowflake 表。之后在雪花中,我将流放在该表上并将数据加载到目标表中。

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

在这个管道中,我只是在我的接收器中添加了 3 个额外的列

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

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

【问题讨论】:

  • 您能否对“增量”的含义进行一些澄清,以及哪里出了问题?您只想从 Azure Blob 加载新文件,但它正在拾取所有文件?您想插入新记录,但作业在插入之前被截断?您想将 upsert 加载到表中,但它只运行插入?
  • 我想将新插入的记录以及任何更新的记录从 Azure Blob 加载到 Snowflake 表。是的,它只是加载插入。如果您想了解更多信息,请告诉我
  • 你好@Coder1990,我的回答有帮助吗?

标签: azure snowflake-cloud-data-platform azure-data-factory incremental-load


【解决方案1】:

您可以通过在 Update 方法下的 sink settings 中选择 Allow Upsert 来实现。

以下是我的复制详细信息:

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

  1. 源文件 - 增量数据

a) 此文件包含临时表中存在的记录 (StateCode = 'AK' & 'CA'),因此这 2 条记录应在Flag 中带有新值的临时表。

b) 其他 2 条记录(StateCode = ‘FL’ & ‘AZ’)应插入到临时表中。

  1. 数据流源设置:

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

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

a) 在条件下,仅当 唯一列(在我的情况下为 StateCode)不为空时,您才可以向 upsert 提及行.

  1. sink 转换添加到 AlterRow,并将 Snowflake 阶段表作为接收器数据集。

a) 在 sink settings 中,选择 Update method as Allow upsert 并提供 Key (unique) 列,根据它应该在 sink 表中发生 Upsert。 p>

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

a) 由于 StateCode AK & CA 已存在于表中,因此只有这些行的其他列值(flag 和 modified_date)更新

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

【讨论】:

    猜你喜欢
    • 2021-05-01
    • 1970-01-01
    • 2020-05-29
    • 2022-08-02
    • 2019-01-26
    • 1970-01-01
    • 2020-03-08
    • 2022-01-14
    • 1970-01-01
    相关资源
    最近更新 更多