Paramètres du format de données - Amazon Redshift

Paramètres du format de données

Par défaut, la commande COPY attend que les données sources soient dans un format texte UTF-8 séparé par des caractères. Le délimiteur par défaut est une barre verticale ( | ). Si les données sources sont dans un autre format, utilisez les paramètres suivants pour spécifier le format des données:

En plus des formats de données standard, COPY prend en charge les formats de données en colonnes suivants pour la commande COPY depuis Amazon S3 :

La commande COPY à partir du format en colonne est pris en charge avec certaines restrictions. Pour de plus amples informations, veuillez consulter COPY depuis les formats de données en colonnes.

Paramètres du format de données

FORMAT [AS]

(Facultatif) Identifie les mots-clés de format des données. Les arguments FORMAT sont décrits ci-après.

CSV [ QUOTE [AS] 'quote_character' ]

Permet l'utilisation du format CSV dans les données d'entrée. Pour insérer automatiquement des délimiteurs, des caractères de saut de ligne et des retours à la ligne, entourez le champ dans le caractère spécifié par le paramètre QUOTE. Le guillemet par défaut correspond aux guillemets doubles ( " ). Lorsque le guillemet simple est utilisé dans un champ, précédez le caractère d'un guillemet simple supplémentaire. Par exemple, si les guillemets sont doubles, pour insérer la chaîne A "quoted" word le fichier d'entrée doit inclure la chaîne "A ""quoted"" word". Lorsque le paramètre CSV est utilisé, le délimiteur par défaut est une virgule ( , ). Vous pouvez spécifier un autre délimiteur en utilisant le paramètre DELIMITER.

Lorsqu'un champ est placé entre guillemets, l'espace blanc entre les délimiteurs et les guillemets est ignoré. Si le délimiteur est un caractère d'espace vide, comme un onglet, le délimiteur n'est pas considéré comme un espace vide.

CSV ne peut pas être utilisé avec FIXEDWIDTH, REMOVEQUOTES ou ESCAPE.

QUOTE [AS] 'quote_character'

Facultatif. Spécifie le caractère à utiliser comme guillemet lorsque vous utilisez le paramètre CSV. La valeur par défaut est les guillemets doubles ( " ). Si vous utilisez le paramètre QUOTE pour définir un autre guillemet que des guillemets doubles, vous n'avez pas besoin d'insérer les guillemets doubles dans le champ. Le paramètre QUOTE peut être utilisé uniquement avec le paramètre CSV. Le mot-clé AS est facultatif.

DELIMITER [AS] ['delimiter_char']

Spécifie le caractère ASCII unique qui est utilisé pour séparer les champs dans le fichier d'entrée, tels qu'une barre verticale ( | ), une virgule ( , ) ou une tabulation ( \t ). Les caractères ASCII non imprimables sont pris en charge. Les caractères ASCII peuvent également être représentés en octal, en utilisant le format '\ddd', où « d » est un chiffre octal (de 0 à 7). Le délimiteur par défaut est une barre verticale ( | ), à moins que le paramètre CSV soit utilisé, auquel cas le délimiteur par défaut est une virgule ( , ). Le mot-clé AS est facultatif. DELIMITER ne peut pas être utilisé avec FIXEDWIDTH.

FIXEDWIDTH 'fixedwidth_spec'

Charge les données d'un fichier où la largeur de chaque colonne est une longueur fixe, plutôt que des colonnes séparées par un délimiteur. fixedwidth_spec est une chaîne qui spécifie une étiquette de colonne définie par l'utilisateur et la largeur de la colonne. L'étiquette de colonne peut être une chaîne de texte ou un nombre entier, en fonction de ce que l'utilisateur choisit. L'étiquette de colonne n'a aucun lien avec le nom de la colonne. L'ordre des paires étiquette/largeur doit correspondre exactement à l'ordre des colonnes de la table. FIXEDWIDTH ne peut pas être utilisé avec CSV ou DELIMITER. Dans Amazon Redshift la longueur des colonnes CHAR et VARCHAR est exprimée en octets, aussi n'oubliez pas que la largeur de colonne que vous spécifiez correspond à la longueur binaire de caractères sur plusieurs octets lors de la préparation du fichier à charger. Pour de plus amples informations, veuillez consulter Types caractères.

Le format de fixedwidth_spec apparaît comme suit :

'colLabel1:colWidth1,colLabel:colWidth2, ...'
SHAPEFILE [ SIMPLIFY [AUTO] ['tolerance'] ]

Permet l'utilisation du format CSV dans les données d'entrée. Par défaut, la première colonne du shapefile est une colonne GEOMETRY ou IDENTITY. Toutes les colonnes suivantes suivent l'ordre spécifié dans le shapefile.

Vous ne pouvez pas utiliser SHAPEFILE avec FIXEDWIDTH, REMOVEQUOTES ou ESCAPE.

SIMPLIFY [tolerance]

(Facultatif) Simplifie toutes les géométries pendant le processus d'ingestion à l'aide de l'algorithme Ramer-Douglas-Peucker et de la tolérance donnée.

SIMPLIFY AUTO [tolerance]

(Facultatif) Simplifie uniquement les géométries supérieures à la taille de géométrie maximale. Cette simplification utilise l'algorithme Ramer-Douglas-Peucker et la tolérance calculée automatiquement si celle-ci ne dépasse pas la tolérance spécifiée. Cet algorithme calcule la taille pour stocker les objets dans la tolérance spécifiée. La valeur tolerance est facultative.

Pour voir des exemples de chargement de shapefiles, consultez Chargement d'un shapefile dans Amazon Redshift.

AVRO [AS] 'avro_option'

Spécifie que les données sources sont au format Avro.

Le format Avro est pris en charge pour la commande COPY dans les services et protocoles suivants :

  • Amazon S3

  • Amazon EMR

  • Hôtes distants (SSH)

Avro n'est pas pris en charge pour la commande COPY dans DynamoDB.

Avro est un protocole de sérialisation de données. Un fichier source Avro inclut un schéma qui définit la structure des données. Le type de schéma Avro doit être record. La commande COPY accepte la création de fichiers Avro à l'aide du codec non compressé par défaut, ainsi que les codecs de compression deflate et snappy. Pour plus d'informations sur Avro, accédez à Apache Avro.

Les valeurs valides pour avro_option sont les suivantes :

  • 'auto'

  • 'auto ignorecase'

  • 's3://jsonpaths_file'

La valeur par défaut est 'auto'.

COPY mappe automatiquement les éléments de données des données sources Avro aux colonnes de la table cible en mettant en correspondance les noms de champs du schéma Avro avec les noms de colonnes dans la table cible. La mise en correspondance est sensible à la casse pour 'auto' et n'est pas sensible à la casse pour 'auto ignorecase'.

Les noms de colonnes des tables Amazon Redshift sont toujours en lettres minuscules, aussi lorsque vous utilisez l'option 'auto', les noms de champs correspondants doivent être en minuscules. Si les noms de champs ne sont pas tous en minuscules, vous pouvez utiliser l'option 'auto ignorecase'. Avec l'argument 'auto' par défaut, la commande COPY ne reconnaît que le premier niveau de champs (ou champs externes) dans la structure.

Pour mapper explicitement les noms de colonnes aux noms de champs Avro, vous pouvez utiliser Fichier JSONPaths.

Par défaut, la commande COPY tente de mettre en correspondance toutes les colonnes de la table cible avec les noms de champs Avro. Pour charger un sous-ensemble de colonnes, vous pouvez éventuellement spécifier une liste de colonnes. Si une colonne dans la table cible est absente de la liste de colonnes, la commande COPY charge l'expression DEFAULT de la colonne cible. Si la colonne cible n'a pas de valeur par défaut, la commande COPY tente de charger NULL. Si une colonne est incluse dans la liste de colonnes et que la commande COPY ne trouve pas de champ correspondant dans les données Avro, la commande COPY tente de charger NULL dans la colonne.

Si la commande COPY tente d'affecter NULL à une colonne qui est définie comme NOT NULL, elle échoue.

Schéma Avro

Un fichier de données sources Avro inclut un schéma qui définit la structure des données. La commande COPY lit le schéma qui fait partie du fichier de données sources Avro pour mapper des éléments de données aux colonnes de la table cible. L'exemple suivant illustre un schéma Avro.

{ "name": "person", "type": "record", "fields": [ {"name": "id", "type": "int"}, {"name": "guid", "type": "string"}, {"name": "name", "type": "string"}, {"name": "address", "type": "string"}] }

Le schéma Avro est défini à l'aide du format JSON. L'objet de niveau supérieur JSON contient trois paires nom-valeur avec les noms ou clés, "name", "type" et "fields".

La clé "fields" s'apparie à un tableau d'objets qui définissent le nom et le type de données de chaque champ dans la structure de données. Par défaut, la commande COPY met automatiquement en correspondance les noms de champs avec les noms de colonnes. Les noms de colonnes sont toujours en minuscules, les noms de champs correspondants doivent donc toujours être en minuscules, sauf si vous spécifiez l'option ‘auto ignorecase’. Tous les noms de domaines qui ne correspondent pas à un nom de colonne sont ignorés. L'ordre n'a pas d'importance. Dans l'exemple précédent, la commande COPY mappe aux noms de colonnes id, guid, name, et address.

Avec l'argument 'auto' par défaut, la commande COPY met en correspondance uniquement les objets de premier niveau des colonnes. Pour mapper à des niveaux plus profonds du schéma, ou si les noms de champs et les noms de colonnes ne correspondent pas, utilisez un fichier JSONPaths pour définir le mappage. Pour de plus amples informations, veuillez consulter Fichier JSONPaths.

Si la valeur associée à une clé est un type de données complexe Avro comme octets, tableau, enregistrement, carte ou lien, la commande COPY charge la valeur sous forme de chaîne. Ici, la chaîne est la représentation JSON des données. La commande COPY charge les types de données d'énumération Avro sous forme de chaînes dans lesquelles le contenu est le nom du type. Pour voir un exemple, consultez Exécution de la commande COPY à partir du format JSON.

La taille maximale de l'en-tête du fichier Avro, qui inclut les métadonnées de fichiers et de schéma, est de 1 Mo.  

La taille maximale d'un seul bloc de données Avro est de 4 Mo. Ce qui est différent de la taille de ligne maximale. Si la taille maximale d'un seul bloc de données Avro est dépassée, même si la taille de la ligne qui en résulte est inférieure à la limite de taille de ligne de 4 Mo, la commande COPY échoue.

Lors du calcul de la taille des lignes, Amazon Redshift compte deux fois les barres verticales (|) en interne. Si les données entrées contiennent un très grand nombre de barres verticales, la taille des lignes peut dépasser 4 Mo même si la taille du bloc de données est inférieure à 4 Mo.

JSON [AS] 'json_option'

Les données sources sont au format JSON.

Le format JSON est pris en charge pour la commande COPY dans ces services et protocoles :

  • Amazon S3

  • Commande COPY depuis Amazon EMR

  • Exécution de la commande COPY depuis SSH

JSON n'est pas pris en charge pour exécuter la commande COPY dans DynamoDB.

Les valeurs valides pour json_option sont les suivantes :

  • 'auto'

  • 'auto ignorecase'

  • 's3://jsonpaths_file'

  • 'noshred'

La valeur par défaut est 'auto'. Amazon Redshift ne déchiquète pas les attributs des structures JSON en plusieurs colonnes lors du chargement d'un document JSON.

Par défaut, la commande COPY tente de mettre en correspondance toutes les colonnes de la table cible avec les clés de noms de champs JSON. Pour charger un sous-ensemble de colonnes, vous pouvez éventuellement spécifier une liste de colonnes. Si les clés de nom de domaine JSON ne sont pas toutes en minuscules, vous pouvez utiliser l'option 'auto ignorecase' ou Fichier JSONPaths pour mapper explicitement les noms de colonnes aux clés de nom de domaine JSON.

Si une colonne dans la table cible est absente de la liste de colonnes, la commande COPY charge l'expression DEFAULT de la colonne cible. Si la colonne cible n'a pas de valeur par défaut, la commande COPY tente de charger NULL. Si une colonne est incluse dans la liste de colonnes et que la commande COPY ne trouve pas de champ correspondant dans les données JSON, la commande COPY tente de charger NULL dans la colonne.

Si la commande COPY tente d'affecter NULL à une colonne qui est définie comme NOT NULL, elle échoue.

La commande COPY mappe les éléments de données dans les données sources JSON aux colonnes de la table cible. Pour cela, elle fait correspondre les clés d'objet (ou les noms) dans les paires nom-valeur sources aux noms des colonnes de la table cible.

Reportez-vous aux informations suivantes sur chaque valeur json_option :

'auto'

Avec cette option, la mise en correspondance est sensible à la casse. Les noms de colonnes des tables Amazon Redshift sont toujours en lettres minuscules, aussi lorsque vous utilisez l'option 'auto', les noms de champs JSON correspondants doivent être en minuscules.

'auto ignorecase'

Avec cette option, la mise en correspondance n'est pas sensible à la casse. Les noms de colonnes des tables Amazon Redshift étant toujours en minuscules, lorsque vous utilisez la commande 'auto ignorecase', les noms de champs JSON correspondants peuvent être en minuscules, en majuscules ou en casse mixte.

's3://jsonpaths_file'

Avec cette option, la commande COPY utilise le fichier JSONPaths nommé pour mapper les éléments de données dans les données sources JSON aux colonnes de la table cible. L'argument s3://jsonpaths_file doit être une clé d'objet Amazon S3 faisant explicitement référence à un seul fichier. Par exemple : 's3://mybucket/jsonpaths.txt'. L'argument ne peut pas être un préfixe de clé. Pour plus d'informations sur l'utilisation d'un fichier JSONPaths, consultez Fichier JSONPaths.

Dans certains cas, le fichier spécifié par jsonpaths_file a le même préfixe que le chemin spécifié par copy_from_s3_objectpath pour les fichiers de données. Si c'est le cas, la commande COPY lit le fichier JSONPaths en tant que fichier de données et renvoie des erreurs. Par exemple, supposons que vos fichiers de données utilisent le chemin d'objet s3://mybucket/my_data.json et que votre fichier JSONPaths est s3://mybucket/my_data.jsonpaths. Dans ce cas, la commande COPY tente de charger my_data.jsonpaths en tant que fichier de données.

'noshred'

Avec cette option, Amazon Redshift ne déchiquète pas les attributs des structures JSON en plusieurs colonnes lors du chargement d'un document JSON.

Fichier de données JSON

Le fichier de données JSON contient un ensemble d'objets ou tableaux. La commande COPY charge chaque objet ou tableau JSON dans une seule ligne de la table cible. Chaque objet ou tableau correspondant à une ligne doit être une structure autonome, de niveau racine, autrement dit, il ne doit être membre d'une autre structure JSON.

Un objet JSON commence et finit par des accolades ( { } ) et contient une collection non ordonnée de paires nom-valeur. Chaque paire de nom et de valeur est séparée par deux points, et les paires sont séparées par des virgules. Par défaut, la clé d'objet, ou le nom, dans les paires nom-valeur, doit correspondre au nom de la colonne correspondante dans la table. Les noms de colonnes des tables Amazon Redshift étant toujours en minuscules, les clés des noms de champs JSON correspondants doivent également être en minuscules. Si vos noms de colonnes et clés JSON ne correspondent pas, utilisez un Fichier JSONPaths pour mapper explicitement les colonnes aux clés.

L'ordre d'un objet JSON n'est pas important. Tous les noms qui ne correspondent pas à un nom de colonne sont ignorés. L'exemple suivant illustre la structure d'un objet JSON simple.

{ "column1": "value1", "column2": value2, "notacolumn" : "ignore this value" }

Un tableau JSON commence et finit par des crochets ( [  ] ) et contient une collection ordonnée de valeurs séparées par des virgules. Si vos fichiers de données utilisent des tableaux, vous devez spécifier un fichier JSONPaths pour mettre en correspondance les valeurs de colonnes. L'exemple suivant illustre la structure d'un tableau JSON simple.

["value1", value2]

Le JSON doit être dans un format correct. Par exemple, les objets ou les tableaux ne peuvent pas être séparés par des virgules ou tout autre caractère à l'exception des espaces vides. Les chaînes doivent être placées entre guillemets doubles. Les guillemets doivent être des guillemets simples (0x22), ni culbutés, ni courbes.

La taille maximale d'un seul objet ou tableau JSON, y compris les accolades ou les crochets, est de 4 Mo. Ce qui est différent de la taille de ligne maximale. Si la taille maximale d'un seul objet ou tableau JSON est dépassée, même si la taille de la ligne qui en résulte est inférieure à la limite de taille de ligne de 4 Mo, la commande COPY échoue.

Lors du calcul de la taille des lignes, Amazon Redshift compte deux fois les barres verticales (|) en interne. Si les données entrées contiennent un très grand nombre de barres verticales, la taille des lignes peut dépasser 4 Mo même si la taille de l'objet est inférieure à 4 Mo.

La commande COPY charge \n comme un caractère de saut de ligne et charge \t comme un caractère de tabulation. Pour charger une barre oblique inverse, précédez-la d'une barre oblique inverse ( \\ ).

La commande COPY recherche la source JSON spécifiée pour un objet ou tableau JSON bien formé et valide. Si la commande COPY rencontre des caractères qui ne sont pas des espaces vides avant de localiser une structure JSON utilisable, ou entre des objets ou tableaux JSON valides, elle renvoie une erreur pour chaque instance. Ces erreurs sont prises en compte dans le nombre d'erreurs MAXERROR. Lorsque le nombre d'erreurs est égal ou supérieur à MAXERROR, la commande COPY échoue.

Pour chaque erreur, Amazon Redshift enregistre une ligne dans la table système STL_LOAD_ERRORS. La colonne LINE_NUMBER enregistre la dernière ligne de l'objet JSON qui a provoqué l'erreur.

Si IGNOREHEADER est spécifié, la commande COPY ignore le nombre de lignes dans les données JSON spécifiées. Les caractères de saut de ligne dans les données JSON comptent toujours pour les calculs IGNOREHEADER.

La commande COPY charge des chaînes vides dans les champs vides par défaut. Si EMPTYASNULL est spécifié, la commande COPY charge des chaînes vides dans les champs CHAR et VARCHAR comme NULL. Les chaînes vides d'autres types de données, tels que INT, sont toujours chargées avec NULL.

Les options suivantes ne sont pas prises en charge avec JSON :

  • CSV

  • DELIMITER

  • ESCAPE

  • FILLRECORD

  • FIXEDWIDTH

  • IGNOREBLANKLINES

  • NULL AS

  • READRATIO

  • REMOVEQUOTES

Pour de plus amples informations, veuillez consulter Exécution de la commande COPY à partir du format JSON. Pour plus d'informations sur les structures de données JSON, accédez à www.json.org.

Fichier JSONPaths

Si vous chargez depuis des données sources au format JSON ou Avro, la commande COPY mappe par défaut les éléments de données de premier niveau dans les données sources aux colonnes de la table cible. Pour ce faire, elle met en correspondance chaque nom (ou clé d'objet) dans une paire nom-valeur avec le nom d'une colonne de la table cible.

Si vos noms de colonnes et clés d'objet ne correspondent pas, ou pour mapper à des niveaux plus profonds de la hiérarchie de données, vous pouvez utiliser un fichier JSONPaths pour mapper explicitement des éléments de données JSON ou Avro à des colonnes. Le fichier JSONPaths mappe les éléments de données JSON à des colonnes selon l'ordre des colonnes de la liste de tables ou de colonnes cible.

Le fichier JSONPaths doit contenir un seul objet JSON (pas un tableau). L'objet JSON est une paire nom-valeur. La clé d'objet, qui est le nom de la paire nom-valeur, doit être "jsonpaths". La valeur de la paire nom-valeur est un tableau d'expressions JSONPath. Chaque expression JSONPath fait référence à un seul élément de la hiérarchie de données JSON ou du schéma Avro, de la même façon qu'une expression XPath fait référence aux éléments d'un document XML. Pour de plus amples informations, veuillez consulter Expressions JSONPath.

Pour utiliser un fichier JSONPaths, ajoutez le mot-clé JSON ou AVRO à la commande COPY. Spécifiez le nom du compartiment S3 et le chemin d'objet du fichier JSONPaths en utilisant le format suivant.

COPY tablename FROM 'data_source' CREDENTIALS 'credentials-args' FORMAT AS { AVRO | JSON } 's3://jsonpaths_file';

La valeur s3://jsonpaths_file doit être une clé d'objet Amazon S3 faisant explicitement référence à un seul fichier, tel que 's3://mybucket/jsonpaths.txt'. Elle ne pas être un préfixe de clé.

Dans certains cas, si vous chargez à partir d'Amazon S3, le fichier spécifié par jsonpaths_file a le même préfixe que le chemin spécifié par copy_from_s3_objectpath pour les fichiers de données. Si c'est le cas, la commande COPY lit le fichier JSONPaths en tant que fichier de données et renvoie des erreurs. Par exemple, supposons que vos fichiers de données utilisent le chemin d'objet s3://mybucket/my_data.json et que votre fichier JSONPaths est s3://mybucket/my_data.jsonpaths. Dans ce cas, la commande COPY tente de charger my_data.jsonpaths en tant que fichier de données.

Si le nom de clé est une chaîne autre que "jsonpaths", la commande COPY ne renvoie pas d'erreur, mais elle ignore jsonpaths_file et utilise l'argument 'auto' à la place.

Si l'une des actions suivantes se produit, la commande COPY échoue :

  • Le JSON est incorrect.

  • Il existe plusieurs objets JSON.

  • Tous les caractères sauf les espaces vides existent en dehors de l'objet.

  • Un élément de tableau est une chaîne vide ou n'est pas une chaîne.

MAXERROR ne s'applique pas au fichier JSONPaths.

Les fichiers JSONPaths ne doivent pas être chiffrés, même si l'option ENCRYPTED est spécifiée.

Pour de plus amples informations, veuillez consulter Exécution de la commande COPY à partir du format JSON.

Expressions JSONPath

Le fichier JSONPaths utilise des expressions JSONPath pour mapper les champs de données aux colonnes cibles. Chaque expression JSONPath correspond à une colonne dans la table cible Amazon Redshift. L'ordre des éléments du tableau JSONPath doit correspondre à celui des colonnes de la table cible ou de la liste de colonnes, si une liste de colonnes est utilisée.

Les guillemets doubles sont obligatoires comme illustré, aussi bien pour les noms de champ que pour les valeurs. Les guillemets doivent être des guillemets simples (0x22), ni culbutés, ni courbes.

Si un élément de l'objet référencé par une expression JSONPath ne se trouve pas dans les données JSON, la commande COPY tente de charger une valeur NULL. Si l'objet référencé est incorrect, la commande COPY renvoie une erreur de chargement.

Si un élément de tableau référencé par une expression JSONPath ne se trouve pas dans les données JSON ou Avro, la commande COPY échoue et renvoie l'erreur suivante : Invalid JSONPath format: Not an array or index out of range. Supprimez les éléments du tableau de JSONPaths qui n'existent pas dans les données sources et vérifiez que les tableaux des données sources sont corrects. 

Les expressions JSONPath peuvent utiliser la notation d'accolades ou la notation de points, mais vous ne pouvez pas combiner les notations. L'exemple suivant illustre les expressions JSONPath utilisant la notation d'accolades.

{ "jsonpaths": [ "$['venuename']", "$['venuecity']", "$['venuestate']", "$['venueseats']" ] }

L'exemple suivant illustre les expressions JSONPath utilisant la notation de points.

{ "jsonpaths": [ "$.venuename", "$.venuecity", "$.venuestate", "$.venueseats" ] }

Dans le contexte de la syntaxe de la commande COPY Amazon Redshift, une expression JSONPath doit spécifier le chemin d'accès explicite à un élément de nom unique dans une structure de données hiérarchique JSON ou Avro. Amazon Redshift ne prend pas en charge les éléments JSONPath, tels que les caractères génériques ou les expressions de filtre, qui peuvent se traduire par un chemin d'accès ambigu ou plusieurs éléments de noms.

Pour de plus amples informations, veuillez consulter Exécution de la commande COPY à partir du format JSON.

Utilisation de JSONPaths avec les données Avro

L'exemple suivant illustre un schéma Avro à plusieurs niveaux.

{ "name": "person", "type": "record", "fields": [ {"name": "id", "type": "int"}, {"name": "guid", "type": "string"}, {"name": "isActive", "type": "boolean"}, {"name": "age", "type": "int"}, {"name": "name", "type": "string"}, {"name": "address", "type": "string"}, {"name": "latitude", "type": "double"}, {"name": "longitude", "type": "double"}, { "name": "tags", "type": { "type" : "array", "name" : "inner_tags", "items" : "string" } }, { "name": "friends", "type": { "type" : "array", "name" : "inner_friends", "items" : { "name" : "friends_record", "type" : "record", "fields" : [ {"name" : "id", "type" : "int"}, {"name" : "name", "type" : "string"} ] } } }, {"name": "randomArrayItem", "type": "string"} ] }

L'exemple suivant illustre un fichier JSONPaths qui utilise les expressions AvroPath pour référencer le schéma précédent.

{ "jsonpaths": [ "$.id", "$.guid", "$.address", "$.friends[0].id" ] }

L'exemple de JSONPaths comprend les éléments suivants :

jsonpaths

Nom de l'objet JSON qui contient les expressions AvroPath.

[ … ]

Les crochets entourent le tableau JSON qui contient les éléments de chemin d'accès.

$

Le symbole du dollar fait référence à l'élément racine du schéma Avro, qui est le tableau "fields".

"$.id",

Cible de l'expression AvroPath. Dans ce cas, la cible est l'élément dans le tableau "fields" avec le nom "id". Les expressions sont séparées par des virgules.

"$.friends[0].id"

Les crochets indiquent un index de tableau. Les expressions JSONPath utilisent l'indexation de base zéro, cette expression fait donc référence au premier élément du tableau "friends" avec le nom "id".

La syntaxe du schéma Avro nécessite l'utilisation de champs internes pour définir la structure d'enregistrement et les types de données du tableau. Les champs internes sont ignorés par les expressions AvroPath. Par exemple, le champ "friends" définit un tableau nommé "inner_friends", qui définit à son tour un enregistrement nommé "friends_record". L'expression AvroPath permettant de référencer le champ "id" peut ignorer les champs supplémentaires pour faire référence au champ cible directement. Les expressions AvroPath suivantes font référence aux deux champs qui appartiennent au tableau "friends".

"$.friends[0].id" "$.friends[0].name"

Paramètres du format des données en colonnes

En plus des formats de données standard, COPY prend en charge les formats de données en colonnes suivants pour la commande COPY depuis Amazon S3. La commande COPY à partir du format en colonne est pris en charge avec certaines restrictions. Pour de plus amples informations, veuillez consulter COPY depuis les formats de données en colonnes.

ORC

Charge les données à partir d'un fichier qui utilise le format de fichier ORC (Optimized Row Columnar).

PARQUET

Charge les données à partir d'un fichier qui utilise le format de fichier Parquet.