你能使用外键创建Azure数据工厂数据流来更新数据吗



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

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

  • ForeignId字符串
  • Value1 int
  • Value2 int
  • 值3 int

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

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

是否有我丢失的东西,或者ADF是否未设置为基于名为"的数据项以外的任何东西同步数据;id";?除了直接进近,ADF还有其他选择吗?我读到过,你可以将更新放入查找任务中,但这似乎是一个破解。

CosmosDB需要行ID来知道要更新哪一行。这与民主同盟军无关。

若要在ADF中执行此操作,请在数据流中添加Exists转换,以查看该行是否已存在于集合中。根据现有集合使用传入源数据中的外键列进行检查。

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

最新更新