無法插入到源表中在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的本地數據庫上進行了測試。
標記爲答案,因爲該問題僅在本地執行作業時才存在。 – Dan