已解决 - Azure 数据工厂 2,具有派生列的数据流,如何将时间戳设置为空

Fro*_*ode 6 azure azure-data-factory-2

这已解决,解决方案在底部找到。

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

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

目标 Sql 表具有相同的字段 DateReported 但日期为 null

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

我的派生列函数是这样的

iif(!(year(DateReported) == 1899 || year(DateReported) == 1753)
    , DateReported
    , null()
    )
Run Code Online (Sandbox Code Playgroud)

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

如果我将 iif 反转为这个

iif((year(DateReported) == 1899 || year(DateReported) == 1753)
    , null()
    , DateReported
    )
Run Code Online (Sandbox Code Playgroud)

我收到错误“表达式应该返回与先前表达式相同的类型‘空’”

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

Select ...
DateReported2 =
CASE
    WHEN DateReported is null THEN DateReported
    WHEN YEAR(DateReported) = 1899 THEN NULL
    ELSE DateReported
End
...
Run Code Online (Sandbox Code Playgroud)

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

如何创建一个可以为空的时间戳的派生列,如 C# DateTime?或 SSIS NULL(DT_DATE)?

解决方案:

case(year(DateReported) != 1899, DateReported)
Run Code Online (Sandbox Code Playgroud)