已解决-Azure Data Factory 2,带有派生列的数据流,如何将时间戳设置为null

时间:2019-09-10 12:14:40

标签: azure azure-data-factory-2

此问题已解决,解决方案位于底部。

我有一个执行数据流的Azure DataFactory V2管道。

Azure Sql源表具有一个Date not null列DateReported。 这是从外部来源导入的。空值是 1899-01-01。

目标Sql表具有相同的字段DateReported,但为Date null

我在数据流中使用派生列来清理数据。 我想在日期为1899-01-01时插入空值

我的派生列函数是这个

iif(!(year(DateReported) == 1899 || year(DateReported) == 1753)
    , DateReported
    , null()
    )

这给了我错误“表达式应该返回与先前表达式相同的类型'时间戳'”。

如果我将iif转换为此

iif((year(DateReported) == 1899 || year(DateReported) == 1753)
    , null()
    , DateReported
    )

我收到错误消息“表达式应返回与先前表达式相同的类型'null'”

我可以像这样从源代码中在SQL中修复此问题

Select ...
DateReported2 =
CASE
    WHEN DateReported is null THEN DateReported
    WHEN YEAR(DateReported) = 1899 THEN NULL
    ELSE DateReported
End
...

但这很混乱,因为我所有其他逻辑都在数据流中。

如何创建一个可为null的时间戳的派生列,例如C#DateTime?还是SSIS NULL(DT_DATE)?

解决方案:

case(year(DateReported) != 1899, DateReported)

0 个答案:

没有答案