【问题标题】:DataFactory convert string (year as 2 digits) to dateDataFactory 将字符串(年份为 2 位)转换为日期
【发布时间】:2020-10-20 10:57:27
【问题描述】:

我目前在 Azure 数据工厂中使用一组 CSV 日志文件,我需要对其进行处理并输入到 SQL 表中。

问题在于某些列包含时间戳,其中年份由 2 位数字表示(而不是完整的 4 位数字年份)。 前任。 01/03/17 22:10:33 的日期格式为MM/dd/yy HH:mm:ss

如何将其转换为日期或将“20”添加到年份? (例如,01/03/17 22:10:33 会变成 01/03/2017 22:10:33)。这在代码中很容易做到,但我不确定如何在 Azure 数据工厂的数据流中做到这一点。

编辑:正如@HimanshuSinha-msft 提到的,必须在解析之前删除撇号才能正常工作。我在数据流中添加了一个额外的步骤:toTimestamp(substring({Column Name},2,length({Column Name})-1), 'MM/dd/yy hh:mm:ss'),它成功了!

【问题讨论】:

    标签: azure datetime azure-data-factory azure-data-factory-2 azure-data-factory-pipeline


    【解决方案1】:

    ADF 数据流完全支持 Java 标准日期/时间格式化程序。在您的情况下,您将按原样转换 toTimestamp() 以排列日期/时间组件,然后转换为您希望使用 toString() 实现的输出字符串:

    toString(toTimestamp('01/03/17 22:10:33', 'MM/dd/yy HH:mm:ss'), 'MM/dd/yyyy HH:mm:ss')

    更多细节:

    https://docs.microsoft.com/en-us/azure/data-factory/data-flow-expression-functions#totimestamp

    https://docs.microsoft.com/en-us/azure/data-factory/concepts-data-flow-expression-builder#convert-to-dates-or-timestamps

    【讨论】:

    • 我尝试使用toTimestamp 函数但结果仍然相同,列的值仍然显示为Null。我在数据流上添加了一个步骤以添加新列并输入以下表达式toTimestamp({Start Date}, "MM/dd/yy HH:mm:ss")
    • 在上面的示例中,您的开始日期有 2 个空格。您是否在格式化程序中考虑了这一点?
    • 是的,我做到了。 csv 上的值也被撇号包围,例如'01/03/17 22:10:33',我什至尝试将格式设置为'MM/dd/yy HH:mm:ss'(在引号之间)。我无法弄清楚发生了什么。我目前尝试使用 1 和 2 个空格,以及带和不带撇号 - 没有一个有效
    • 您可以从 CSV 文件中粘贴示例行吗?
    • 查看数据,我发现日期是单引号,这就是@MarkKromerMSFT 建议不起作用的原因,我做了一个小测试,如果我们可以删除单引号,它会正常工作.我尝试了下面的表达式并且它确实有效,请让我们知道它是如何进行的。 toTimestamp(substring(Somedate,2,length(Somedate)-1), 'MM/dd/yy hh:mm:ss')
    【解决方案2】:

    这对我来说是个阻碍,但试试这个-

    1. 去水槽
    2. 映射
    3. 点击输出格式
    4. 选择您希望将数据存储到接收器中的数据格式或时间格式。

    选择您想要的任何已定义格式。

    【讨论】:

      猜你喜欢
      • 2017-03-30
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多