Types de données Avro
Utilisez l'outil Entrée de données pour lire les fichiers Avro non compressés et compressés par Deflate, et utilisez l'outil Sortie de données pour écrire les fichiers Avro.
Entrée
Seule la compression Deflate est prise en charge.
La plupart des 14 types de données Avro natifs sont pris en charge. La concordance des types pour l'importation est la suivante :
String : UTF-8 converti en V_WString (UTF-16)
Octets : Conservé en Blob (utilisez l'outil Blob pour convertir si nécessaire)
Int : maintenu comme Int32
Long : maintenu comme Int64
Flottant : maintenu comme Flottant
Double : maintenu comme Double
Booléen : maintenu comme Bool
Null : non pris en charge
Enum : converti en équivalent String
Union : Alteryx autorise les unions avec deux sous-types. Les deux sous-types doivent être équivalents (par exemple, deux « int » ou deux « Double ») ou l’un d’eux doit être Null.
Le type de champ Alteryx est celui de la branche non Null (ou les deux branches si les deux sont non Null).
Si la branche non Null est active, le champ Alteryx contient cette valeur.
Si la branche Null est active, le champ Alteryx est défini sur Null.
Les unions invalides sont importées en tant que JSON dans un champ V_WString (utilisez l'outil Interpréter JSON pour convertir si nécessaire). Par exemple, une union avec un champ int en tant que branche active peut être représentée comme « {"int":123} ».
Conservé en Blob (utilisez l'outil Blob pour convertir si nécessaire)
Ces types Avro ne sont pas pris en charge en mode natif, mais ils sont importés comme JSON dans un champ String (utilisez l'outil Interpréter JSON pour effectuer la conversion si nécessaire) :
Enregistrement : par exemple, «{"SubField1":7,"SubField2":"Field2"}» pour un enregistrement contenant les champs « int » et « string ».
Tableau : Par exemple, « [1,2,3,4,5] » pour un tableau de champs « int ».
Carte : par exemple, «{"Key1":Value1,"Key2":Value2}» pour une concordance de champ String en Double.
Sortie
Pendant l'écriture des fichiers Avro, deux options sont possibles :
Activation de la compression (Deflate) : l'activation de la compression ralentit la production de sortie mais, avec des fichiers plus volumineux, le temps réseau est également réduit. La compression utilise l’algorithme DEFLATE (essentiellement gzip) qui doit être pris en charge en mode natif par les autres outils compatibles Avro tels que Hive.
Prise en charge des valeurs Null : si vous activez cette option, tous les champs sont écrits en tant qu'unions avec une branche Null et une branche valeur. Si la valeur Alteryx est nulle, la branche nulle est sélectionnée sur l'union de sortie Avro, sinon la branche valeur est sélectionnée.
Si cette option n'est pas sélectionnée, tous les champs de sortie sont écrits dans leur type Avro natif (sans union). Les champs Alteryx nuls sont écrits avec leur valeur par défaut (par exemple, le chiffre 0 pour un int32 et une chaîne vide pour un champ de chaîne).
Il peut être intéressant d'utiliser un outil Formule pour gérer les valeurs nulles avec une valeur « connue » afin de les prendre en charge dans Hadoop.
La concordance des types entre Alteryx et Avro est la suivante :
Bool : maintenu comme booléen
Octet, Int16, Int32 : champ int conservé (32 bits)
Int64 : Conservé en Long (64 bits)
Flottant : maintenu comme Flottant
DateTime as Date, Time, DateTime
Double : maintenu comme Double
FixedDecimal : converti en Double
String, V_String, Date, Heure, DateHeure : conservé en tant que String (UTF-8)
WString, V_WString : converti en String (UTF-8)
Blob, SpatialBlob : conservé en octets