Introduction au chargement de données dans BigQuery

Cette page vous offre un aperçu du chargement des données dans BigQuery.

Présentation

Il est possible d'interroger des données sans les charger dans de nombreuses situations. Dans tous les autres cas, vous devez d'abord charger vos données dans BigQuery avant de pouvoir exécuter des requêtes.

Il est possible de charger des données :

Le chargement de données dans BigQuery depuis Google Drive n'est pas disponible actuellement, mais vous pouvez interroger des données dans Google Drive à l'aide d'une table externe.

Vous pouvez charger des données 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. Pour en savoir plus sur l'utilisation des partitions, consultez la section Gérer des tables partitionnées.

Lorsque vous chargez des données dans BigQuery, vous pouvez fournir le schéma de table ou de partition. Pour les formats de données compatibles, vous pouvez également utiliser la détection automatique de schéma.

Limites

Le chargement de données dans BigQuery est soumis aux limites suivantes :

  • Actuellement, vous ne pouvez charger des données dans BigQuery qu'à partir de Cloud Storage ou d'une source de données accessible en lecture (telle que votre machine locale).

Selon l'emplacement et le format de vos données source, des limitations supplémentaires peuvent s'appliquer. Pour en savoir plus, consultez les pages suivantes :

Formats de données compatibles

BigQuery est compatible avec le chargement de données à partir de Cloud Storage et de sources de données accessibles en lecture aux formats suivants :

Le format source par défaut pour le chargement de données est le format CSV. Pour charger des données stockées dans l'un des formats de données compatibles, vous devez spécifier explicitement le format. Lorsque les données sont chargées dans BigQuery, elles sont converties au format en colonnes de Capacitor (format de stockage de BigQuery).

Choisir un format d'ingestion de données

Vous pouvez charger des données dans BigQuery sous divers formats. Lorsque les données sont chargées dans BigQuery, elles sont converties au format en colonnes de Capacitor (format de stockage de BigQuery).

Au moment de charger des données, choisissez un format d'ingestion de données en fonction des facteurs suivants :

  • Le schéma de vos données

    Les formats CSV, JSON, Avro, Parquet et ORC sont tous compatibles avec les données plates. Les formats JSON, Avro, Parquet, ORC, les exportations depuis Cloud Firestore et les exportations depuis Cloud Datastore sont également compatibles avec les données comprenant des champs imbriqués et répétés. Les données imbriquées et répétées sont utiles pour exprimer des données hiérarchiques. Les champs imbriqués et répétés permettent également de réduire la duplication lors de la dénormalisation des données.

  • Les nouvelles lignes intégrées

    Lorsque vous chargez des données à partir de fichiers JSON, les lignes doivent être délimitées par un retour à la ligne. BigQuery s'attend à ce que les fichiers JSON délimités par un retour à ligne ne contiennent qu'un seul enregistrement par ligne.

  • Les limites externes

    Vos données peuvent provenir d'une base de données de magasin de documents qui stocke nativement les données au format JSON. Elles peuvent également provenir d'une source qui limite les exportations au seul format CSV.

Charger des données encodées

BigQuery est compatible avec l'encodage UTF-8 pour les données imbriquées ou répétées, ainsi que pour les données plates. BigQuery est compatible avec l'encodage ISO-8859-1 pour les données plates de fichiers CSV exclusivement.

Encodage des caractères

Par défaut, le service BigQuery s'attend à ce que toutes les données source soient encodées au format UTF-8. Si vous avez des fichiers CSV avec des données encodées au format ISO-8859-1, vous devez spécifier explicitement l'encodage lorsque vous importez vos données afin que BigQuery puisse les convertir correctement au format UTF-8 lors du processus d'importation. Actuellement, il n'est possible d'importer que des données encodées au format ISO-8859-1 ou UTF-8. Retenez les points suivants lorsque vous spécifiez l'encodage des caractères de vos données :

  • Si vous ne spécifiez pas d'encodage, ou si vous spécifiez explicitement que vos données sont au format UTF-8, puis fournissez un fichier CSV non encodé au format UTF-8, BigQuery va tenter de convertir votre fichier CSV au format UTF-8.

    En règle générale, vos données seront importées avec succès, mais ne correspondront peut-être pas à vos attentes octet par octet. Pour éviter cela, spécifiez l'encodage approprié et relancez votre importation.

  • Les délimiteurs doivent être encodés au format ISO-8859-1.

    En règle générale, il est recommandé d'utiliser un délimiteur standard, tel qu'une tabulation, une barre verticale ou une virgule.

  • Si BigQuery ne peut pas convertir un caractère, celui-ci prendra la forme du caractère de remplacement Unicode standard : �.
  • Les fichiers JSON doivent toujours être encodés au format UTF-8.

