【问题标题】:Azure Data Factory - Can we use local variables inside derived column in the data flow?Azure 数据工厂 - 我们可以在数据流的派生列中使用局部变量吗?
【发布时间】:2021-05-08 08:04:19
【问题描述】:

专家,

我有一个简单的要求,我需要将变量的值存储在目标 SQL 表(接收器)的列中。

这就是我正在做的事情:

  1. 创建了一个新管道并创建了一个变量“createDate”,其值为“@utcNow”
  2. 我创建了一个“数据流”任务,在其中配置了我的源(一个简单的 CSV 文件)并添加了一个“派生列”任务,因为我想存储数据加载到目标表中的日期李>
  3. 在我的“派生列”任务中,我添加了一个新列“der_createDate”,但是,我不知道如何将“createDate”变量的值分配给这个派生列,我尝试了几个表达式,例如 - @ variables('createDate'),但是,表达式验证失败。

如何在任何“数据流”中使用在管道中创建的变量的值?甚至可能吗?我已经在可迭代对象甚至“复制数据”任务中看到了几个变量的用例,但是,我正在使用数据流并且想要引用我在管道中创建的那些局部变量。让我知道你的建议。

【问题讨论】:

  • 您必须使用变量createDate 来存储@utcnow 值吗?您可以在数据流中通过expression生成时间戳。
  • 嗨@PythonRookie,如果我的回答对您有帮助,您可以接受它作为答案(单击答案旁边的复选标记将其从灰色切换为已填充。)。这对其他社区成员可能是有益的。非常感谢!

标签: azure variables azure-data-factory


【解决方案1】:

数据流不支持变量。您必须将此变量的值作为参数(createDate)传递到数据流中并将其引用为 $createDate

【讨论】:

    【解决方案2】:
    1. 我们可以在管道中声明一个变量createDate

    2.在数据流内部我们可以声明一个参数parameter1,并临时分配双引号。

    1. 然后在管道中,选择Pipeline expression,添加动态值@variables('createDate')。所以我们可以将createDate 的值赋给parameter1

    2. DerivedColumn1活动中,我们可以生成一个值为parameter1的新列。数据预览可能有问题,但调试结果是正确的。因为此列将在运行时分配。

    3. 调试结果如下:

    【讨论】:

    • 谢谢约瑟夫,与此类似,我还有一些其他列需要捕获 - 例如管道运行 ID、用户名和正在处理的文件名
    • 所以我们可以在数据流中使用参数(createDate)。当我回到桌面时,我将向您展示一个示例。
    • 嗨@PythonRookie,我已经更新了我的答案。如果我理解错了,请纠正我。
    猜你喜欢
    • 2021-10-03
    • 1970-01-01
    • 2020-07-23
    • 1970-01-01
    • 1970-01-01
    • 2023-02-07
    • 1970-01-01
    • 2021-12-26
    • 2023-04-03
    相关资源
    最近更新 更多