ADFv2的列映射问题(重新发布)

时间:2018-12-20 21:22:21

标签: azure azure-data-factory azure-data-factory-2

我有一个21列的源.csv和一个25列的目标表。

不是源中的所有列都在目标表中都有主目录,并且目标表中的并非所有列都来自源。

我无法获取CopyData任务让我选择要映射的方式。到目前为止,使它正常工作的唯一方法是将源数据加载到具有1:1映射的“持有”表中,然后执行存储过程以将来自该表的数据插入到最终目标中。

我尝试更改源和目​​标上的模式以匹配,但是仍然出错,因为ACTUAL源中的列多于目标,反之亦然。

这可能不是实现此目的的最有效方法,但我对如何使其工作一无所知。

是的,我尝试了用户界面,是的,我尝试了列模式,否,我不能修改源文件,也不需要。

返回的错误代码在以下方面有所不同:

"errorCode": "2200",
    "message": "ErrorCode=UserErrorInvalidColumnMappingColumnCountMismatch,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Invalid column mapping provided to copy activity: '{LONG LIST OF COLUMN MAPPING HERE}', Detailed message: Different column count between target structure and column mapping. Target column count:25, Column mapping count:16. Check column mapping in table definition.,Source=Microsoft.DataTransfer.Common,'",
    "failureType": "UserError",
    "target": "LoadPrimaryOwner"

1 个答案:

答案 0 :(得分:2)

TimF。请查看此Schema mapping in copy activity中的声明:

  

列映射支持映射源中的全部或部分列   数据集“结构”到接收器数据集“结构”中的所有列。

     

以下是导致异常的错误条件:

     

1。源数据存储区查询结果没有在输入数据集“结构”部分中指定的列名。

     

2.sink数据存储(如果具有预定义的架构)没有在输出数据集“结构”部分中指定的列名。

     

3。接收器数据集的“结构”中的列少于或多于映射中指定的列。

     

4。重复的映射。

因此,您可能知道接收器数据集中的所有列都需要映射。由于您无法更改目的地,因此不必在不受支持的功能中苦苦挣扎。

当然,您可以使用描述中提到的stored procedure。这是一个完美的解决方法,并且也不是很麻烦。关于使用细节,您可以参考我以前的案例:

1。Azure Data Factory activity copy: Evaluate column in sink table with @pipeline().TriggerTime

2。Azure Data factory copy activity failed mapping strings (from csv) to Azure SQL table sink uniqueidentifier field

此外,如果您真的不想避免上述解决方案,则可以向ADF团队提交有关所需功能的feedback