Si vous envisagez de charger des données plates encodées au format ISO-8859-1 à l'aide de l'API, spécifiez la propriété configuration.load.encoding.

Charger des données compressées et non compressées

Le format binaire Avro est le format préconisé pour le chargement des données compressées. Les données Avro sont plus rapides à charger, car les données peuvent être lues en parallèle, même lorsque les blocs de données sont compressés.

Le format binaire Parquet est également un choix judicieux, car l'encodage par colonne de Parquet se traduit généralement par un meilleur taux de compression et des fichiers moins volumineux. Les fichiers Parquet exploitent également les techniques de compression qui permettent de charger les fichiers en parallèle.

Le format binaire ORC offre des avantages semblables à ceux du format Parquet. Les données dans les fichiers ORC sont rapides à charger, car les bandes de données peuvent être lues en parallèle. Les lignes de chaque bande de données sont chargées de manière séquentielle. Pour optimiser le temps de chargement, utilisez une taille de bande de données d'environ 256 Mo au maximum.

Pour les autres formats de données tels que CSV et JSON, BigQuery peut charger les fichiers non compressés beaucoup plus rapidement que les fichiers compressés, car les fichiers non compressés peuvent être lus en parallèle. Les fichiers non compressés étant plus volumineux, leur utilisation peut entraîner des restrictions de bande passante et une augmentation des coûts de stockage pour les données stockées dans Cloud Storage avant leur chargement dans BigQuery. Sachez également que le classement par ligne n'est pas garanti pour les fichiers compressés ou non compressés. Il est important de prendre en compte ces compromis en fonction de votre cas d'utilisation.

En règle générale, si la bande passante est limitée, il est recommandé de compresser vos fichiers à l'aide de gzip avant de les importer dans Cloud Storage. Actuellement, gzip est le seul type de compression de fichier compatible lors du chargement de données dans BigQuery. Si la vitesse de chargement est importante pour votre application et que vous avez beaucoup de bande passante pour charger vos données, conservez vos fichiers non compressés.

Charger des données dénormalisées, imbriquées et répétées

Beaucoup de développeurs sont habitués à travailler avec des bases de données relationnelles et des schémas de données normalisées. La normalisation élimine le stockage des données en double et assure la cohérence lors des mises à jour régulières des données.

BigQuery fonctionne mieux lorsque vos données sont dénormalisées. Plutôt que de conserver un schéma relationnel en étoile ou en flocon, dénormalisez vos données et profitez des champs imbriqués et répétés. Les champs imbriqués et répétés permettent de conserver des relations sans l'impact sur les performances de la préservation d'un schéma relationnel (normalisé).

Les économies de stockage réalisées rendues possibles par la normalisation des données sont moins préoccupantes dans les systèmes modernes. L'augmentation des coûts de stockage est justifiée par les gains de performance associés à la dénormalisation des données. Les jointures nécessitent une coordination des données (synonyme de bande passante de communication). La dénormalisation localise les données dans des emplacements individuels, ce qui permet une exécution en parallèle.

Si vous devez maintenir des relations tout en dénormalisant vos données, utilisez des champs imbriqués et répétés au lieu d'aplatir complètement vos données. Lorsque les données relationnelles sont complètement aplaties, la communication réseau (brassage) peut avoir un impact négatif sur les performances des requêtes.

