Charger des fichiers Avro depuis Cloud Storage
Avro est un format de données Open Source qui regroupe des données sérialisées avec le schéma de données dans un même fichier.
Lorsque vous chargez des données Avro depuis Cloud Storage, vous pouvez les placer dans une nouvelle table ou partition, les ajouter à une table ou une partition existante, ou bien les utiliser pour écraser une table ou une partition. Lorsque les données sont chargées dans BigQuery, elles sont converties au format en colonnes de Capacitor (format de stockage de BigQuery).
Lorsque vous chargez des données depuis Cloud Storage dans une table BigQuery, l'ensemble de données contenant la table doit se trouver dans le même emplacement régional ou multirégional que le bucket Cloud Storage.
Pour en savoir plus sur le chargement des données Avro à partir d'un fichier local, consultez l'article Charger des données dans BigQuery à partir d'une source de données locale.
Avantages d'Avro
Avro est le format préconisé pour charger des données dans BigQuery. Les fichiers Avro présentent les avantages ci-dessous par rapport aux fichiers CSV et JSON (délimités par un retour à la ligne).
- Le format binaire Avro :
- permet un chargement plus rapide (possibilité de lire les données en parallèle, même si les blocs de données sont compressés) ;
- ne requiert pas de saisie ni de sérialisation ;
- est plus facile à analyser, car il n'engendre pas les problèmes d'encodage rencontrés avec d'autres formats comme ASCII.
- Lorsque vous chargez des fichiers Avro dans BigQuery, le schéma de la table est automatiquement extrait des données sources auto-descriptives.
Schémas Avro
Lors du chargement de fichiers Avro dans BigQuery, le schéma de la table est automatiquement extrait à l'aide des données sources. Lorsque BigQuery récupère le schéma à partir des données sources, le fichier qui figure en dernier selon l'ordre alphabétique est utilisé.
Supposons par exemple que vous disposiez des fichiers Avro suivants dans Cloud Storage :
gs://mybucket/00/ a.avro z.avro gs://mybucket/01/ b.avro
L'exécution de cette commande dans l'outil de ligne de commande bq
charge tous les fichiers (sous forme de liste d'éléments séparés par une virgule). Le schéma est obtenu à partir de mybucket/01/b.avro
:
bq load \ --source_format=AVRO \ dataset.table \ "gs://mybucket/00/*.avro","gs://mybucket/01/*.avro"
Lorsque vous importez plusieurs fichiers Avro avec différents schémas Avro, tous les schémas doivent être compatibles avec la fonctionnalité de résolution de schéma d'Avro.
Lorsque BigQuery détecte le schéma, certains types de données Avro sont convertis en types de données BigQuery de façon à être compatibles avec la syntaxe SQL BigQuery. Pour en savoir plus, consultez la section Conversions Avro.
Compression de fichiers Avro
BigQuery accepte les codecs de compression suivants pour les blocs de données dans les fichiers Avro :
Snappy
DEFLATE
Autorisations requises
Lorsque vous chargez des données dans BigQuery, vous avez besoin d'autorisations pour exécuter une tâche de chargement et charger des données dans des tables et partitions BigQuery nouvelles ou existantes. Si vous chargez des données à partir de Cloud Storage, vous devez également disposer d'autorisations pour accéder au bucket contenant vos données.
Autorisations BigQuery
Vous devez au moins disposer des autorisations suivantes pour charger des données dans BigQuery. Elles sont requises si vous chargez des données dans une nouvelle table ou partition, mais également si vous ajoutez ou écrasez une table ou une partition.
bigquery.tables.create
bigquery.tables.updateData
bigquery.jobs.create
Les rôles IAM prédéfinis suivants incluent les autorisations bigquery.tables.create
et bigquery.tables.updateData
:
bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
Les rôles IAM prédéfinis suivants incluent les autorisations bigquery.jobs.create
:
bigquery.user
bigquery.jobUser
bigquery.admin
En outre, si un utilisateur possède les autorisations bigquery.datasets.create
, il obtient également un accès bigquery.dataOwner
à l'ensemble de données qu'il crée.
L'accès correspondant au rôle bigquery.dataOwner
permet à l'utilisateur de créer et de mettre à jour des tables dans l'ensemble de données à l'aide d'une tâche de chargement.
Pour en savoir plus sur les rôles et les autorisations IAM dans BigQuery, consultez la page sur le contrôle des accès.
Autorisations Cloud Storage
Pour charger des données à partir d'un bucket Cloud Storage, vous devez disposer des autorisations storage.objects.get
. Si vous utilisez un caractère générique dans l'URI, vous devez également disposer des autorisations storage.objects.list
.
Le rôle IAM prédéfini storage.objectViewer
peut être attribué afin d'octroyer les autorisations storage.objects.get
et storage.objects.list
.
Charger des données Avro dans une nouvelle table
Vous pouvez charger des données Avro dans une nouvelle table de plusieurs façons :
- En utilisant Cloud Console
- En utilisant la commande
bq load
de l'outil de ligne de commandebq
- En appelant la méthode d'API
jobs.insert
et en configurant une tâcheload
- En utilisant les bibliothèques clientes
Pour charger des données Avro à partir de Cloud Storage dans une nouvelle table BigQuery, procédez comme suit :
Console
Ouvrez la page "BigQuery" dans Cloud Console.
Dans le panneau Explorateur, développez votre projet et sélectionnez un ensemble de données.
Dans le panneau de détails, cliquez sur Create table (Créer une table).
Dans la section Source de la page Créer une table :
Pour le champ Créer une table à partir de, sélectionnez Cloud Storage.
Dans le champ de la source, recherchez ou saisissez l'URI Cloud Storage. Sachez que vous ne pouvez pas inclure plusieurs URI dans Cloud Console. En revanche, les caractères génériques sont acceptés. Le bucket Cloud Storage doit se trouver au même emplacement que l'ensemble de données contenant la table que vous créez.
Pour le paramètre Format de fichier, sélectionnez Avro.
Dans la section Destination de la page Create Table (Créer une table) :
Sous Dataset name (Nom de l'ensemble de données), sélectionnez l'ensemble de données approprié.
Vérifiez que Type de table est défini sur Table native.
Dans le champ Nom de la table, saisissez le nom de la table que vous créez dans BigQuery.
Aucune action n'est nécessaire dans la section Schema (Schéma). Le schéma est auto-décrit dans les fichiers Avro.
(Facultatif) Pour partitionner la table, choisissez vos options dans le champ Paramètres de partitionnement et de clustering :
- Pour créer une table partitionnée, cliquez sur Aucun partitionnement, sélectionnez Partition par champ, puis choisissez une colonne
DATE
ouTIMESTAMP
. Cette option n'est pas disponible si votre schéma n'inclut pas de colonneDATE
ouTIMESTAMP
. - Pour créer une table partitionnée par date d'ingestion, cliquez sur Aucun partitionnement, puis sélectionnez Partitionner par temps d'ingestion.
- Pour créer une table partitionnée, cliquez sur Aucun partitionnement, sélectionnez Partition par champ, puis choisissez une colonne
(Facultatif) Pour le champ Filtre de partitionnement, cochez la case Demander un filtre de partitionnement pour obliger les utilisateurs à inclure une clause
WHERE
spécifiant les partitions à interroger. Ce type de filtre peut contribuer à réduire les coûts et à améliorer les performances. Pour en savoir plus, consultez la section Interroger des tables partitionnées. Cette option n'est pas disponible si Aucun partitionnement est sélectionné.(Facultatif) Pour mettre une table en cluster, saisissez entre un et quatre noms de champs dans la zone Ordre de clustering.
(Facultatif) Cliquez sur Options avancées.
- Pour le champ Préférence d'écriture, laissez l'option Écrire si la table est vide sélectionnée. Cette option crée une table et y charge vos données.
- Pour le champ Nombre d'erreurs autorisées, acceptez la valeur par défaut
0
ou saisissez le nombre maximal de lignes contenant des erreurs qui peuvent être ignorées. Si le nombre de lignes contenant des erreurs dépasse cette valeur, la tâche renverra un messageinvalid
et échouera. - Pour le champ Valeurs inconnues, conservez l'option Ignorer les valeurs inconnues désactivée. Cette option ne s'applique qu'aux fichiers CSV et JSON.
- Pour le champ Chiffrement, cliquez sur Clé gérée par le client afin d'utiliser une clé Cloud Key Management Service. Si vous conservez le paramètre Clé gérée par Google, BigQuery chiffre les données au repos.
Cliquez sur Créer une table.
bq
Exécutez la commande bq load
, définissez AVRO
à l'aide de l'option --source_format
et spécifiez un URI Cloud Storage.
Vous pouvez inclure un seul URI, une liste d'URI séparés par des virgules ou un URI contenant un caractère générique.
(Facultatif) Spécifiez l'option --location
et définissez la valeur correspondant à votre emplacement.
Les autres indicateurs facultatifs sont les suivants :
--time_partitioning_type
: active le partitionnement temporel sur une table et définit le type de partition. Les valeurs possibles sontHOUR
,DAY
,MONTH
etYEAR
. Cette option est facultative lorsque vous créez une table partitionnée sur une colonneDATE
,DATETIME
ouTIMESTAMP
. Le type de partition par défaut pour le partitionnement temporel estDAY
.--time_partitioning_expiration
: entier qui spécifie (en secondes) le délai au terme duquel une partition temporelle doit être supprimée. Le délai d'expiration correspond à la date UTC de la partition plus la valeur entière.--time_partitioning_field
: colonneDATE
ouTIMESTAMP
utilisée pour créer une table partitionnée. Si le partitionnement par date est activé sans cette valeur, une table partitionnée par date d'ingestion est créée.--require_partition_filter
: si cette option est activée, elle oblige les utilisateurs à inclure une clauseWHERE
spécifiant les partitions à interroger. Ce type de filtre peut contribuer à réduire les coûts et à améliorer les performances. Pour en savoir plus, consultez la section Interroger des tables partitionnées.--clustering_fields
: liste pouvant contenir jusqu'à quatre noms de colonne séparés par une virgule, et utilisée pour créer une table en cluster.--destination_kms_key
: clé Cloud KMS pour le chiffrement des données de la table.Pour en savoir plus sur les tables partitionnées, consultez ces pages :
- Créer et utiliser des tables partitionnées
- Créer et utiliser des tables partitionnées par date d'ingestion
Pour en savoir plus sur les tables en cluster, consultez :
Pour en savoir plus sur le chiffrement d'une table, consultez :
Pour charger des données Avro dans BigQuery, saisissez la commande suivante :
bq --location=location load \ --source_format=format \ dataset.table \ path_to_source
Remplacez l'élément suivant :
- location correspond à votre zone. L'option
--location
est facultative. Par exemple, si vous utilisez BigQuery dans la région de Tokyo, vous pouvez définir la valeur de l'option surasia-northeast1
. Vous pouvez définir une valeur par défaut correspondant à l'emplacement à l'aide du fichier bigqueryrc. - format est
AVRO
. - dataset est un ensemble de données existant.
- table est le nom de la table dans laquelle vous chargez des données.
- path_to_source est un URI Cloud Storage complet ou une liste d'URI séparés par une virgule. Les caractères génériques sont également acceptés.
Exemples :
La commande suivante permet de charger les données de gs://mybucket/mydata.avro
dans la table mytable
de mydataset
.
bq load \
--source_format=AVRO \
mydataset.mytable \
gs://mybucket/mydata.avro
La commande suivante permet de charger les données de gs://mybucket/mydata.avro
dans une table partitionnée par date d'ingestion nommée mytable
dans l'ensemble de données mydataset
.
bq load \
--source_format=AVRO \
--time_partitioning_type=DAY \
mydataset.mytable \
gs://mybucket/mydata.avro
La commande suivante permet de charger les données de gs://mybucket/mydata.avro
dans une table partitionnée nommée mytable
dans l'ensemble de données mydataset
. La table est partitionnée en fonction de la colonne mytimestamp
.
bq load \
--source_format=AVRO \
--time_partitioning_field mytimestamp \
mydataset.mytable \
gs://mybucket/mydata.avro
La commande ci-dessous permet de charger les données de plusieurs fichiers de gs://mybucket/
dans une table nommée mytable
dans l'ensemble de données mydataset
. L'URI Cloud Storage utilise un caractère générique.
bq load \
--source_format=AVRO \
mydataset.mytable \
gs://mybucket/mydata*.avro
La commande ci-dessous permet de charger les données de plusieurs fichiers de gs://mybucket/
dans une table nommée mytable
dans l'ensemble de données mydataset
. La commande inclut une liste d'URI Cloud Storage séparés par une virgule.
bq load \
--source_format=AVRO \
mydataset.mytable \
"gs://mybucket/00/*.avro","gs://mybucket/01/*.avro"
API
Créez une tâche de chargement (
load
) qui pointe vers les données sources dans Cloud Storage.(Facultatif) Spécifiez votre emplacement dans la propriété
location
de la sectionjobReference
de la ressource de tâche.La propriété
source URIs
doit être complète et respecter le formatgs://bucket/object
. Chaque URI peut contenir un caractère générique (*).Spécifiez le format des données Avro en définissant la propriété
sourceFormat
surAVRO
.Pour vérifier l'état de la tâche, appelez
jobs.get(job_id*)
, où job_id correspond à l'ID de tâche renvoyé par la requête initiale.- Si la réponse est
status.state = DONE
, la tâche a bien été exécutée. - Si la propriété
status.errorResult
est présente, la requête a échoué. Cet objet inclura des informations décrivant le problème rencontré. Lorsqu'une requête échoue, aucune table n'est créée et aucune donnée n'est ajoutée. - Si la propriété
status.errorResult
est absente, la tâche a bien été exécutée. Toutefois, des erreurs non fatales, telles que des problèmes d'importation de lignes, ont pu se produire. Ces erreurs sont répertoriées dans la propriétéstatus.errors
de l'objet de tâche renvoyé.
- Si la réponse est
Remarques relatives à l'API :
Les tâches de chargement sont atomiques et cohérentes. En cas d'échec d'une tâche de chargement, aucune donnée n'est disponible. Si une tâche aboutit, toutes les données sont disponibles.
Nous vous recommandons de générer un ID unique et de le transmettre en tant que
jobReference.jobId
lorsque vous appelezjobs.insert
pour créer une tâche de chargement. Cette approche offre une protection plus robuste contre les pannes réseau, car le client peut lancer une requête ou effectuer de nouvelles tentatives en utilisant l'ID de tâche connu.L'appel de
jobs.insert
sur un ID de tâche donné est idempotent. En d'autres termes, vous pouvez effectuer autant de tentatives que vous le souhaitez avec le même ID de tâche. L'une de ces opérations tout au plus aboutira.
Java
Node.js
Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Node.js décrite dans le guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery en langage Node.js.
Python
Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Python décrite dans le guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery Python.
Ajouter ou écraser une table avec des données Avro
Vous pouvez charger des données supplémentaires dans une table à partir de fichiers sources ou en ajoutant des résultats de requête.
Dans Cloud Console, utilisez l'option Préférence d'écriture pour spécifier l'action à entreprendre lorsque vous chargez des données à partir d'un fichier source ou d'un résultat de requête.
Vous disposez des options suivantes lorsque vous chargez des données supplémentaires dans une table :
Option de la console | Option de l'outil bq |
Propriété de l'API BigQuery | Description |
---|---|---|---|
Écrire si la table est vide | Aucune | WRITE_EMPTY |
N'écrit les données que si la table est vide. |
Ajouter à la table | --noreplace ou --replace=false . Si --[no]replace n'est pas spécifié, les données sont ajoutées par défaut. |
WRITE_APPEND |
(Par défaut) Ajoute les données à la fin de la table. |
Écraser la table | --replace ou --replace=true |
WRITE_TRUNCATE |
Efface toutes les données existantes d'une table avant d'écrire les nouvelles données. Cette action supprime également le schéma de la table et la clé Cloud KMS. |
Si vous chargez des données dans une table existante, la tâche de chargement peut les ajouter ou écraser la table.
Vous pouvez ajouter ou écraser une table de plusieurs façons :
- En utilisant Cloud Console
- En utilisant la commande
bq load
de l'outil de ligne de commandebq
- En appelant la méthode d'API
jobs.insert
et en configurant une tâcheload
- En utilisant les bibliothèques clientes
Pour ajouter ou écraser des données Avro dans une table, procédez comme suit :
Console
Ouvrez la page "BigQuery" dans Cloud Console.
Dans le panneau Explorateur, développez votre projet et sélectionnez un ensemble de données.
Dans le panneau de détails, cliquez sur Create table (Créer une table).
Dans la section Source de la page Créer une table :
Pour le champ Create table from (Créer une table à partir de), sélectionnez Cloud Storage.
Dans le champ de la source, recherchez ou saisissez l'URI Cloud Storage. Sachez que vous ne pouvez pas inclure plusieurs URI dans Cloud Console. En revanche, les caractères génériques sont acceptés. Le bucket Cloud Storage doit se trouver au même emplacement que l'ensemble de données contenant la table à laquelle vous ajoutez des données ou que vous écrasez.
Pour le paramètre Format de fichier, sélectionnez Avro.
Dans la section Destination de la page Create Table (Créer une table) :
Sous Dataset name (Nom de l'ensemble de données), sélectionnez l'ensemble de données approprié.
Dans le champ Nom de la table, saisissez le nom de la table à laquelle vous ajoutez des données ou que vous écrasez dans BigQuery.
Vérifiez que Type de table est défini sur Table native.
Aucune action n'est nécessaire dans la section Schema (Schéma). Le schéma est auto-décrit dans les fichiers Avro.
Sous Paramètres de partitionnement et de clustering, conservez les valeurs par défaut. Vous ne pouvez pas convertir une table en table partitionnée ou en cluster en y ajoutant ou en y écrasant des données. Par ailleurs, Cloud Console n'accepte ni l'ajout, ni l'écrasement de données dans une table partitionnée ou en cluster lors d'une tâche de chargement.
Cliquez sur Advanced options (Options avancées).
- Sous Write preference (Préférences d'écriture), choisissez Append to table (Ajouter à la table) ou Overwrite table (Écraser la table).
- Pour le champ Nombre d'erreurs autorisées, acceptez la valeur par défaut
0
ou saisissez le nombre maximal de lignes contenant des erreurs qui peuvent être ignorées. Si le nombre de lignes contenant des erreurs dépasse cette valeur, la tâche renverra un messageinvalid
et échouera. - Pour le champ Valeurs inconnues, conservez l'option Ignorer les valeurs inconnues désactivée. Cette option ne s'applique qu'aux fichiers CSV et JSON.
Pour le champ Chiffrement, cliquez sur Clé gérée par le client afin d'utiliser une clé Cloud Key Management Service. Si vous conservez le paramètre Clé gérée par Google, BigQuery chiffre les données au repos.
Cliquez sur Créer une table.
bq
Saisissez la commande bq load
avec l'option --replace
pour écraser la table. Utilisez l'option --noreplace
pour ajouter des données à la table. Si aucun paramètre n'est spécifié, les données sont ajoutées par défaut. Fournissez l'option --source_format
et définissez-la sur AVRO
. Étant donné que les schémas Avro sont automatiquement récupérés à partir des données sources auto-descriptives, il n'est pas nécessaire de fournir une définition de schéma.
(Facultatif) Spécifiez l'option --location
et définissez la valeur correspondant à votre emplacement.
Les autres indicateurs facultatifs sont les suivants :
--destination_kms_key
: clé Cloud KMS pour le chiffrement des données de la table.
bq --location=location load \ --[no]replace \ --source_format=format \ dataset.table \ path_to_source
Remplacez l'élément suivant :
- location correspond à votre emplacement.
L'option
--location
est facultative. Vous pouvez spécifier une valeur par défaut pour l'emplacement à l'aide du fichier .bigqueryrc. - format est
AVRO
. - dataset est un ensemble de données existant.
- table est le nom de la table dans laquelle vous chargez des données.
- path_to_source est un URI Cloud Storage complet ou une liste d'URI séparés par une virgule. Les caractères génériques sont également acceptés.
Exemples :
La commande suivante permet de charger des données depuis gs://mybucket/mydata.avro
en écrasant une table nommée mytable
dans l'ensemble de données mydataset
.
bq load \
--replace \
--source_format=AVRO \
mydataset.mytable \
gs://mybucket/mydata.avro
La commande suivante permet de charger les données de gs://mybucket/mydata.avro
et d'ajouter des données à la table mytable
de mydataset
.
bq load \
--noreplace \
--source_format=AVRO \
mydataset.mytable \
gs://mybucket/mydata.avro
Pour en savoir plus sur l'ajout et l'écrasement de données dans des tables partitionnées à l'aide de l'outil de ligne de commande bq
, consultez la section Ajouter ou écraser des données dans une table partitionnée.
API
Créez une tâche de chargement (
load
) qui pointe vers les données sources dans Cloud Storage.(Facultatif) Spécifiez votre emplacement dans la propriété
location
de la sectionjobReference
de la ressource de tâche.La propriété
source URIs
doit être complète et respecter le formatgs://bucket/object
. Vous pouvez inclure plusieurs URI sous la forme d'une liste d'éléments séparés par une virgule. Sachez que les caractères génériques sont également acceptés.Spécifiez le format de données en définissant la propriété
configuration.load.sourceFormat
surAVRO
.Spécifiez la préférence d'écriture en définissant la propriété
configuration.load.writeDisposition
surWRITE_TRUNCATE
ouWRITE_APPEND
.
Java
Node.js
Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Node.js décrite dans le guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery en langage Node.js.
Python
Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Python décrite dans le guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery Python.
Charger des données Avro partitionnées avec Hive
BigQuery accepte le chargement de données Avro partitionnées avec Hive et stockées dans Cloud Storage. Il insère alors les colonnes de partitionnement Hive en tant que colonnes dans la table de destination gérée par BigQuery. Pour en savoir plus, consultez la page Charger des données partitionnées à l'aide d'outils externes à partir de Cloud Storage.
Conversions Avro
BigQuery convertit les types de données Avro en types de données BigQuery, comme décrit ci-dessous.
Types primitifs
Type de données BigQuery | Notes | |
---|---|---|
null | BigQuery ignore ces valeurs. | |
boolean | BOOLEAN | |
int | INTEGER | |
long | INTEGER | |
float | FLOAT | |
double | FLOAT | |
bytes | BYTES | |
chaîne | STRING | UTF-8 uniquement |
Types logiques
Par défaut, BigQuery ignore l'attribut logicalType
pour la plupart des types et utilise à la place le type Avro sous-jacent. Pour convertir des types logiques Avro en types de données correspondants dans BigQuery, définissez l'option --use_avro_logical_types
sur true
à l'aide de l'outil de ligne de commande bq
ou définissez la propriété useAvroLogicalTypes
dans la ressource de tâche lorsque vous appelez la méthode jobs.insert
pour créer une tâche de chargement.
Le tableau ci-dessous indique la conversion des types logiques Avro en types de données BigQuery.
Type de données BigQuery : type logique désactivé | Type de données BigQuery : type logique activé | |
---|---|---|
date | INTEGER | DATE |
time-millis | INTEGER | TIME |
time-micros | INTEGER (converti à partir du type LONG) | TIME |
timestamp-millis | INTEGER (converti à partir du type LONG) | TIMESTAMP |
timestamp-micros | INTEGER (converti à partir du type LONG) | TIMESTAMP |
durée | BYTES (converti à partir du type fixed de taille 12) |
BYTES (converti à partir du type fixed de taille 12) |
decimal | NUMERIC, BIGNUMERIC (aperçu) ou STRING (voir Type logique décimal) | NUMERIC, BIGNUMERIC (aperçu) ou STRING (voir Type logique décimal) |
Pour en savoir plus sur les types de données Avro, consultez la spécification Apache Avro™ 1.8.2.
Type logique décimal
Les types logiques Decimal
peuvent être convertis en types NUMERIC
, BIGNUMERIC
(bêta) ou STRING
. Le type converti dépend des paramètres de précision et d'évolutivité du type logique decimal
et des types cibles décimaux spécifiés. Spécifiez le type de cible décimal comme suit :
- Pour une tâche de chargement à l'aide de l'API
jobs.insert
, utilisez le champJobConfigurationLoad.decimalTargetTypes
. - Pour une tâche de chargement à l'aide de la commande
bq load
dans l'outil de ligne de commandebq
, utilisez l'option--decimal_target_types
. - Pour une requête sur une table avec des sources externes, utilisez le champ
ExternalDataConfiguration.decimalTargetTypes
. - Pour une table externe persistante créée avec le LDD, utilisez l'option
decimal_target_types
.
Pour assurer la rétrocompatibilité, si les types cibles décimaux ne sont pas spécifiés, vous pouvez charger un fichier Avro contenant une colonne bytes
avec le type logique decimal
dans une colonne BYTES
d'une table existante. Dans ce cas, le type logique decimal
de la colonne du fichier Avro est ignoré. Ce mode de conversion est obsolète et pourrait être supprimé prochainement.
Pour en savoir plus sur le type logique decimal
Avro, consultez la spécification Apache Avro™ 1.8.2.
Types complexes
Type de données BigQuery | Notes | |
---|---|---|
record | RECORD |
|
enum | STRING |
|
array | champs répétés | Les tableaux de tableaux ne sont pas acceptés. Les tableaux ne contenant que des types vides (NULL) sont ignorés. |
map<T> | RECORD | BigQuery convertit un champ "map<T>" Avro en champ RECORD répété contenant deux champs : une clé et une valeur. BigQuery stocke la clé sous forme de chaîne (STRING) et convertit la valeur dans le type de données correspondant dans BigQuery. |
union |
|
|
fixed | BYTES |
|