Charger des données avec des opérations multicloud
En tant qu'administrateur ou analyste BigQuery, vous pouvez charger des données depuis un bucket Amazon S3 (Amazon Simple Storage Service) ou depuis Azure Blob Storage dans des tables BigQuery. Vous pouvez associer les données transférées aux données présentes dans les régionsGoogle Cloud ou exploiter les fonctionnalités de BigQuery, telles que BigQuery ML. Vous pouvez également créer des instances dupliquées de vues matérialisées de certaines sources externes pour rendre ces données disponibles dans BigQuery.
Vous pouvez transférer des données vers BigQuery de différentes manières :
Pour transférer des données à partir de fichiers hébergés dans Amazon S3 et Azure Blob Storage vers des tables BigQuery, utilisez l'instruction
LOAD DATA
.Pour filtrer les données provenant de fichiers hébergés dans Amazon S3 ou Blob Storage avant de transférer les résultats dans des tables BigQuery, utilisez l'instruction
CREATE TABLE AS SELECT
. Pour ajouter des données à la table de destination, utilisez l'instructionINSERT INTO SELECT
. La manipulation des données est appliquée aux tables externes qui font référence aux données d'Amazon S3 ou de Blob Storage.Créez des instances répliquées de vues matérialisées de données externes Amazon S3, Apache Iceberg ou Salesforce Data Cloud dans un ensemble de données BigQuery. Les données sont ainsi disponibles localement dans BigQuery.
Quotas et limites
Pour en savoir plus sur les quotas et les limites, consultez la page Quotas et limites des jobs de requête.
Avant de commencer
Pour fournir à Google Cloud l'accès en lecture nécessaire pour charger ou filtrer des données dans d'autres clouds, demandez à votre administrateur de créer une connexion et de la partager avec vous. Pour en savoir plus sur la création de connexions, consultez Se connecter à Amazon S3 ou Blob Storage.
Rôle requis
Pour obtenir les autorisations nécessaires pour charger des données à l'aide de transferts entre clouds, demandez à votre administrateur de vous accorder le rôle IAM Éditeur de données BigQuery (roles/bigquery.dataEditor
) sur l'ensemble de données.
Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.
Ce rôle prédéfini contient les autorisations requises pour charger des données à l'aide de transferts entre clouds. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :
Autorisations requises
Vous devez disposer des autorisations suivantes pour charger des données à l'aide de transferts entre cloud :
-
bigquery.tables.create
-
bigquery.tables.get
-
bigquery.tables.updateData
-
bigquery.tables.update
-
bigquery.jobs.create
-
bigquery.connections.use
Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.
Pour en savoir plus sur les rôles IAM dans BigQuery, consultez Rôles et autorisations IAM BigQuery.
Tarifs
Les octets transférés d'un cloud à l'autre vous sont facturés à l'aide de l'instruction LOAD
. Pour connaître les tarifs, consultez la section sur le transfert de données entre les Cloud pour Omni dans les Tarifs de BigQuery Omni.
Les octets transférés d'un cloud à l'autre à l'aide de l'instruction CREATE TABLE AS SELECT
ou de l'instruction INSERT INTO SELECT
vous sont facturés, ainsi que la capacité de calcul.
Les instructions LOAD
et CREATE TABLE AS SELECT
nécessitent des emplacements dans les régions BigQuery Omni afin d'analyser les fichiers Amazon S3 et Blob Storage en vue de leur chargement. Pour en savoir plus, consultez les Tarifs de BigQuery Omni.
Pour les instances répliquées de vues matérialisées de sources de données externes, les coûts peuvent également inclure la tarification des vues matérialisées.
Bonnes pratiques concernant les options de chargement et de filtrage
- Évitez de charger plusieurs fichiers de taille inférieure à 5 Mo. Créez plutôt une table externe pour votre fichier, et exportez le résultat de la requête vers Amazon S3 ou Blob Storage pour créer un fichier plus volumineux. Cette méthode permet d'améliorer le temps de transfert de vos données. Pour en savoir plus sur la limite du nombre maximal de résultats de requête, consultez la section Taille maximale des résultats de requête BigQuery Omni.
- Si vos données source se trouvent dans un fichier compressé au format gzip, définissez l'option
external_table_options.compression
surGZIP
lors de la création des tables externes.
Charger les données
Vous pouvez charger des données dans BigQuery à l'aide de l'instruction LOAD DATA [INTO|OVERWRITE]
.
Limites
- La connexion et l'ensemble de données de destination doivent appartenir au même projet. Le chargement de données entre projets n'est pas accepté.
LOAD DATA
n'est compatible que lorsque vous transférez des données depuis Amazon Simple Storage Service (Amazon S3) ou Azure Blob Storage vers une région BigQuery colocalisée. Pour plus d'informations, consultez la section Emplacements.- Vous pouvez transférer des données depuis n'importe quelle région
US
vers une région multirégionaleUS
. Vous pouvez également transférer des données depuis n'importe quelle régionEU
vers une région multirégionaleEU
.
- Vous pouvez transférer des données depuis n'importe quelle région
Exemple
Exemple 1
L'exemple suivant charge un fichier Parquet nommé sample.parquet
à partir d'un bucket Amazon S3 dans la table test_parquet
avec un schéma de détection automatique :
LOAD DATA INTO mydataset.testparquet FROM FILES ( uris = ['s3://test-bucket/sample.parquet'], format = 'PARQUET' ) WITH CONNECTION `aws-us-east-1.test-connection`
Exemple 2
L'exemple suivant charge un fichier CSV ayant le préfixe sampled*
depuis Blob Storage dans la table test_csv
avec le partitionnement de colonne prédéfini par heure :
LOAD DATA INTO mydataset.test_csv (Number INT64, Name STRING, Time DATE) PARTITION BY Time FROM FILES ( format = 'CSV', uris = ['azure://test.blob.core.windows.net/container/sampled*'], skip_leading_rows=1 ) WITH CONNECTION `azure-eastus2.test-connection`
Exemple 3
L'exemple suivant remplace la table test_parquet
existante par des données d'un fichier nommé sample.parquet
avec un schéma de détection automatique :
LOAD DATA OVERWRITE mydataset.testparquet FROM FILES ( uris = ['s3://test-bucket/sample.parquet'], format = 'PARQUET' ) WITH CONNECTION `aws-us-east-1.test-connection`
Filtrer les données
Vous pouvez filtrer les données avant de les transférer dans BigQuery à l'aide des instructions CREATE TABLE AS SELECT
et INSERT INTO SELECT
.
Limites
Si le résultat de la requête
SELECT
dépasse 60 Gio en octets logiques, la requête échoue. La table n'est pas créée et les données ne sont pas transférées. Pour savoir comment réduire le volume des données analysées, consultez la section Réduire la quantité de données traitée dans les requêtes.Les tables temporaires ne sont pas acceptées.
Le transfert du format de données géospatiales Binaire connu (WKB) n'est pas accepté.
L'instruction
INSERT INTO SELECT
n'est pas compatible avec le transfert de données dans une table clusterisée.Dans l'instruction
INSERT INTO SELECT
, si la table de destination est identique à la table source de la requêteSELECT
, l'instructionINSERT INTO SELECT
ne modifie aucune ligne de la table de destination. La table de destination n'est pas modifiée, car BigQuery ne peut pas lire les données entre les régions.CREATE TABLE AS SELECT
etINSERT INTO SELECT
ne sont compatibles que si vous transférez des données depuis Amazon S3 ou Blob Storage vers une région BigQuery colocalisée. Pour plus d'informations, consultez la section Emplacements.- Vous pouvez transférer des données depuis n'importe quelle région
US
vers une région multirégionaleUS
. Vous pouvez également transférer des données depuis n'importe quelle régionEU
vers une région multirégionaleEU
.
- Vous pouvez transférer des données depuis n'importe quelle région
Exemple
Exemple 1
Supposons que vous disposiez d'une table BigLake nommée myawsdataset.orders
qui référence les données d'Amazon S3.
Vous souhaitez transférer les données de cette table vers une table BigQuery myotherdataset.shipments
dans l'emplacement multirégional US.
Commencez par afficher des informations sur la table myawsdataset.orders
:
bq show myawsdataset.orders;
Le résultat ressemble à ce qui suit :
Last modified Schema Type Total URIs Expiration ----------------- -------------------------- ---------- ------------ ----------- 31 Oct 17:40:28 |- l_orderkey: integer EXTERNAL 1 |- l_partkey: integer |- l_suppkey: integer |- l_linenumber: integer |- l_returnflag: string |- l_linestatus: string |- l_commitdate: date
Ensuite, affichez les informations sur la table myotherdataset.shipments
:
bq show myotherdataset.shipments
Le résultat renvoyé ressemble à ceci : Certaines colonnes sont omises pour simplifier la sortie.
Last modified Schema Total Rows Total Bytes Expiration Time Partitioning Clustered Fields Total Logical ----------------- --------------------------- ------------ ------------- ------------ ------------------- ------------------ --------------- 31 Oct 17:34:31 |- l_orderkey: integer 3086653 210767042 210767042 |- l_partkey: integer |- l_suppkey: integer |- l_commitdate: date |- l_shipdate: date |- l_receiptdate: date |- l_shipinstruct: string |- l_shipmode: string
Désormais, à l'aide de l'instruction CREATE TABLE AS SELECT
, vous pouvez charger des données de manière sélective dans la table myotherdataset.orders
de l'emplacement multirégional US :
CREATE OR REPLACE TABLE myotherdataset.orders PARTITION BY DATE_TRUNC(l_commitdate, YEAR) AS SELECT * FROM myawsdataset.orders WHERE EXTRACT(YEAR FROM l_commitdate) = 1992;
Vous pouvez ensuite effectuer une opération de jointure avec la table nouvellement créée :
SELECT orders.l_orderkey, orders.l_orderkey, orders.l_suppkey, orders.l_commitdate, orders.l_returnflag, shipments.l_shipmode, shipments.l_shipinstruct FROM myotherdataset.shipments JOIN `myotherdataset.orders` as orders ON orders.l_orderkey = shipments.l_orderkey AND orders.l_partkey = shipments.l_partkey AND orders.l_suppkey = shipments.l_suppkey WHERE orders.l_returnflag = 'R'; -- 'R' means refunded.
Lorsque de nouvelles données sont disponibles, ajoutez les données de l'année 1993 à la table de destination à l'aide de l'instruction INSERT INTO SELECT
:
INSERT INTO myotherdataset.orders SELECT * FROM myawsdataset.orders WHERE EXTRACT(YEAR FROM l_commitdate) = 1993;
Exemple 2
L'exemple suivant insère des données dans une table partitionnée par date d'ingestion :
CREATE TABLE mydataset.orders(id String, numeric_id INT64) PARTITION BY _PARTITIONDATE;
Après avoir créé une table partitionnée, vous pouvez insérer des données dans la table partitionnée par date d'ingestion :
INSERT INTO mydataset.orders( _PARTITIONTIME, id, numeric_id) SELECT TIMESTAMP("2023-01-01"), id, numeric_id, FROM mydataset.ordersof23 WHERE numeric_id > 4000000;
Instances dupliquées de vues matérialisées
Une instance répliquée de vues matérialisées est une réplication de données externes Amazon Simple Storage Service (Amazon S3), Apache Iceberg ou Salesforce Data Cloud dans un ensemble de données BigQuery. Les données sont ainsi disponibles localement dans BigQuery. Cela peut vous aider à éviter les coûts de sortie des données et à améliorer les performances des requêtes. BigQuery vous permet de créer des vues matérialisées sur des tables compatibles avec le cache des métadonnées BigLake sur les données Amazon Simple Storage Service (Amazon S3), Apache Iceberg ou Salesforce Data Cloud.
Une instance dupliquée avec vue matérialisée vous permet d'utiliser les données de la vue matérialisée Amazon S3, Iceberg ou Data Cloud dans les requêtes tout en évitant les coûts de sortie des données et en améliorant leurs performances. Pour ce faire, une instance répliquée avec vue matérialisée réplique les données Amazon S3, Iceberg ou Data Cloud vers un ensemble de données situé dans une région BigQuery compatible, afin que les données soient disponibles localement dans BigQuery.
Avant de commencer
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verify that billing is enabled for your Google Cloud project.
- Assurez-vous de disposer des autorisations Identity and Access Management (IAM) requises pour effectuer les tâches décrites dans cette section.
-
bigquery.tables.create
-
bigquery.tables.get
-
bigquery.tables.getData
-
bigquery.tables.replicateData
-
bigquery.jobs.create
- Créez un ensemble de données dans une région compatible avec Amazon S3.
- Créez une table source dans l'ensemble de données que vous avez créé à l'étape précédente. La table source peut présenter l'un des types de tables suivants :
- Table BigLake Amazon S3 avec la mise en cache des métadonnées activée et qui n'utilise pas de format de fichier Iceberg.
- Une table externe Apache Iceberg.
- Table Data Cloud
Dans la console Google Cloud , accédez à la page BigQuery.
Dans le volet Explorateur, accédez au projet et à l'ensemble de données dans lesquels vous souhaitez créer l'instance répliquée de vues matérialisées, puis cliquez sur > Créer une table.
Afficher les actionsDans la section Source de la boîte de dialogue Créer une table, procédez comme suit :
- Pour le champ Créer une table à partir de, sélectionnez Table/vue existante.
- Pour le champ Projet, saisissez le projet dans lequel se trouve la table ou la vue source.
- Pour le champ Ensemble de données, saisissez l'ensemble de données où se trouve la table ou la vue source.
- Pour le champ Vue, saisissez la table ou la vue source que vous répliquez. Si vous choisissez une vue, il doit s'agir d'une vue autorisée. Sinon, toutes les tables utilisées pour générer cette vue doivent se trouver dans l'ensemble de données de la vue.
Facultatif : Pour Obsolescence maximale des vues matérialisées locales, saisissez une valeur
max_staleness
pour votre vue matérialisée locale.Dans la section Destination de la boîte de dialogue Créer une table, procédez comme suit :
- Pour le champ Projet, saisissez le projet dans lequel vous souhaitez créer l'instance répliquée de vues matérialisées.
- Pour le champ Ensemble de données, saisissez l'ensemble de données dans lequel vous souhaitez créer l'instance répliquée de vues matérialisées.
- Pour le champ Nom de la vue matérialisée de l'instance répliquée, saisissez un nom pour votre instance répliquée.
Facultatif : Spécifiez des tags et des options avancées pour votre instance répliquée de vues matérialisées. Si vous ne spécifiez pas d'ensemble de données pour l'ensemble de données Vue matérialisée locale, un ensemble de données est automatiquement créé dans le même projet et la même région que les données sources, et nommé
bq_auto_generated_local_mv_dataset
. Si vous ne spécifiez pas de nom pour Nom Vue matérialisée locale, un nom est automatiquement créé dans le même projet et la même région que les données sources, et porte le préfixebq_auto_generated_local_mv_
.Cliquez sur Créer une table.
- Créez une vue matérialisée sur la table de base de l'ensemble de données que vous avez créé. Vous pouvez également créer la vue matérialisée dans un autre ensemble de données situé dans une région Amazon S3.
- Autorisez la vue matérialisée sur les ensembles de données contenant les tables sources utilisées dans la requête ayant créé la vue matérialisée.
- Si vous avez configuré l'actualisation manuelle du cache de métadonnées pour la table source, exécutez la procédure système
BQ.REFRESH_EXTERNAL_METADATA_CACHE
pour actualiser le cache de métadonnées. - Exécutez la procédure système
BQ.REFRESH_MATERIALIZED_VIEW
pour actualiser la vue matérialisée. Créez des instances répliquées de vues matérialisées à l'aide de l'instruction
CREATE MATERIALIZED VIEW AS REPLICA OF
:CREATE MATERIALIZED VIEW PROJECT_ID.BQ_DATASET.REPLICA_NAME OPTIONS(replication_interval_seconds=REPLICATION_INTERVAL) AS REPLICA OF PROJECT_ID.S3_DATASET.MATERIALIZED_VIEW_NAME;
Remplacez l'élément suivant :
PROJECT_ID
: nom du projet dans lequel vous souhaitez créer l'instance répliquée de vues matérialisées, par exemplemyproject
.BQ_DATASET
: nom de l'ensemble de données BigQuery dans lequel vous souhaitez créer l'instance répliquée de vues matérialisées, par exemplebq_dataset
. L'ensemble de données doit se trouver dans la région BigQuery qui correspond à la région de la vue matérialisée source.REPLICA_NAME
: nom de l'instance répliquée de la vues matérialisées que vous souhaitez créer, par exemplemy_mv_replica
.REPLICATION_INTERVAL
: indique la fréquence à laquelle les données de la vue matérialisée source sont répliquées vers l'instance répliquée, en secondes. Doit être une valeur comprise entre 60 et 3600, inclus. La valeur par défaut est 300 (5 minutes).S3_DATASET
: nom de l'ensemble de données contenant la vue matérialisée source, par exemples3_dataset
.MATERIALIZED_VIEW_NAME
: nom de la vue matérialisée à répliquer, par exemple,my_mv
.
L'exemple suivant crée une vue matérialisée nommée
mv_replica
dansbq_dataset
:CREATE MATERIALIZED VIEW `myproject.bq_dataset.mv_replica` OPTIONS( replication_interval_seconds=600 ) AS REPLICA OF `myproject.s3_dataset.my_s3_mv`
- Pour connaître la fraîcheur de l'instance dupliquée de la vue matérialisée, consultez le champ Dernière modification dans le volet Détails de l'instance dupliquée de la vue matérialisée.
- Pour connaître la fraîcheur de la vue matérialisée source, consultez le champ Dernière modification dans le volet Détails de la vue matérialisée.
- Pour connaître la fraîcheur du cache des métadonnées de la table Amazon S3, Iceberg ou Data Cloud source, consultez le champ Obsolescence maximale dans le volet Détails de la vue matérialisée.
northamerica-northeast1
northamerica-northeast2
us-central1
us-east1
us-east4
us-east5
us-south1
us-west1
us-west2
us-west3
us-west4
northamerica-northeast1
northamerica-northeast2
us-central1
us-east1
us-east4
us-east5
us-south1
us-west1
us-west2
us-west3
us-west4
europe-central2
europe-north1
europe-southwest1
europe-west1
europe-west2
europe-west3
europe-west4
europe-west6
europe-west8
europe-west9
europe-west10
asia-east1
asia-east2
asia-northeast1
asia-northeast2
asia-northeast3
asia-south1
asia-south2
asia-southeast1
australia-southeast1
australia-southeast2
- Vous ne pouvez pas créer d'instances dupliquées de vues matérialisées basées sur des tables qui utilisentsécurité au niveau des lignes ou sécurité au niveau des colonnes.
- Vous ne pouvez pas utiliser de clés de chiffrement gérées par le client (CMEK) avec la vue matérialisée source ou l'instance répliquée de la vue matérialisée.
- Vous ne pouvez créer des instances dupliquées de vues matérialisées que pour les vues matérialisées basées sur des tables qui utilisent la mise en cache des métadonnées.
- Vous ne pouvez créer qu'une seule instance dupliquée de vue matérialisée pour une vue matérialisée source donnée.
- Vous ne pouvez créer des instances répliquées de vues matérialisées que pour les vues matérialisées autorisées.
- Apprenez-en plus sur BigQuery ML.
- Découvrez BigQuery Omni.
- Découvrez comment exécuter des requêtes.
- Découvrez comment configurer VPC Service Controls pour BigQuery Omni.
- Découvrez comment programmer et gérer des tâches de chargement récurrentes à partir d'Amazon S3 dans BigQuery et à partir de Blob Storage dans BigQuery.
Rôles requis
Pour obtenir les autorisations nécessaires pour effectuer les tâches décrites dans cette section, demandez à votre administrateur de vous accorder le rôle IAM Administrateur BigQuery (roles/bigquery.admin
).
Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.
Ce rôle prédéfini contient les autorisations requises pour effectuer les tâches décrites dans cette section. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :
Autorisations requises
Vous devez disposer des autorisations suivantes pour effectuer les tâches décrites dans cette section :
Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.
Pour en savoir plus sur BigQuery IAM, consultez Rôles et autorisations BigQuery IAM.
Préparer un ensemble de données pour les instances répliquées de vues matérialisées
Avant de créer une instance dupliquée avec vue matérialisée, vous devez effectuer les tâches suivantes :
Créer des instances dupliquées avec vue matérialisée
Sélectionnez l'une des options suivantes :
Console
Une vue matérialisée locale est créée (si elle n'a pas été spécifiée) et autorisée dans l'ensemble de données source. L'instance répliquée de vues matérialisées est ensuite créée dans l'ensemble de données de destination.
SQL
Une fois que vous avez créé l'instance répliquée de vues matérialisées, le processus de réplication interroge la vue matérialisée source pour rechercher les modifications et réplique les données sur l'instance répliquée de vues matérialisées, en actualisant les données à l'intervalle que vous avez spécifié dans l'option replication_interval_seconds
ou max_staleness
. Si vous interrogez l'instance répliquée avant la fin du premier remplissage, une erreur backfill in progress
s'affiche. Vous pouvez interroger les données de l'instance répliquée de vues matérialisées une fois la première réplication terminée.
Fraîcheur des données
Une fois que vous avez créé l'instance dupliquée de la vue matérialisée, le processus de réplication interroge la vue matérialisée source pour rechercher les modifications et réplique les données sur l'instance dupliquée de la vue matérialisée. Les données sont répliquées à l'intervalle que vous avez spécifié dans l'option replication_interval_seconds
de l'instruction CREATE MATERIALIZED VIEW AS REPLICA OF
.
Outre l'intervalle de réplication, l'actualisation des données répliquées de la vue matérialisée est également affectée par la fréquence d'actualisation de la vue matérialisée source et la fréquence d'actualisation du cache de métadonnées de la table Amazon S3, Iceberg ou Data Clous utilisée par les actualisations de la vue matérialisée.
Vous pouvez vérifier la fraîcheur des données de l'instance dupliquée de la vue matérialisée et des ressources sur lesquelles elle repose à l'aide de la console Google Cloud :
Régions compatibles avec les instances répliquées de vues matérialisées
Utilisez les mappages d'emplacement dans le tableau suivant lorsque vous créez des instances dupliquées de vue matérialisée :
Emplacement de la vue matérialisée source | Emplacement de l'instance répliquée de la vue matérialisée |
---|---|
aws-us-east-1 |
Emplacement multirégional US ou l'une des régions suivantes : |
aws-us-west-2 |
Emplacement multirégional US ou l'une des régions suivantes : |
aws-eu-west-1 |
Emplacement multirégional EU ou l'une des régions suivantes : |
aws-ap-northeast-2 |
L'une des régions suivantes : |
aws-ap-southeast-2 |
L'une des régions suivantes : |
Limites des instances dupliquées avec vue matérialisée
Tarification des instances répliquées de vues matérialisées
L'utilisation d'instances dupliquées de vues matérialisées entraîne des coûts de calcul, de transfert de données sortant et de stockage.