2017-07-25 5 views
0

J'ai créé une requête U-SQL qui récupère le fichier d'entrée du magasin DataLake et convertit les valeurs. La sortie finale est stockée dans DataLake Store.Conversion de type de colonne U-SQL

DECLARE @in string = "system/dbotable{*}.tsv"; 
DECLARE @out string ="system/temp.tsv"; 

@searchlog = 
    EXTRACT 
     Id   int, 
     Address string, 
     number  int 
    FROM @in 
    USING Extractors.Tsv(); 

@transactions = 
    SELECT 
     *, 
     ROW_NUMBER() 
      OVER(PARTITION BY Id ORDER BY Id DESC) AS RowNumber 
    FROM @searchlog; 

@result = 
    SELECT 
     Id , 
     Address, 
     number 
    FROM @transactions 
    WHERE RowNumber == 1; 

OUTPUT @result 
    TO @out 
    USING Outputters.Tsv(); 

Et il montre l'erreur suivante,

exécution a échoué avec l'erreur '1_SV1_Extract Erreur:' { "diagnosticCode": 195887132, "gravité": "Erreur", "composant": » RUNTIME "," source ":" Utilisateur "," errorId ":" E_RUNTIME_USER_EXTRACT_COLUMN_CONVERSION_INVALID_ERROR "," message ":" Caractère invalide lors de la tentative de conversion des données de colonne. "," Description ":" HEX: \ "2243616E696E6522 \" Caractère invalide conversion d'enregistrement d'entrée. \ nPosition: ligne 1, index de colonne: 1, nom de colonne: \ "Id \". "," résolution ":" Vérifier l'entrée pour les erreurs ou utiliser \ "silencieux \" pour ignorer plus (sous) -size dans l'entrée. \ nConsidérer que ignorer \ "invalide \" r OWS peuvent influer sur les résultats d'emploi et que les types doivent être annulable pour les erreurs de conversion à ignorer « » helpLink. « : » »

+1

Le fichier d'entrée comporte-t-il des en-têtes qui doivent être ignorés? Pouvez-vous montrer quelques exemples de données s'il vous plaît? – wBob

Répondre

2

Il semble que la colonne Id est pas toujours de type entier.

Je voudrais extraire la colonne Id en tant que chaîne d'abord, puis dans un deuxième temps, essayez de le convertir en Int, en utilisant une fonction définie par l'utilisateur comme illustré ici: https://msdn.microsoft.com/en-us/library/azure/mt621309.aspx (exemple basé sur DateTime).

L'autre option consisterait à utiliser silent:true dans votre extracteur, de sorte que vous ignoriez automatiquement les lignes qui échouent à la conversion.