美好的一天,
我们正在通过Data Factory v2中的COPY DATA(“还原到表存储”)导入以下JSON格式:
[
{
"ERROR":false,
"USERNAME":"DUMMY"
},
[
{
"A":1,
"B":2,
"C":3
},
{
"A":1,
"B":0,
"C":3
}
]
]
分区键值:USE SOURCE COLUMN
分区键列:C
为A B and C
正确设置了映射。 ERROR和USERNAME是-不包括-。
在调试中给出以下错误:
“ errorCode”:“ 2200”,“ message”:“在'接收器'侧发生故障。 ErrorCode = UserErrorAzureTableKeyColumnWithNullValue,'Type = Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message =列 'C'包含'NULL'值,因此不能用作'PartitionKey' Azure表。
我了解为什么会发生错误,COPY DATA工具尝试创建三行:
1。第一行基于ERROR和USERNAME。该行的C值的确为空
2。第二行基于A,B和C。该行正确,因为C没有空值。
3。第三行基于A,B和C。该行正确,因为C没有空值。
启用了容错功能:跳过不兼容的行,但不能解决问题。
我们在上面知道,因为它可以使用默认的分区键值:
我们无法更改输入格式。我们可以在Data Factory中做什么来解决此问题?如何使用ERROR和USER忽略第一个对象,或者如果它为null,如何使用分区键跳过行?
这可以用“动态内容”代码处理吗?
答案 0 :(得分:0)
辛巴达。根据我的测试,没有直接方法可以跳过REST-TableStorage
复制活动中的特定行。
我的想法是,您可以先使用Azure Function activity处理其余的api数据。
请参考以下步骤:
1。在Azure Funtion中创建Http Trigger,访问您的rest api并获取数据。
2。在该Azure函数中,循环数据并删除“ ERROR"
和"USERNAME"
行以返回仅包含"A" "B" "C"
的数组。
3。在Azure数据工厂中使用Azure Function活动执行该功能,然后使用复制活动进行链接。
不再有不兼容的行。