Présentation du chargement des données

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.

Pour charger des données dans BigQuery, vous pouvez :

  • charger un ensemble d'enregistrements de données à partir de Cloud Storage ou d'un fichier local. Les enregistrements peuvent être au format Avro, CSV, JSON (délimité par un retour à la ligne), ORC ou Parquet ;
  • exporter les données à partir de Datastore ou de Firestore, puis charger les données exportées dans BigQuery ;
  • charger des données à partir d'autres services Google, tels que Google Ad Manager et Google Ads ;
  • diffuser des données un enregistrement à la fois en utilisant des insertions en flux continu ;
  • écrire les données d'un pipeline Dataflow dans BigQuery ;
  • utiliser des instructions LMD pour effectuer des insertions groupées. Notez que BigQuery facture les requêtes LMD. Consultez la section Tarifs pour les requêtes LMD.

Le chargement de données dans BigQuery depuis Drive n'est pas disponible actuellement, mais vous pouvez interroger des données dans 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 plus d'informations sur l'utilisation des partitions, consultez la section Gérer des tables partitionnées. Lorsque les données sont chargées dans BigQuery, elles sont converties au format en colonnes de Capacitor (format de stockage de BigQuery).

Limites

Le chargement de données dans BigQuery est soumis à certaines limites, en fonction de l'emplacement et du format des données source :

Choisir un format d'ingestion de données

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

  • Compatibilité du schéma

    Les formats exportations Avro, ORC, Parquet, les exportations Datastore et les exportations Firestore sont des formats auto-descriptifs. BigQuery crée automatiquement le schéma de la table en fonction des données sources. Pour les données JSON et CSV, vous pouvez fournir un schéma explicite ou utiliser la détection automatique de schéma.

  • Données forfaitaires ou champs imbriqués et répétés

    Les formats CSV, JSON, Avro, Parquet et ORC sont tous compatibles avec les données plates. Les formats Avro, JSON, ORC, Parquet, les exportations Datastore et les exportations Firestore 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.

  • Encodage

    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.

  • 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 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 elles peuvent être lues en parallèle, même lorsque les blocs de données sont compressés. Les fichiers Avro compressés ne sont pas acceptés, à la différence des blocs de données compressés. BigQuery est compatible avec les codecs DEFLATE et Snappy pour les blocs de données compressés dans les fichiers Avro.

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. Les fichiers Parquet compressés ne sont pas acceptés, à la différence des blocs de données compressés. BigQuery est compatible avec les codecs Snappy, GZip et LZO_1X pour les blocs de données compressés dans les fichiers Parquet.

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. Les fichiers ORC compressés ne sont pas acceptés, à la différence des pieds de page et des bandes de fichiers compressés. BigQuery est compatible avec les types de compression Zlib, Snappy, LZO et LZ4 pour les pieds de page et les bandes de fichiers ORC.

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. Gardez à l'esprit que l'ordre des lignes 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 général, si la bande passante est limitée, compressez vos fichiers CSV et JSON à l'aide de gzip avant de les télécharger sur Cloud Storage. Actuellement, gzip est le seul type de compression de fichier compatible pour les fichiers CSV et JSON 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 tel qu'un schéma en étoile ou en flocon, vous pouvez améliorer les performances en dénormalisant vos données et en tirant parti 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 rendues possibles par la normalisation des données ont moins d'impact sur les systèmes modernes. L'augmentation des coûts de stockage est justifiée par les gains de performance découlant de 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.

Pour 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 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.
  • BigQuery complète un système de traitement des transactions en ligne (OLTP, Online Transaction Processing) 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
  • JSON (délimité par un retour à la ligne)
  • ORC
  • Parquet
  • Exportations Cloud Datastore
  • Exportations Firestore

Pour savoir comment spécifier des champs imbriqués et répétés dans votre schéma lorsque vous chargez des données, consultez la section Spécifier des champs imbriqués et répétés.

Charger des données depuis d'autres services Google

BigQuery Data Transfer Service

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

Applications Google Software as a Service (SaaS) Fournisseurs de stockage cloud externes Entrepôts de donnéesEn outre, plusieurs transferts tiers sont disponibles dans Google Cloud Marketplace.

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 découvrir comment exporter vos données de session et d'appel d'une vue de rapports Google Analytics 360 dans BigQuery, consultez la page BigQuery Export dans le centre d'aide Google Analytics.

Pour obtenir des exemples d'interrogation de données Analytics dans BigQuery, consultez la page BigQuery en pratique dans le centre d'aide Google Analytics.

Dataflow

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

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 situations suivantes :

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 plus d'informations, consultez Ensembles de données publics BigQuery.
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 Logging
Cloud Logging fournit une option pour exporter les fichiers journaux dans BigQuery. Consultez la page 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 de 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".

Tarifs

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

Étapes suivantes