我的问题是在复制活动期间如何/在何处执行类型转换 .
我有一个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
但它仍然无法解决我的问题 .