Skip to main content

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 :

  1. 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.

  2. 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

  • 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