如何检查 Azure 数据工厂中的日期格式
How to check date format in Azure Data Factory
我正在创建一个管道,其中源是 csv 文件,接收器是 SQL 服务器。
CSV 文件中的日期列的值可能类似于
12/31/2020
10162018
20201017
31/12/1982
1982/12/31
我没有找到检查日期格式的函数。如何检查格式并将上述值转换为 yyyy-MM-dd
格式。
您可以在副本 activity 的 映射 选项卡中进行配置。可以指定日期时间格式,但只支持一种格式类型。如果您像示例中那样混合使用多种格式,那么它将不起作用。
一个选项是将该列作为 nvarchar 引入暂存 table。然后在另一个副本中 activity 使用自定义 select 语句来检测列格式并根据需要转换日期。您应该能够在 table.
中使用 SELECT 中的 CASE SQL 语句来执行此操作
仅供参考:数据类型映射
解决方案由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'))
这个合并函数答案实际上并不能解决问题。它只是摆脱了错误。有很多日期以多种格式有效。例如:“2/1/2020”(mm/dd/yyyy) 和“1/2/2020”(dd/mm/yyyy)。之前的答案只是去掉了错误,但是你下游的分析会很不正确。
您需要对哪种日期格式最适合传入流进行汇总分析,并将逻辑路由到各个单独的管道分支。
我正在创建一个管道,其中源是 csv 文件,接收器是 SQL 服务器。
CSV 文件中的日期列的值可能类似于
12/31/2020
10162018
20201017
31/12/1982
1982/12/31
我没有找到检查日期格式的函数。如何检查格式并将上述值转换为 yyyy-MM-dd
格式。
您可以在副本 activity 的 映射 选项卡中进行配置。可以指定日期时间格式,但只支持一种格式类型。如果您像示例中那样混合使用多种格式,那么它将不起作用。
一个选项是将该列作为 nvarchar 引入暂存 table。然后在另一个副本中 activity 使用自定义 select 语句来检测列格式并根据需要转换日期。您应该能够在 table.
中使用 SELECT 中的 CASE SQL 语句来执行此操作仅供参考:数据类型映射
解决方案由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'))
这个合并函数答案实际上并不能解决问题。它只是摆脱了错误。有很多日期以多种格式有效。例如:“2/1/2020”(mm/dd/yyyy) 和“1/2/2020”(dd/mm/yyyy)。之前的答案只是去掉了错误,但是你下游的分析会很不正确。
您需要对哪种日期格式最适合传入流进行汇总分析,并将逻辑路由到各个单独的管道分支。