Je voudrais utiliser l'instruction if-else pour décider à quel endroit je dois exporter des données. Mon cas est:Azure Data Lake - Conditions
- -je extraire plusieurs fichiers à partir du stockage blob bleu azur (il est possible qu'il n'y ait pas de fichiers !!).
- Je calcule le nombre d'enregistrements dans l'ensemble de fichiers.
- Si le nombre d'enregistrements est supérieur à 20, j'exporte les fichiers dans un emplacement de rapport spécifique
- Si l'ensemble de fichiers ne contient aucun enregistrement, je dois générer un fichier vide factice dans un emplacement différent, car je ne souhaite pas remplacer le rapport existant par rapport vide.
La solution peut être confection IF..ELSE. Le problème est que si je calcule le nombre d'enregistrements, j'ai une variable rowset et je ne peux pas le comparer avec une variable scalaire.
@RECORDS =
SELECT COUNT(id) AS IdsCount
FROM @final;
IF @RECORDS <= 20 THEN //generate dummy empty file
OUTPUT @final_result
TO @EMPTY_OUTPUT_FILE
USING Outputters.Text(delimiter : '\t', quoting : true, encoding : Encoding.UTF8, outputHeader : true, dateTimeFormat : "s", nullEscape : "NULL");
ELSE
OUTPUT @final_result
TO @OUTPUT_FILE
USING Outputters.Text(delimiter : '\t', quoting : true, encoding : Encoding.UTF8, outputHeader : true, dateTimeFormat : "s", nullEscape : "NULL");
END;
Qu'est-ce que vous essayez de faire est d'utiliser la variable rowset comme scalaire un. Ce n'est pas possible en usql pour l'instant. Voir [this] (https://stackoverflow.com/q/40094944/2417043) et [this] (https://stackoverflow.com/q/41394628/2417043) questions. – arghtype