如何在Azure数据工厂中检查日期格式



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

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

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

我找不到检查日期格式的函数。如何检查格式并将上述值转换为yyyy-MM-dd格式。

Himanshu Sinha 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'))

这个联合函数的答案实际上不会解决问题。它只是消除了错误。有很多日期有多种格式。例如:";2020年2月1日";(mm/dd/yyyy(和";2020年1月2日";(年/月/日(。前面的答案只是消除了错误,但您的下游分析将非常不正确。

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

您可以在复制活动的Mapping选项卡中对此进行配置。可以指定日期时间格式,但它只支持一种格式类型。如果你有一个混合的格式,如你的例子,那么它将不起作用。

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

仅供参考:数据类型映射

https://learn.microsoft.com/en-us/azure/data-factory/copy-activity-schema-and-type-mapping#data-类型映射

相关内容

  • 没有找到相关文章

最新更新