【问题标题】:Applying insert or update on aggregated column in ADF Dataflow在 ADF 数据流中的聚合列上应用插入或更新
【发布时间】:2022-02-11 20:04:06
【问题描述】:

我有数据流正在执行一些连接和对列的计数,然后这些列沉入 Azure SQL 表。 Azure SQL 表结构有一个 GUID 作为 ID 列。

我想要的是当计数列中的值发生变化时,它会在 Azure SQL 表中更新。而不是插入。

我在 SQL 中使用此代码使其工作,但我想在 ADF Dataflow 中实现它。我正在使用 Alter Row 表达式 true() 进行更新。在计数方面似乎不起作用。不知道我错在哪里。 如果需要,请要求澄清。

下面是有效的 SQL 代码,我想在 ADF 中实现它。

MERGE [Target] AS [T]
USING [#Temp] AS [S]
ON [T].[Filter] = [S].[Filter]
   AND ISNULL([T].[OrganisationGroup], '') = ISNULL([S].[OrganisationGroup], '')
   AND ISNULL([T].[ItemCatalog], '') = ISNULL([S].[FinancialReference], '')
   AND ISNULL([T].[CIType], '') = ISNULL([S].[CIType], '')
   AND ISNULL([T].[ConfigurationItemTypeName], '') = ISNULL([S].[ConfigurationItemTypeName], '')
   AND ISNULL([T].[Status], '') = ISNULL([S].[Status], '')
  AND ISNULL([T].[Further_Detail], '') = ISNULL([S].[Further_Detail], '')
   AND ISNULL([T].[PartitionKey], '') = ISNULL([S].[PartitionKey], '')
WHEN MATCHED AND [T].[CICount] <> [S].[CICount] THEN
    UPDATE SET [T].[CICount] = [S].[CICount]
WHEN NOT MATCHED BY SOURCE THEN
    DELETE
WHEN NOT MATCHED THEN
    INSERT

【问题讨论】:

  • 有人可以回答吗

标签: sql-server azure-data-factory azure-data-flow


【解决方案1】:

我已经在我的实验室中使用了一些样本数据进行了重现,请查找以下步骤。

SQL表(表tb2)中已有数据:

ADF 数据流:

  1. 将源连接到 输入 数据集。这里我有新记录对比现有的 SQL 数据,所以计数会更新,如果不匹配会插入新记录。

  1. 添加聚合以获取输入记录的计数。

聚合数据预览:

  1. 添加 Alter row 转换以执行 upsert。

更新条件:

and(and(isNull(Name)== false(),isNull(Department)== false()),isNull(Status)== false())

注意:在这里,包括除 count 之外的所有列,因为我们基于 Count 列执行 upsert。

更改行数据预览:

  1. Sink 连接到 SQL 表。在设置中,启用Allow upsert并包含关键列列表。

接收器预览:

  1. 执行后,当计数不匹配并插入新记录时,汇表中的计数会更新现有记录。

【讨论】:

  • 您好,谢谢您的回答。我会试一试。因此,如果添加了新行,它将被插入,对吗?但是如果现有行的计数发生变化,那将会发生变化。通常,在我的情况下,计数取决于状态。如果我的状态从 Active 变为 decommissioned,我也希望它显示出来。
  • 你在吗..? @NiharikaMoola-MT
  • 嗨,是的,通过这种方法可以添加新记录,如果有任何更改,现有记录将被更新。您是否尝试过处理您的数据?
  • 嗨,我做到了。我可以在明天收到新数据时通知您。谢谢
  • 您能解释一下查询在做什么吗?在这种情况下,false 是什么意思等
猜你喜欢
  • 2019-05-27
  • 2022-07-01
  • 2019-12-12
  • 1970-01-01
  • 2016-11-03
  • 1970-01-01
  • 2021-09-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多