【问题标题】:column mapping trouble within ADFv2ADFv2 中的列映射问题
【发布时间】:2018-12-26 23:20:37
【问题描述】:

我有一个包含 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:1。在将数据加载到临时表后,我通过使用存储过程进行映射来解决这个问题,但这感觉像是一个不必要的额外步骤。

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


【解决方案1】:

您是否尝试过在图形编辑器中映射列?只需单击复制活动,然后映射并单击蓝色按钮“导入模式”。这将导入两个模式,并让您从源映射中选择哪一列与接收器中的哪一列。

希望这有帮助!

【讨论】:

  • 正如我在帖子中提到的,我已经多次更新架构。问题是实际的源文件本身并不完全对齐,尽管更新了模式以完全匹配。
【解决方案2】:

在接收器数据集中删除您不想映射的列。

通过选择然后单击删除按钮删除接收器中不需要的列

[

为了让副本顺利进行。

1.源数据集的所有列应具有相同的顺序。
2. sink 数据集中选择的所有列都必须映射。

【讨论】:

    【解决方案3】:

    您似乎试图将 16 列从源表提取到目标表。如果您的目标是 Sql Server 或 Azure Sql DB,您可以尝试以下设置:

    • 在 csv 文件中将源结构设置为 21 列。
    • 将具有 16 列映射的列映射设置为您想要的数据。
    • 设置目标结构为16列,在列映射定义中具有相同的名称和顺序。

    【讨论】:

    • 我想按原样使用源文件,而不需要任何额外的映射。为什么我不能简单地选择要映射到目标的源中的哪些列?无论实际列数如何,我都无法选择要映射的列,这对我来说没有意义
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-02
    • 1970-01-01
    • 1970-01-01
    • 2023-02-14
    • 2010-10-11
    • 2020-09-29
    相关资源
    最近更新 更多