Azure数据工厂数据流以静默方式使日期列为NULL

问题描述

我正在尝试使用Azure数据工厂将CSV插入到Azure sql表中。在我检查结果之前,一切似乎都很好。列之一是可为空的日期。 CSV包含一个1/2/2020 12:00:00 AM这样的值。数据流无声地插入NULL而不是抛出错误,因为它不喜欢输入。那么,如何获取数据流以将字符串正确地转换为日期时间,然后在以后出现类似问题时出错?我真的不希望出现静故障和不良数据。

解决方法

空值是由于ADF中的日期格式不兼容。您需要进行日期格式转换。

您的原始日期格式是否为 MM / dd / yyyy HH:mm:ss
如果是这样,您可以使用Derived column并添加表达式toString(toTimestamp(<Your_Column_Name>,'MM/dd/yyyy HH:mm:ss'),'yyyy-MM-dd HH:mm:SS')将此列格式化为String。它解决了NULL的值。当然,您可以选择所需的日期格式。

我做了如下测试:

  1. 我的数据源来自一个csv文件,EmpDate是一个像您一样的日期类型,最后一行包含空值。 enter image description here

  2. 然后在“派生”列活动中添加表达式toString(toTimestamp(EmpDate,'yyyy-MM-dd HH:mm:SS')。在这里,您可以选择所需的日期格式。 enter image description here

3。根据Mark Kromer的建议,我在“派生列”之后直接添加条件拆分,并检查isNull(EmpDate)。在这里,我使用not(isNull(EmpDate))表达式。 enter image description here

  1. 最后,如果EmpDate包含空值,它将进入接收器2,否则进入接收器1。 enter image description here 该行包含空值: enter image description here