我的问题是在复制活动期间如何/在何处执行类型转换 .

我有一个Azure数据工厂管道,它定义从Data Lake Gen1到SQL服务器数据库表中的TSV文件的数据导入 .

TSV文件的架构是: {QueryDate,Count1,Count2}

count1和count2可能没有值 .

TSV文件中的示例数据:

20180717 10

20180717 5 5

20180717 7 1

20180717 7

SQL服务器表的模式是

{QueryDate(datetime2(7)), UserNumber(int), ActiveNumber(int)}

UserNumber和ActiveNumber都具有Not null约束 .

当我在我的管道中使用复制活动将TSV数据复制到表时,我收到如下错误:

错误代码“:”2200“,”message“:”'Type = System.InvalidOperationException,不允许DBNull.Value ...

当count1或count2没有值时,我想用0来替换空值 . 而且我认为这不会再导致错误 .

但我不知道在哪里以及如何执行此转换 .

转换应该在源数据集,接收器数据集还是复制活动中?

而且转换的正确语法我也没有弄清楚 .

我试图设置源数据集格式设置的nullValue值为null,0,NULL,但没有一个工作,我仍然得到错误 .

"typeProperties": {
            "format": {
                "type": "TextFormat",
                "columnDelimiter": "\t",
                "nullValue": "NULL",
                "treatEmptyAsNull": true,
                "skipLineCount": 0,
                "firstRowAsHeader": false}, 
           ...
}

我也看到了这个问题:Azure Data Factory - can't convert from "null" to datetime field

但它仍然无法解决我的问题 .