【问题标题】:Can you make a Azure Data Factory data flow for updating data using a foreign key?是否可以创建 Azure 数据工厂数据流以使用外键更新数据?
【发布时间】:2022-01-15 12:03:48
【问题描述】:

我尝试了几种方法,似乎被阻止了。

这不过是一个日常的 ETL 流程。我想要做的是使用 ADF 并将 csv 作为我的数据集之一。使用该数据,我需要更新 CosmosDb 容器中的文档,这是此流程中的另一个数据集。我的数据真的很简单。

  • ForeignId 字符串
  • Value1 整数
  • Value2 整数
  • Value3 整数

Cosmos 文档都包含这些数据项以及更多内容。 ForeignId 在容器中是唯一的,是分区键。文档是一个复合数据集,实际上有 3 个其他 id 字段,这些字段将被视为原始系统中的 PK。

当您尝试对此数据使用数据流 UPDATE 时,验证会抱怨您必须映射“Id”才能使用 UPDATE。我的文档中有一个 ID,但它只与我的收藏有关,与旧的外部系统无关。我别无选择,只能使用 ForeignId。我使用 UPSERT 让它流动,但是,即使我在数据集之间映射了 ForeignId,我得到的是插入而不是更新。

我是否遗漏了什么,或者 ADF 没有设置为基于名为“id”的数据项以外的任何内容同步数据?除了直截了当的方法之外,还有其他选择 ADF 吗?我读到您可以将更新放入查找任务中,但这似乎是一种 hack。

【问题讨论】:

    标签: azure azure-data-factory


    【解决方案1】:

    CosmosDB 需要行 ID 来知道要更新哪一行。它与 ADF 无关。

    要在 ADF 中进行这项工作,请在您的数据流中添加一个 Exists 转换,以查看该行是否已存在于您的集合中。使用传入源数据中的外键列与现有集合进行检查。

    如果找到具有该外键的行,则您可以为元数据提供相应的 ID,从而将其包含在您的接收器中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-02
      • 2022-01-24
      • 2019-06-08
      • 1970-01-01
      • 2021-06-09
      • 1970-01-01
      相关资源
      最近更新 更多