2017-08-30 2 views
0

Dans un script U-SQL, nous souhaitons SÉLECTIONNER les données d'une table partitionnée dans un ensemble de lignes, effectuer une manipulation, puis INSÉRER les données dans la même table.Impossible d'insérer dans la table source INTEGRITY VIOLATION IGNORE

Les belles œuvres suivantes:

@rowset = 
    SELECT PartitionColumn, 
      DataColumn * 2 AS DataColumn  // Some manipulation 
    FROM MyTable; 

INSERT MyTable (PartitionColumn, DataColumn) 
ON INTEGRITY VIOLATION IGNORE 
SELECT PartitionColumn, 
     DataColumn 
FROM @rowset; 

Cependant, si l'on ajoute un critère WHERE sur le PartitionColumn, en supposant que nous avons une valeur de seau de partition valide dans @partition1:

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

Nous obtenons les éléments suivants erreur lors de l'exécution du script:

Terminé avec 'Erreur': 30- 08-2017 10:18:32 L'exécution a échoué avec erreur '1_SV1_Extract_Split Erreur { "code de diagnostic": 195887163, "gravité": "Erreur", "composant": "RUNTIME", "source": "Système", "errorId": "E_RUNTIME_SYSTEM_INTERNALISSUE", "message": "Une erreur interne a été rapporté « assertion a échoué: 'partitionDimension < vertexIndices.size()'

[removed trace de la pile]

Si nous spécifions explicitement la partition dans l'instruction INSERT:

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

... le script fonctionne bien. Cependant, nous avons une situation où nous sélectionnons des données à partir de plusieurs partitions basées sur une plage de valeurs pour le PartitionColumn, donc nous aimerions simplement nous appuyer sur l'insertion implicite dans des compartiments. Y at-il une solution de contournement pour cela?

Je dois noter que cela n'a été testé que sur une base de données locale à l'aide de Data Lake Tools pour Visual Studio.

Répondre

0

Cela ressemble à un bug (SYSTEM INTERNAL ISSUE). Pouvez-vous s'il vous plaît classer un incident avec un repro si ce n'est que des repros dans la course locale, ou avec un lien de travail défaillant s'il échoue dans le cluster? Vous pouvez également m'envoyer les informations à usql [at] microsoft dot com.

+0

Marqué comme réponse, car le problème n'est présent que lors de l'exécution de travaux en local. – Dan