无法使用INTEGRITY VIOLATION IGNORE插入到源表中



在U-SQL脚本中,我们希望将分区表中的数据选择到行集中,进行一些操作,然后将数据插入回同一个表中。

以下操作很好:

@rowset =
SELECT PartitionColumn,
DataColumn * 2 AS DataColumn      // Some manipulation
FROM MyTable;
INSERT MyTable (PartitionColumn, DataColumn)
ON INTEGRITY VIOLATION IGNORE
SELECT PartitionColumn,
DataColumn
FROM @rowset;

然而,如果我们在PartitionColumn上添加WHERE条件,假设我们在@partition1:中有一个有效的分区桶值

@rowset =
SELECT PartitionColumn,
DataColumn * 2 AS DataColumn
FROM MyTable
WHERE PartitionColumn == @partition1

我们在执行脚本时得到以下错误:

完成时出现"错误":2017年8月30日10:18:32执行失败,出现错误'1_SV1_Extract_Split错误{"diagnosticCode":195887163,"严重性":"错误","component":"RUNTIME","源":"系统","errorId":"E_RUNTIME_SYSTEM_INTERNALISSUE","message":"已报告内部错误'断言失败:'partitionDimension<vertex Indices.size(('

[删除堆栈跟踪]

如果我们在INSERT语句中显式指定分区:

INSERT MyTable (DataColumn)
PARTITION (@partition1)
SELECT DataColumn
FROM @rowset;

剧本写得很好。然而,我们有一种情况,即我们根据PartitionColumn的一系列值从几个分区中选择数据,所以我们只想依赖于隐式插入到bucket中。有解决办法吗?

我应该注意的是,这只在使用DataLakeToolsforVisualStudio的本地数据库上进行了测试。

这看起来像一个bug(系统内部问题(。如果只在本地运行中进行重新处理,您能用重新处理来提交事件吗?如果在群集中发生故障,请用失败的作业链接来提交事件?你也可以把信息发给usql[at]microsoftdot.com.

最新更新