Azure data factory 此表是无主索引(NOPI)表;关于带PI的Teradata表

Azure data factory 此表是无主索引(NOPI)表;关于带PI的Teradata表,azure-data-factory,azure-data-factory-2,Azure Data Factory,Azure Data Factory 2,我目前正在测试一个管道,在这个管道中,我使用“Hash”分区选项从on-prem数据库中提取数据。我设置了一个管道,将表列表传递给ForEach活动,然后并行运行提取: 在ForEach活动中,我为source选项卡添加了以下内容: 当我运行管道时,我在许多Teradata表上发现以下错误: { “错误代码”:“2200”, “message:“ErrorCode=TeradataNoPrimaryIndexTable,'Type=Microsoft.DataTransfer.Common.

我目前正在测试一个管道,在这个管道中,我使用“Hash”分区选项从on-prem数据库中提取数据。我设置了一个管道,将表列表传递给ForEach活动,然后并行运行提取:

在ForEach活动中,我为source选项卡添加了以下内容:

当我运行管道时,我在许多Teradata表上发现以下错误:

{ “错误代码”:“2200”, “message:“ErrorCode=TeradataNoPrimaryIndexTable,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,message=此表是无主索引(NOPI)表。请在复制活动中指定分区列名,Source=Microsoft.DataTransfer.Runtime.GenericOdbcConnectors,”, “failureType”:“UserError”, “目标”:“复制数据1”, “详情”:[] }

让我困惑的是,当我检查Teradata表时,我可以看到有一个主索引。例如,这是我在尝试复制某个表时看到的“失败”:

我设置的东西不对吗?我是否还需要创建一个参数来捕获主索引列?或者错误是因为没有主列,而表只有一个索引


谢谢

我想按照博客PK是必需的

分区选项:散列。


在执行过程中,Data Factory会自动检测PK列,对其应用哈希,并按分区复制数据。

因此,为了对此进行更新,我遇到问题的原因是Microsoft仅将自动分区选项应用于名称不超过30个字符的Teradata表

我正在使用的表的表名超过30个字符,因此由于ADF中的一个bug无法识别如何自动分区而失败。我已经向微软提出了这个问题,他们正计划推出一个补丁(一旦完成,将进行更新)

我解决上述问题的方法是,我必须分离管道,如果名称少于或等于30个字符,它将被发送到ForEach活动,其中嵌套了一个使用自动配对选项的复制活动

其余的表(大于30个字符)被发送到另一个ForEach活动,在那里我选择了一个“load_date”列,我们将它放在Teradata中所有传入的表上。这不是最好的解决方案,但至少有助于加快我们的复制速度

下面是我的管道的外观图片:


希望这能帮助其他可能有这个问题的人。

Hi@HimanshuSinha msft,我实际上在微软开了一张git hub票,因为这似乎不准确。我做了初步测试,看起来ADF并没有搜索PK列,而是搜索“partitionby”列。我在几个表中尝试了这个方法,只有那些分区为的表才有效。我请求Microsoft进行验证,在下面的链接中有两张未结票据: