2017-08-30 54 views
0

無法插入到源表中在U-SQL腳本中,我們希望將數據從分區表中選擇到行集中,執行一些操作,然後將數據重新插入到同一個表中。無法用INTEGRITY VIOLATION IGNORE

下正常工作:

@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 

我們得到以下執行腳本時出錯:

已完成'錯誤':30- 08-2017 10:18:32執行失敗 錯誤「1_SV1_Extract_Split Error」「diagnosticCode」:195887163,「severity」:「Error」, 「component」:「RUNTIME」, 「source」:「System」, 「ErrorID中」: 「E_RUNTIME_SYSTEM_INTERNALISSUE」, 「消息」:內部錯誤已經報道「斷言失敗: '「partitionDimension < vertexIndices.size()'

[移除堆棧跟蹤]

如果我們在INSERT語句中明確指定了分區:

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

...腳本正常工作。但是,我們有一種情況,我們根據PartitionColumn的一系列值從多個分區中選擇數據,因此我們只想依賴於對存儲區的隱式插入。有沒有解決方法?

我應該注意到,這隻在使用Data Lake Tools for Visual Studio的本地數據庫上進行了測試。

回答

0

這看起來像一個錯誤(SYSTEM INTERNAL ISSUE)。如果僅在本地運行中進行repros,或者在集羣中發生故障的情況下執行失敗的作業鏈接,您能否使用repro來提交事件?您也可以將信息發送給usql [at] microsoft dot com。

+0

標記爲答案,因爲該問題僅在本地執行作業時才存在。 – Dan