Par exemple, dénormaliser un schéma de commandes sans utiliser de champs imbriqués et répétés peut nécessiter un regroupement par champ tel que order_id (lorsqu'il existe une relation de un à plusieurs). En raison du brassage qu'il implique, le regroupement des données est moins performant que la dénormalisation des données à l'aide de champs imbriqués et répétés.

Dans certaines circonstances, la dénormalisation des données et l'utilisation de champs imbriqués et répétés peuvent de ne pas améliorer les performances. Évitez la dénormalisation dans les cas suivants :

  • Vous avez un schéma en étoile dont les dimensions changent fréquemment.
  • Si BigQuery complète un système de traitement transactionnel en ligne (OLTP) avec une mutation au niveau de la ligne, mais ne peut pas le remplacer.

Les champs imbriqués et répétés sont compatibles avec les formats de données suivants :

  • Avro
  • Parquet
  • ORC
  • JSON (délimité par un retour à la ligne)
  • Exportations depuis Cloud Datastore
  • Exportations depuis Cloud Firestore

Pour en savoir plus sur la spécification de champs imbriqués et répétés dans votre schéma lors du chargement des données, consultez la section Spécifier des champs imbriqués et répétés.

Détection automatique de schémas

La détection automatique de schémas est disponible lorsque vous chargez des données dans BigQuery et lorsque vous interrogez une source de données externe.

Lorsque la détection automatique est activée, BigQuery lance le processus d'inférence en sélectionnant un fichier aléatoire dans la source de données et en analysant jusqu'à 100 lignes de données à utiliser comme échantillon représentatif. BigQuery procède ensuite à l'examen de chaque champ et essaie de leur affecter un type de données en fonction des valeurs de l'exemple.

Vous pouvez utiliser la détection automatique de schémas lorsque vous chargez des fichiers JSON ou CSV. La détection automatique de schémas n'est pas disponible pour les exportations depuis Cloud Datastore, les exportations depuis Cloud Firestore, les fichiers Avro, les fichiers Parquet ou les fichiers ORC, car les informations de schémas sont auto-décrites pour ces formats.

Charger des données depuis d'autres services Google

Service de transfert de données BigQuery

Le service de transfert de données BigQuery automatise le chargement de données dans BigQuery à partir des services Google suivants :

Après avoir configuré un transfert de données, le service de transfert de données BigQuery planifie et gère automatiquement les charges de données récurrentes de l'application source dans BigQuery.

Google Analytics 360

Pour apprendre à exporter votre session et accéder aux données d'une vue de rapports Google Analytics 360 dans BigQuery, consultez la section BigQuery Export dans le centre d'aide Google Analytics.

Pour obtenir des exemples d'interrogation de données Google Analytics dans BigQuery, consultez le livre de recettes BigQuery dans le centre d'aide Google Analytics.

Cloud Storage

BigQuery est compatible avec le chargement des données depuis Cloud Storage. Pour en savoir plus, consultez la section relative au chargement des données depuis Cloud Storage.

Cloud Datastore

BigQuery est compatible avec le chargement des données à partir d'exportations Cloud Datastore. Pour en savoir plus, consultez la section Charger des données à partir d'exportations Cloud Datastore.

Cloud Firestore

BigQuery est compatible avec le chargement des données à partir d'exportations Cloud Firestore. Pour en savoir plus, consultez la section Charger des données à partir d'exportations Cloud Firestore.

Google Cloud Dataflow

Cloud Dataflow permet de charger des données directement dans BigQuery. Pour en savoir plus sur l'utilisation de Cloud Dataflow pour lire et écrire dans BigQuery, consultez la page E/S BigQuery dans la documentation Cloud Dataflow.

Alternatives au chargement de données

Vous n'avez pas besoin de charger des données avant d'exécuter des requêtes dans les cas suivants :

Ensembles de données publics
Les ensembles de données publics sont des ensembles de données stockés dans BigQuery et partagés avec le public. Pour en savoir plus, consultez la section Ensembles de données publics.
Ensembles de données partagés
Vous pouvez partager des ensembles de données stockés dans BigQuery. Si quelqu'un a partagé un ensemble de données avec vous, vous pouvez exécuter des requêtes sur cet ensemble sans charger les données.
Sources de données externes
Vous pouvez ignorer le processus de chargement des données en créant une table basée sur une source de données externe. Pour en savoir plus sur les avantages et les limites de cette approche, consultez la section Sources de données externes.
Fichiers journaux Stackdriver
Stackdriver Logging fournit une option pour exporter les fichiers journaux dans BigQuery. Consultez la section Exporter des entrées de journal avec la visionneuse de journaux pour en savoir plus.

Une autre alternative au chargement des données consiste à insérer les données en streaming, un enregistrement à la fois. En règle générale, cette approche est utilisée lorsque les données doivent être disponibles immédiatement. Pour en savoir plus sur le streaming, consultez la section Insérer des données en streaming dans BigQuery.

Règles relatives aux quotas

Pour en savoir plus sur les règles relatives aux quotas pour le chargement des données, consultez la section Tâches de chargement de la page "Quotas et limites".

Prix

Actuellement, le chargement des données dans BigQuery est gratuit. Pour en savoir plus, consultez la page des tarifs.

Étapes suivantes

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Besoin d'aide ? Consultez notre page d'assistance.