【问题标题】:Passing the Dataflow Parameter to Sink Key column in Azure Data factory将数据流参数传递到 Azure 数据工厂中的接收键列
【发布时间】:2021-08-17 17:30:23
【问题描述】:

我想实现 SCD 类型 2 逻辑,但使用配置表中的动态表和动态键字段,我有一个挑战将数据流参数作为接收键列传递给我的 Alter Row 活动,它不采用参数值并且总是将错误作为无效的键列名称给出,我尝试在接收键列中为表达式构建器选择 Dataflow 参数,并尝试从改变行转换传递值,并且我也在 select 语句中使用参数命名了该字段,任何帮助或建议都非常感谢

请戳下图 Sample How I wanted to Pass Dynamic Values in Sink Mapping Trying to Give the Dynamic Value to Key Value

【问题讨论】:

  • 在 Sink Key Columns 属性中,您是否点击了“自定义表达式”以便输入参数和表达式?
  • 是的,我添加了参数,但我得到了错误,因为在接收端映射它只有当我有固定名称而不是使用 $name 我想传递动态名称时才有效,即使在接收端映射
  • 你能分享数据流脚本吗?您可以转到数据流设计器右上角的脚本按钮并将脚本粘贴到此处吗?
  • 嗨,马克感谢您的帮助,我添加了图像,我想如何传递接收器的动态值(对于接收器转换:关键字段名称应该是动态的,并且输入和输出端口也需要是动态的,以便在运行时决定名称,因为我将它用于从 Config Table 读取的多个表)提前非常感谢,所以请让我知道如何使用 Sink 实现它,(在上面的示例中它不是请允许我查看所附图片)

标签: azure azure-data-factory


【解决方案1】:

您选择了“列列表”,因此 ADF 正在您的目标表中查找一个字面称为“$TargetPK1Parameter”的列。

将选择器更改为“自定义表达式”并输入字符串数组参数。参数可以是一个字符串数组,代表目标表中键列的名称。

它应该看起来像这样:

【讨论】:

  • 感谢 Iain 我会尝试一下,因为之前我们使用 TSQL 无法做到
【解决方案2】:

在尝试将参数化的复合键作为更新方法的一部分传递给接收器时,我遇到了类似的问题。现在,这允许我完全参数化我的数据流,并且它可以处理复合键和单列键。

我的配置表中的数据如下所示:

UpsertKeyColumn = DOMNAME,DDLANGUAGE,AS4LOCAL,VALPOS,AS4VERS

在数据流中设置了一个参数值

Upsert_Key_Column = @item().UpsertKeyColumn

最后,在 Sink 设置中,为 Key columns 选择 Custom Expression 并输入以下表达式 - split($upsert_key_column,',')

【讨论】:

  • 感谢 IainAskham 的回复,我一定会尝试的,因为我们已经过了使用 TSQL 的最后期限
猜你喜欢
  • 1970-01-01
  • 2022-01-12
  • 2021-12-06
  • 1970-01-01
  • 2021-05-08
  • 2021-07-22
  • 1970-01-01
  • 2022-08-04
  • 2023-02-12
相关资源
最近更新 更多