J'ai un problème étrange avec un travail u-sql qui traite les fichiers compressés. Si je lance l'u-sql sur un fichier csv normal cela fonctionne très bien. Mais si je GZip le fichier qu'il doenst fonctionne plus (générant un E_RUNTIME_USER_EXTRACT_ENCODING_ERROR: erreur d'encodage est survenue après traitement 0 enregistrement (s) à Split d'entrée du sommet.)Problème d'u-sql utilisant gzip et colonne virtuelle
Ainsi, le code qui fonctionne est
DECLARE @path string = "output/{ids}/{*}.csv";
@data =
EXTRACT
a string,
b string,
c string,
d string,
ids string
FROM @path
USING
Extractors.Csv(skipFirstNRows:1, silent: true);
@output =
SELECT *
FROM @data
WHERE ids == "test";
OUTPUT @output
TO "output/res.csv"
USING Outputters.Csv(quoting : false, outputHeader: true);
Ce code ne fonctionne pas (version gz du fichier)
DECLARE @path string = "output/{ids}/{*}.csv.gz";
@data =
EXTRACT
a string,
b string,
c string,
d string,
ids string
FROM @path
USING
Extractors.Csv(skipFirstNRows:1, silent: true);
@output =
SELECT *
FROM @data
WHERE ids == "test";
OUTPUT @output
TO "output/res.csv"
USING Outputters.Csv(quoting : false, outputHeader: true);
Si je remo ve la colonne virtuelle « ids » cela fonctionne pour la version gz
DECLARE @path string = "output/test/{*}.csv.gz";
@data =
EXTRACT
a string,
b string,
c string,
d string
FROM @path
USING
Extractors.Csv(skipFirstNRows:1, silent: true);
@output =
SELECT *
FROM @data;
OUTPUT @output
TO "output/res.csv"
USING Outputters.Csv(quoting : false, outputHeader: true);
Ci-joint les deux fichiers que je utilise. Quelqu'un at-il une idée de ce qui se passe? Si je supprime les identifiants de colonne virual cela fonctionne pour les deux?
-je obtenir que cette erreur quand je lance contre le fichier dans le lac de stockage des données. Si je cours localement contre les fichiers cela fonctionne bien.
L'erreur détaillée que je reçois est "internalDiagnostics": "" - "innerError": { "diagnosticCode": 195887128 - "gravité": "Erreur" - "composant": "RUNTIME" - "source": » Utilisateur "-" errorId ":" E_RUNTIME_USER_EXTRACT_INVALID_CHARACTER "-" message ":" Caractère non valide pour le codage UTF-8 dans le flux d'entrée. " - "description": "caractère non valide trouvé pour le codage UTF-8 en entrée." - "résolution": "Corrigez le caractère invalide dans le fichier d'entrée - ou corrigez le codage dans l'extracteur et réessayez."
Cela vaut la peine d'essayer les deux, voyez si vous obtenez un résultat différent. – wBob
J'ai essayé les deux options.Je cours le script dans Visual Studio contre les fichiers localement sur le disque (ceci fonctionne). J'ai également essayé d'exécuter le script dans Visual Studio par rapport aux fichiers de mon compte ADLA ainsi que dans le portail Azure (tous les deux échouent). Semble être quelque chose avec les colonnes virtuelles. Si je les supprime comme indiqué dans le dernier exemple, cela fonctionne dans tous les cas. – John
Je ne peux pas reproduire ceci. Le deuxième script fonctionne parfaitement sur mon compte ADLA local et cloud. Quelle version des outils utilisez-vous? J'utilise 2.2.6000.1 avec Visual Studio 2015. Cela peut valoir la peine de soumettre le script via le portail Azure qui exclurait les outils, enfin envisager de soumettre une demande de support. – wBob