【问题标题】:Passing timestamp to azure mapping data flow将时间戳传递给 azure 映射数据流
【发布时间】:2020-08-13 07:38:15
【问题描述】:

我正在尝试将上次修改的日期和时间作为参数传递给我的数据流。谁能告诉我将它作为参数传递的正确方法是什么。我已经尝试了多种方法,例如。从活动传递 utcnow() 会引发错误,提示找不到文件,而直接从数据流传递可以正常工作。 我发现使用数据流表达式适用于 ucnow() 而管道表达式失败。

【问题讨论】:

  • 数据流参数是否定义为时间戳?管道并不真正支持日期/时间类型,因此 utcnow() 管道表达式返回一个字符串。您可能希望将字符串传递到数据流中并在那里进行转换。
  • @JoelCochran 感谢您的建议。我发现管道时间戳格式与数据流时间戳不同。因此,只有通过将时间戳作为字符串从管道传递并将其作为数据流中的字符串接收并将其转换为所需的数据流时间戳格式来使用它。
  • @JoelCochran 看来你已经想通了。您能否总结一下您的解决方案或想法作为答案?对于其他人的参考非常有用。非常感谢!
  • @JayGong - 完成:-)
  • @JoelCochran 干得好!

标签: azure azure-data-factory azure-data-lake dataflow


【解决方案1】:

Pipeline 表达式语言与数据流表达式语言不同,但更受限制。虽然 Data Flow 支持更丰富的变量类型系统,但 Pipelines 仅支持 String、Boolean 和 Array 类型。由于没有 Date 或 Timestamp 类型,管道表达式语言中的日期函数返回字符串:

如果您想使用管道中的 UTC 值而不是数据流,您需要在数据流上定义一个 string 参数:

然后将 utcnow() 字符串作为管道表达式传递给数据流:

在表达式中,使用utcnow()函数获取字符串值:

在数据流中,使用派生列将其转换为所需的类型:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-21
    • 2020-01-05
    • 2017-06-19
    • 1970-01-01
    • 1970-01-01
    • 2021-03-13
    • 1970-01-01
    • 2021-07-28
    相关资源
    最近更新 更多