【问题标题】:How to check date format in Azure Data Factory如何在 Azure 数据工厂中检查日期格式
【发布时间】:2021-02-05 09:50:04
【问题描述】:

我正在创建一个管道,其中源是 csv 文件,接收器是 SQL Server。

CSV 文件中的日期列可能有类似的值

12/31/2020
10162018
20201017
31/12/1982
1982/12/31

我没有找到检查日期格式的功能。如何检查格式并将上述值转换​​为yyyy-MM-dd 格式。

【问题讨论】:

    标签: azure-data-factory date-format derived-column


    【解决方案1】:

    您可以在复制活动的映射标签中进行配置。可以指定日期时间格式,但它只支持一种格式类型。如果您在示例中混合了多种格式,那么它将无法正常工作。

    一种选择是将列作为 nvarchar 提取到临时表中。然后在另一个复制活动中使用自定义选择语句来检测列格式并根据需要转换日期。您应该能够在您的 SELECT 中从临时表中使用 CASE SQL 语句来执行此操作。

    仅供参考:数据类型映射

    https://docs.microsoft.com/en-us/azure/data-factory/copy-activity-schema-and-type-mapping#data-type-mapping

    【讨论】:

      【解决方案2】:

      解决方法由HimanshuSinha-msft给出

      在映射数据流的派生列中使用表达式生成器解决了问题。

      coalesce(toDate(Somedate,'MM/dd/yyyy'),toDate(Somedate,'yyyy/MM/dd'),toDate(Somedate,'dd/MM/yyyy'),toDate(Somedate,'MMddyyyy'),toDate(Somedate,'yyyyddMM'),toDate(Somedate,'MMddyyyy'),toDate(Somedate,'yyyyMMdd'))
      

      【讨论】:

        【解决方案3】:

        这个合并函数答案实际上并不能解决问题。它只是摆脱了错误。有很多日期以多种格式有效。例如:“2/1/2020” (mm/dd/yyyy) 和“1/2/2020” (dd/mm/yyyy)。上一个答案只是消除了错误,但是您在下游的分析将非常不正确。

        您需要对哪种日期格式最适合传入流进行聚合分析,并将逻辑路由到各个单独的管道分支。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-07-31
          • 2021-03-15
          • 2018-11-21
          • 2020-12-14
          • 1970-01-01
          • 2020-07-18
          • 1970-01-01
          相关资源
          最近更新 更多