Caricare i dati con operazioni cross-cloud
In qualità di amministratore o analista BigQuery, puoi caricare i dati da un bucket Amazon Simple Storage Service (Amazon S3) o da Archiviazione BLOB di Azure nelle tabelle BigQuery. Puoi unire i dati trasferiti con quelli presenti nelle regioniGoogle Cloud o sfruttare le funzionalità di BigQuery come BigQuery ML. Puoi anche creare repliche di vista materializzata di determinate origini esterne per rendere disponibili i dati in BigQuery.
Puoi trasferire i dati in BigQuery nei seguenti modi:
Trasferisci i dati dai file in Amazon S3 e Archiviazione BLOB di Azure nelle tabelle BigQuery utilizzando l'istruzione
LOAD DATA
.Filtra i dati dai file in Amazon S3 o Blob Storage prima di trasferire i risultati nelle tabelle BigQuery, utilizzando l'istruzione
CREATE TABLE AS SELECT
. Per aggiungere i dati alla tabella di destinazione, utilizza l'istruzioneINSERT INTO SELECT
. La manipolazione dei dati viene applicata alle tabelle esterne che fanno riferimento ai dati di Amazon S3 o Blob Storage.Crea repliche di viste materializzate di dati esterni Amazon S3, Apache Iceberg o Salesforce Data Cloud in un dataset BigQuery in modo che i dati siano disponibili localmente in BigQuery.
Quote e limiti
Per informazioni su quote e limiti, consulta Quote e limiti dei job di query.
Prima di iniziare
Per fornire a Google Cloud l'accesso in lettura necessario per caricare o filtrare i dati in altri cloud, chiedi all'amministratore di creare una connessione e condividerla con te. Per informazioni su come creare connessioni, vedi Connessione ad Amazon S3 o Blob Storage.
Ruolo richiesto
Per ottenere le autorizzazioni
necessarie per caricare i dati utilizzando i trasferimenti cross-cloud,
chiedi all'amministratore di concederti il ruolo IAM
Editor dati BigQuery (roles/bigquery.dataEditor
) sul set di dati.
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Questo ruolo predefinito contiene le autorizzazioni necessarie per caricare i dati utilizzando i trasferimenti cross-cloud. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:
Autorizzazioni obbligatorie
Per caricare i dati utilizzando i trasferimenti cross-cloud sono necessarie le seguenti autorizzazioni:
-
bigquery.tables.create
-
bigquery.tables.get
-
bigquery.tables.updateData
-
bigquery.tables.update
-
bigquery.jobs.create
-
bigquery.connections.use
Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.
Per saperne di più sui ruoli IAM in BigQuery, vedi Ruoli e autorizzazioni IAM di BigQuery.
Prezzi
Ti vengono addebitati i byte trasferiti tra i cloud utilizzando l'istruzione
LOAD
. Per informazioni
sui prezzi, consulta la sezione Trasferimento di dati cross-cloud di Omni nella pagina Prezzi di BigQuery Omni.
Ti vengono addebitati i byte trasferiti tra i cloud utilizzando l'istruzione
CREATE TABLE AS SELECT
o
INSERT INTO SELECT
e per la capacità di calcolo.
Le istruzioni LOAD
e CREATE TABLE AS SELECT
richiedono slot nelle regioni BigQuery Omni per analizzare i file Amazon S3 e Blob Storage per caricarli. Per saperne di più, consulta la pagina relativa ai prezzi di BigQuery Omni.
Per le repliche delle vista materializzata delle origini dati esterne, i costi possono includere anche i prezzi delle viste materializzate.
Best practice per le opzioni di caricamento e filtro
- Evita di caricare più file di dimensioni inferiori a 5 MB. Crea invece una tabella esterna per il file ed esporta il risultato della query in Amazon S3 o Blob Storage per creare un file più grande. Questo metodo contribuisce a migliorare il tempo di trasferimento dei dati. Per informazioni sul limite per il risultato massimo della query, consulta Dimensioni massime del risultato della query BigQuery Omni.
- Se i dati di origine si trovano in un file compresso con gzip, imposta l'opzione
external_table_options.compression
suGZIP
durante la creazione di tabelle esterne.
Carica dati
Puoi caricare i dati in BigQuery con l'istruzione
LOAD DATA [INTO|OVERWRITE]
.
Limitazioni
- La connessione e il set di dati di destinazione devono appartenere allo stesso progetto. Il caricamento dei dati tra i progetti non è supportato.
LOAD DATA
è supportato solo quando trasferisci dati da Amazon Simple Storage Service (Amazon S3) o Azure Blob Storage a una regione BigQuery colocalizzata. Per ulteriori informazioni, consulta Località.- Puoi trasferire i dati da qualsiasi regione
US
a una regioneUS
multiregionale. Puoi anche eseguire il trasferimento da qualsiasi regioneEU
a una regione multiregionaleEU
.
- Puoi trasferire i dati da qualsiasi regione
Esempio
Esempio 1
L'esempio seguente carica un file Parquet denominato sample.parquet
da un bucket Amazon S3
nella tabella test_parquet
con uno schema di rilevamento automatico:
LOAD DATA INTO mydataset.testparquet FROM FILES ( uris = ['s3://test-bucket/sample.parquet'], format = 'PARQUET' ) WITH CONNECTION `aws-us-east-1.test-connection`
Esempio 2
Il seguente esempio carica un file CSV con il prefisso sampled*
da Blob Storage nella tabella test_csv
con partizionamento delle colonne predefinito in base all'ora:
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`
Esempio 3
Il seguente esempio sovrascrive la tabella esistente test_parquet
con
i dati di un file denominato sample.parquet
con uno schema di rilevamento automatico:
LOAD DATA OVERWRITE mydataset.testparquet FROM FILES ( uris = ['s3://test-bucket/sample.parquet'], format = 'PARQUET' ) WITH CONNECTION `aws-us-east-1.test-connection`
Filtra dati
Puoi filtrare i dati prima di trasferirli in BigQuery utilizzando l'istruzione CREATE TABLE AS SELECT
e l'istruzione INSERT INTO SELECT
.
Limitazioni
Se il risultato della query
SELECT
supera i 60 GiB in byte logici, la query non riesce. La tabella non viene creata e i dati non vengono trasferiti. Per scoprire come ridurre le dimensioni dei dati scansionati, consulta Ridurre i dati elaborati nelle query.Le tabelle temporanee non sono supportate.
Il trasferimento del formato di dati geospaziali Well-known binary (WKB) non è supportato.
L'istruzione
INSERT INTO SELECT
non supporta il trasferimento di dati in una tabella in cluster.Nell'istruzione
INSERT INTO SELECT
, se la tabella di destinazione è la stessa della tabella di origine nella querySELECT
, l'istruzioneINSERT INTO SELECT
non modifica alcuna riga nella tabella di destinazione. La tabella di destinazione non viene modificata perché BigQuery non può leggere i dati tra le regioni.CREATE TABLE AS SELECT
eINSERT INTO SELECT
sono supportati solo quando trasferisci dati da Amazon S3 o Blob Storage a una regione BigQuery colocalizzata. Per ulteriori informazioni, consulta Località.- Puoi trasferire i dati da qualsiasi regione
US
a una regioneUS
multiregionale. Puoi anche eseguire il trasferimento da qualsiasi regioneEU
a una regione multiregionaleEU
.
- Puoi trasferire i dati da qualsiasi regione
Esempio
Esempio 1
Supponiamo di avere una tabella BigLake denominata myawsdataset.orders
che fa riferimento ai dati di Amazon S3.
Vuoi trasferire i dati da questa tabella a una
tabella BigQuery myotherdataset.shipments
nella multiregione US.
Innanzitutto, visualizza le informazioni sulla tabella myawsdataset.orders
:
bq show myawsdataset.orders;
L'output è simile al seguente:
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
Successivamente, visualizza le informazioni sulla tabella myotherdataset.shipments
:
bq show myotherdataset.shipments
L'output è simile al seguente. Alcune colonne vengono omesse per semplificare l'output.
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
Ora, utilizzando l'istruzione CREATE TABLE AS SELECT
, puoi caricare selettivamente i dati
nella tabella myotherdataset.orders
nella regione Stati Uniti (più regioni):
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;
Puoi quindi eseguire un'operazione di unione con la tabella appena creata:
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.
Quando sono disponibili nuovi dati, aggiungi i dati dell'anno 1993 alla tabella di destinazione
utilizzando l'istruzione INSERT INTO SELECT
:
INSERT INTO myotherdataset.orders SELECT * FROM myawsdataset.orders WHERE EXTRACT(YEAR FROM l_commitdate) = 1993;
Esempio 2
L'esempio seguente inserisce i dati in una tabella partizionata per data di importazione:
CREATE TABLE mydataset.orders(id String, numeric_id INT64) PARTITION BY _PARTITIONDATE;
Dopo aver creato una tabella partizionata, puoi inserire i dati nella tabella partizionata in base all'ora di importazione:
INSERT INTO mydataset.orders( _PARTITIONTIME, id, numeric_id) SELECT TIMESTAMP("2023-01-01"), id, numeric_id, FROM mydataset.ordersof23 WHERE numeric_id > 4000000;
Repliche della vista materializzata
Una replica della vista materializzata è una replica di dati esterni di Amazon Simple Storage Service (Amazon S3), Apache Iceberg o Salesforce Data Cloud in un dataset BigQuery, in modo che i dati siano disponibili localmente in BigQuery. In questo modo, puoi evitare i costi di traffico in uscita dei dati e migliorare il rendimento delle query. BigQuery ti consente di creare viste materializzate su tabelle abilitate alla cache dei metadati BigLake su Amazon Simple Storage Service (Amazon S3), Apache Iceberg o Salesforce Data Cloud.
Una replica della vista materializzata ti consente di utilizzare i dati della vista materializzata Amazon S3, Iceberg o Data Cloud nelle query, evitando i costi di uscita dei dati e migliorando le prestazioni delle query. Una replica della vista materializzata esegue questa operazione replicando i dati di Amazon S3, Iceberg o Data Cloud in un set di dati in una regione BigQuery supportata, in modo che i dati siano disponibili localmente in BigQuery.
Prima di iniziare
- 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.
- Assicurati di disporre delle autorizzazioni Identity and Access Management (IAM) richieste per eseguire le attività descritte in questa sezione.
-
bigquery.tables.create
-
bigquery.tables.get
-
bigquery.tables.getData
-
bigquery.tables.replicateData
-
bigquery.jobs.create
- Crea un set di dati in una regione che supporta Amazon S3.
- Crea una tabella di origine nel set di dati creato nel passaggio precedente. La
tabella di origine può essere uno dei seguenti tipi di tabella:
- Una tabella BigLake Amazon S3 con la memorizzazione nella cache dei metadati attivata e che non utilizza un formato file Iceberg.
- Una tabella esterna Apache Iceberg.
- Una tabella Data Cloud.
Nella console Google Cloud , vai alla pagina BigQuery.
Nel riquadro Explorer, vai al progetto e al set di dati in cui vuoi creare la replica della vista materializzata, quindi fai clic su > Crea tabella.
Visualizza azioniNella sezione Origine della finestra di dialogo Crea tabella, segui questi passaggi:
- In Crea tabella da, seleziona Tabella/Vista esistente.
- In Progetto, inserisci il progetto in cui si trova la tabella o la vista di origine.
- Per Dataset, inserisci il set di dati in cui si trova la tabella o la vista di origine.
- In Visualizzazione, inserisci la tabella o la visualizzazione di origine che stai replicando. Se scegli una vista, deve essere una vista autorizzata, altrimenti tutte le tabelle utilizzate per generare la vista devono trovarsi nel relativo set di dati.
(Facoltativo) Per Inattività massima vista materializzata locale, inserisci un valore
max_staleness
per la vista materializzata locale.Nella sezione Destinazione della finestra di dialogo Crea tabella, segui questi passaggi:
- In Progetto, inserisci il progetto in cui vuoi creare la replica della vista materializzata.
- In Set di dati, inserisci il set di dati in cui vuoi creare la replica della vista materializzata.
- In Nome della vista materializzata della replica, inserisci un nome per la replica.
(Facoltativo) Specifica tag e opzioni avanzate per la replica della vista materializzata. Se non specifichi un set di dati per Local Materialized View Dataset, ne viene creato automaticamente uno nello stesso progetto e nella stessa regione dei dati di origine e denominato
bq_auto_generated_local_mv_dataset
. Se non specifichi un nome per Nome vista materializzata locale, ne viene creato automaticamente uno nello stesso progetto e nella stessa regione dei dati di origine e viene assegnato il prefissobq_auto_generated_local_mv_
.Fai clic su Crea tabella.
- Crea una vista materializzata sulla tabella di base nel set di dati che hai creato. Puoi anche creare la vista materializzata in un altro set di dati che si trova in una regione Amazon S3.
- Autorizza la vista materializzata sui set di dati che contengono le tabelle di origine utilizzate nella query che ha creato la vista materializzata.
- Se hai configurato l'aggiornamento manuale della cache dei metadati per la tabella di origine,
esegui la
procedura di sistema
BQ.REFRESH_EXTERNAL_METADATA_CACHE
per aggiornare la cache dei metadati. - Esegui la
procedura di sistema
BQ.REFRESH_MATERIALIZED_VIEW
per aggiornare la vista materializzata. Crea repliche della vista materializzata utilizzando l'istruzione
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;
Sostituisci quanto segue:
PROJECT_ID
: il nome del progetto in cui vuoi creare la replica della vista materializzata, ad esempiomyproject
.BQ_DATASET
: il nome del set di dati BigQuery in cui vuoi creare la replica della vista materializzata, ad esempiobq_dataset
. Il set di dati deve trovarsi nella regione BigQuery che corrisponde alla regione della vista materializzata di origine.REPLICA_NAME
: il nome della replica della vista materializzata che vuoi creare, ad esempiomy_mv_replica
.REPLICATION_INTERVAL
: specifica la frequenza con cui replicare i dati dalla vista materializzata di origine alla replica, in secondi. Deve essere un valore compreso tra 60 e 3600 inclusi. Il valore predefinito è 300 (5 minuti).S3_DATASET
: il nome del set di dati che contiene la vista materializzata di origine, ad esempios3_dataset
.MATERIALIZED_VIEW_NAME
: il nome della vista materializzata da replicare, ad esempiomy_mv
.
L'esempio seguente crea una replica della vista materializzata denominata
mv_replica
inbq_dataset
:CREATE MATERIALIZED VIEW `myproject.bq_dataset.mv_replica` OPTIONS( replication_interval_seconds=600 ) AS REPLICA OF `myproject.s3_dataset.my_s3_mv`
- Per la freschezza della replica della vista materializzata, esamina il campo Ultima modifica nel riquadro Dettagli della replica della vista materializzata.
- Per l'aggiornamento della vista materializzata dell'origine, esamina il campo Ultima modifica nel riquadro Dettagli della vista materializzata.
- Per l'origine Amazon S3, Iceberg o l'aggiornamento della cache dei metadati della tabella Data Cloud, esamina il campo Massima obsolescenza nel riquadro Dettagli della vista materializzata.
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
- Non puoi creare repliche di vista materializzata per le viste materializzate basate su tabelle che utilizzano la sicurezza a livello di riga o la sicurezza a livello di colonna.
- Non puoi utilizzare le chiavi di crittografia gestite dal cliente (CMEK) con la vista materializzata di origine o con la replica della vista materializzata.
- Puoi creare repliche della vista materializzata solo per le viste materializzate basate su tabelle che utilizzano la memorizzazione nella cache dei metadati.
- Puoi creare una sola replica della vista materializzata per una determinata vista materializzata di origine.
- Puoi creare repliche della vista materializzata solo per le viste materializzate autorizzate.
- Scopri di più su BigQuery ML.
- Scopri di più su BigQuery Omni.
- Scopri come eseguire query.
- Scopri come configurare i Controlli di servizio VPC per BigQuery Omni.
- Scopri come pianificare e gestire i job di caricamento ricorrenti da Amazon S3 a BigQuery e da Archiviazione BLOB a BigQuery.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per eseguire le attività descritte in questa sezione, chiedi all'amministratore di concederti il ruolo IAM Amministratore BigQuery (roles/bigquery.admin
).
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Questo ruolo predefinito contiene le autorizzazioni necessarie per eseguire le attività descritte in questa sezione. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:
Autorizzazioni obbligatorie
Per eseguire le attività descritte in questa sezione sono necessarie le seguenti autorizzazioni:
Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.
Per saperne di più su BigQuery IAM, vedi Ruoli e autorizzazioni IAM di BigQuery.
Prepara un set di dati per le repliche della vista materializzata
Prima di creare una replica della vista materializzata, devi completare le seguenti attività:
Crea repliche della vista materializzata
Seleziona una delle seguenti opzioni:
Console
Viene creata una nuova vista materializzata locale (se non è stata specificata) e autorizzata nel set di dati di origine. La replica della vista materializzata viene creata nel set di dati di destinazione.
SQL
Dopo aver creato la replica della vista materializzata, il processo di replica esegue il polling
della vista materializzata di origine per rilevare le modifiche e replica i dati nella replica
della vista materializzata, aggiornando i dati all'intervallo specificato nell'opzione
replication_interval_seconds
o max_staleness
. Se esegui una query sulla replica prima del completamento del primo backfill, ricevi un errore backfill in progress
. Puoi eseguire query sui dati nella replica della vista materializzata dopo il completamento della prima
replica.
Aggiornamento dei dati
Dopo aver creato la replica della vista materializzata, il processo di replica
interroga la vista materializzata di origine per rilevare le modifiche e replica i dati nella
replica della vista materializzata. I dati vengono replicati all'intervallo specificato
nell'opzione replication_interval_seconds
dell'istruzione
CREATE MATERIALIZED VIEW AS REPLICA OF
.
Oltre all'intervallo di replica, l'aggiornamento dei dati della replica della vista materializzata è influenzato anche dalla frequenza di aggiornamento della vista materializzata di origine e dalla frequenza di aggiornamento della cache dei metadati della tabella Amazon S3, Iceberg o Data Cloud utilizzata dalla vista materializzata.
Puoi controllare l'aggiornamento dei dati per la replica della vista materializzata e le risorse su cui si basa utilizzando la console Google Cloud :
Regioni supportate per le repliche delle viste materializzate
Utilizza i mapping delle località nella tabella seguente quando crei repliche di viste materializzate:
Posizione della vista materializzata di origine | Posizione della replica della vista materializzata |
---|---|
aws-us-east-1 |
US
multi-regionale,
o una delle seguenti
regioni:
|
aws-us-west-2 |
US
multi-regionale,
o una delle seguenti
regioni:
|
aws-eu-west-1 |
EU
multi-regionale,
o una delle seguenti
regioni:
|
aws-ap-northeast-2 |
Una delle seguenti
regioni:
|
aws-ap-southeast-2 |
Una delle seguenti
regioni:
|
Limitazioni delle repliche delle vista materializzata
Prezzi della replica della vista materializzata
L'utilizzo delle repliche vista materializzata comporta costi di calcolo, trasferimento di dati in uscita e archiviazione.