1. Crea una pipeline ETL inversa da Snowflake a Spanner utilizzando Google Cloud Storage e BigQuery
Introduzione
In questo codelab, una pipeline Reverse ETL viene creata da Snowflake a Spanner. Tradizionalmente, le pipeline ETL (Extract, Transform, Load) spostano i dati dai database operativi a un data warehouse come Snowflake per l'analisi. Una pipeline ETL inversa fa il contrario: sposta i dati curati ed elaborati dal data warehouse nei sistemi operativi in cui possono alimentare le applicazioni, fornire funzionalità rivolte agli utenti o essere utilizzati per il processo decisionale in tempo reale.
L'obiettivo è spostare un set di dati aggregato da una tabella Snowflake Iceberg a Spanner, un database relazionale distribuito a livello globale ideale per applicazioni ad alta disponibilità.
Per raggiungere questo obiettivo, vengono utilizzati Google Cloud Storage (GCS) e BigQuery come passaggi intermedi. Di seguito è riportata una suddivisione del flusso di dati e del ragionamento alla base di questa architettura:
- Da Snowflake a Google Cloud Storage (GCS) in formato Iceberg:
- Il primo passaggio consiste nell'estrazione dei dati da Snowflake in un formato aperto e ben definito. La tabella viene esportata in formato Apache Iceberg. Questo processo scrive i dati sottostanti come un insieme di file Parquet e i metadati della tabella (schema, partizioni, posizioni dei file) come file JSON e Avro. L'organizzazione di questa struttura completa della tabella in GCS rende i dati portatili e accessibili a qualsiasi sistema che comprenda il formato Iceberg.
- Converti le tabelle Iceberg in GCS in una tabella esterna BigLake BigQuery:
- Anziché caricare i dati direttamente da GCS in Spanner, BigQuery viene utilizzato come potente intermediario. Creerai una tabella esterna BigLake in BigQuery che punta direttamente al file di metadati Iceberg in GCS. Questo approccio presenta diversi vantaggi:
- Nessuna duplicazione dei dati:BigQuery legge la struttura della tabella dai metadati ed esegue query sui file di dati Parquet sul posto senza importarli, il che consente di risparmiare tempo e costi di archiviazione significativi.
- Query federate:consente di eseguire query SQL complesse sui dati GCS come se fossero una tabella BigQuery nativa.
- BigQuery a Spanner:
- Il passaggio finale consiste nello spostare i dati da BigQuery a Spanner. Per farlo, utilizzerai una potente funzionalità di BigQuery chiamata query
EXPORT DATA, che è il passaggio "Reverse ETL". - Operational Readiness:Spanner è progettato per i carichi di lavoro transazionali, fornendo elevata coerenza e alta disponibilità per le applicazioni. Spostando i dati in Spanner, questi diventano accessibili ad applicazioni rivolte agli utenti, API e altri sistemi operativi che richiedono ricerche puntuali a bassa latenza.
- Scalabilità:questo pattern consente di sfruttare la potenza analitica di BigQuery per elaborare set di dati di grandi dimensioni e quindi pubblicare i risultati in modo efficiente tramite l'infrastruttura scalabile a livello globale di Spanner.
Servizi e terminologia
- Snowflake: una piattaforma dati cloud che fornisce un data warehouse as a service.
- Spanner: un database relazionale completamente gestito e distribuito a livello globale.
- Google Cloud Storage: offerta di archiviazione di blob di Google Cloud.
- BigQuery: un data warehouse serverless completamente gestito per l'analisi.
- Iceberg: un formato di tabella aperto definito da Apache che fornisce un'astrazione sui formati di file di dati open source comuni.
- Parquet: un formato di file di dati binari colonnari open source di Apache.
Obiettivi didattici
- Come caricare dati in Snowflake
- Come creare un bucket GCS
- Come esportare una tabella Snowflake in GCS nel formato Iceberg
- Come configurare un'istanza di Spanner
- Come caricare tabelle esterne BigLake in BigQuery in Spanner
2. Configurazione, requisiti e limitazioni
Prerequisiti
- Un account Snowflake
- Per l'esportazione da BigQuery a Spanner è necessario un account Google Cloud con una prenotazione di livello Enterprise o superiore.
- Accesso alla console Google Cloud tramite un browser web
- Un terminale per eseguire i comandi di Google Cloud CLI
- Se la tua organizzazione Google Cloud ha attivato il criterio
iam.allowedPolicyMemberDomains, un amministratore potrebbe dover concedere un'eccezione per consentire i service account di domini esterni. Questo aspetto verrà trattato in un passaggio successivo, se applicabile.
Limitazioni
È importante essere consapevoli di alcune limitazioni e incompatibilità dei tipi di dati che possono verificarsi in questa pipeline.
Snowflake to Iceberg
I tipi di dati delle colonne differiscono tra Snowflake e Iceberg. Le informazioni sulla traduzione tra questi tipi di dati sono disponibili nella documentazione di Snowflake.
Iceberg to BigQuery
Quando utilizzi BigQuery per eseguire query sulle tabelle Iceberg, esistono alcune limitazioni. Per un elenco completo, consulta la documentazione di BigQuery. Tieni presente che i tipi come BIGNUMERIC, INTERVAL, JSON, RANGE o GEOGRAPHY non sono attualmente supportati.
Da BigQuery a Spanner
Il comando EXPORT DATA da BigQuery a Spanner non supporta tutti i tipi di dati BigQuery. L'esportazione di una tabella con i seguenti tipi genererà un errore:
STRUCTGEOGRAPHYDATETIMERANGETIME
Inoltre, se il progetto BigQuery utilizza il dialetto GoogleSQL, i seguenti tipi numerici non sono supportati per l'esportazione in Spanner:
BIGNUMERIC
Per un elenco completo e aggiornato delle limitazioni, consulta la documentazione ufficiale: Limitazioni dell'esportazione in Spanner.
Snowflake
Per questo codelab, puoi utilizzare un account Snowflake esistente o configurare un account di prova senza costi.
Autorizzazioni IAM di Google Cloud Platform
L'Account Google deve disporre delle seguenti autorizzazioni per eseguire tutti i passaggi di questo codelab.
Service account | ||
| Consente la creazione di service account. | |
Spanner | ||
| Consente di creare una nuova istanza di Spanner. | |
| Consente l'esecuzione di istruzioni DDL per creare | |
| Consente di eseguire istruzioni DDL per creare tabelle nel database. | |
Google Cloud Storage | ||
| Consente di creare un nuovo bucket GCS per archiviare i file Parquet esportati. | |
| Consente di scrivere i file Parquet esportati nel bucket GCS. | |
| Consente a BigQuery di leggere i file Parquet dal bucket GCS. | |
| Consente a BigQuery di elencare i file Parquet nel bucket GCS. | |
Dataflow | ||
| Consente di rivendicare le voci di lavoro da Dataflow. | |
| Consente al worker Dataflow di inviare messaggi al servizio Dataflow. | |
| Consente ai worker Dataflow di scrivere voci di log in Google Cloud Logging. | |
Per comodità, è possibile utilizzare ruoli predefiniti che contengono queste autorizzazioni.
|
|
|
|
|
|
|
|
Configurare le proprietà riutilizzabili
In questo lab avrai bisogno di alcuni valori più volte. Per semplificare la procedura, imposteremo questi valori sulle variabili della shell da utilizzare in un secondo momento.
- GCP_REGION: la regione specifica in cui si troveranno le risorse GCP. L'elenco delle regioni è disponibile qui.
- GCP_PROJECT: l'ID progetto GCP da utilizzare.
- GCP_BUCKET_NAME: il nome del bucket GCS da creare e in cui verranno archiviati i file di dati.
export GCP_REGION = <GCP REGION HERE>
export GCP_PROJECT= <GCP PROJECT HERE>
export GCS_BUCKET_NAME = <GCS BUCKET NAME HERE>
export SPANNER_INSTANCE = <SPANNER INSTANCE ID HERE>
export SPANNER_DB = <SPANNER DATABASE ID HERE>
Progetto Google Cloud
Un progetto è un'unità di base di organizzazione in Google Cloud. Se un amministratore ne ha fornito uno da utilizzare, questo passaggio può essere saltato.
Un progetto può essere creato utilizzando la CLI nel seguente modo:
gcloud projects create $GCP_PROJECT
gcloud config set project $GCP_PROJECT
Scopri di più sulla creazione e sulla gestione dei progetti qui.
Configura Spanner
Per iniziare a utilizzare Spanner, devi eseguire il provisioning di un'istanza e di un database. I dettagli sulla configurazione e la creazione di un'istanza Spanner sono disponibili qui.
Crea l'istanza
gcloud spanner instances create $SPANNER_INSTANCE \
--config=regional-$GCP_REGION \
--description="Codelabs Snowflake RETL" \
--processing-units=100 \
--edition=ENTERPRISE
Crea il database
gcloud spanner databases create $SPANNER_DB \
--instance=$SPANNER_INSTANCE
3. Creare un bucket Google Cloud Storage
Google Cloud Storage (GCS) verrà utilizzato per archiviare i file di dati Parquet e i metadati Iceberg generati da Snowflake. A questo scopo, è necessario creare un nuovo bucket da utilizzare come destinazione del file. Da una finestra del terminale su una macchina locale, segui questi passaggi.
Crea il bucket
Utilizza il seguente comando per creare un bucket di archiviazione in una regione specifica (ad es. us-central1).
gcloud storage buckets create gs://$GCS_BUCKET_NAME --location=$GCP_REGION
Verifica la creazione del bucket
Una volta eseguito correttamente il comando, controlla il risultato elencando tutti i bucket. Il nuovo bucket dovrebbe essere visualizzato nell'elenco risultante. I riferimenti ai bucket in genere vengono visualizzati con il prefisso gs:// davanti al nome del bucket.
gcloud storage ls | grep gs://$GCS_BUCKET_NAME
Test delle autorizzazioni di scrittura
Questo passaggio garantisce che l'ambiente locale sia autenticato correttamente e disponga delle autorizzazioni necessarie per scrivere file nel bucket appena creato.
echo "Hello, GCS" | gcloud storage cp - gs://$GCS_BUCKET_NAME/hello.txt
Verificare il file caricato
Elenca gli oggetti nel bucket. Dovrebbe essere visualizzato il percorso completo del file appena caricato.
gcloud storage ls gs://$GCS_BUCKET_NAME
Dovresti vedere l'output seguente:
gs://$GCS_BUCKET_NAME/hello.txt
Per visualizzare i contenuti di un oggetto in un bucket, è possibile utilizzare gcloud storage cat.
gcloud storage cat gs://$GCS_BUCKET_NAME/hello.txt
I contenuti del file dovrebbero essere visibili:
Hello, GCS
Esegui la pulizia del file di test
Il bucket Cloud Storage è ora configurato. Ora puoi eliminare il file di test temporaneo.
gcloud storage rm gs://$GCS_BUCKET_NAME/hello.txt
L'output dovrebbe confermare l'eliminazione:
Removing gs://$GCS_BUCKET_NAME/hello.txt... / [1 objects] Operation completed over 1 objects.
4. Esportazione da Snowflake a GCS
Per questo lab, utilizzerai il set di dati TPC-H, che è un benchmark standard del settore per i sistemi di supporto alle decisioni. Il suo schema modella un ambiente aziendale realistico con clienti, ordini, fornitori e parti, il che lo rende perfetto per dimostrare uno scenario reale di analisi e spostamento dei dati. Questo set di dati è disponibile per impostazione predefinita in tutti gli account Snowflake.
Invece di utilizzare le tabelle TPC-H non elaborate e normalizzate, creerai una nuova tabella aggregata. Questa nuova tabella unirà i dati delle tabelle orders, customer e nation per produrre una visualizzazione denormalizzata e riepilogativa dei totali delle vendite nazionali. Questo passaggio di preaggregazione è una pratica comune nell'analisi, in quanto prepara i dati per un caso d'uso specifico, in questo scenario, per il consumo da parte di un'applicazione operativa.
Consentire a Snowflake di accedere a Google Cloud Storage
Per consentire a Snowflake di scrivere dati nel bucket GCS, è necessario creare due elementi: un volume esterno e le autorizzazioni necessarie.
- Un volume esterno è un oggetto Snowflake che fornisce un link sicuro a una posizione specifica in un bucket GCS. Non archivia i dati, ma contiene la configurazione necessaria a Snowflake per accedere allo spazio di archiviazione cloud.
- Per motivi di sicurezza, i bucket di archiviazione cloud sono privati per impostazione predefinita. Quando viene creato un volume esterno, Snowflake genera un service account dedicato. A questo service account devono essere concesse le autorizzazioni di lettura e scrittura per il bucket.
Crea un database
- Nel menu a sinistra, in Catalogo Horizon, passa il mouse sopra Catalogo e poi fai clic su Database Explorer.
- Nella pagina Database, fai clic sul pulsante + Database in alto a destra.
- Assegna un nome al nuovo database
codelabs_retl_db
Creare un foglio di lavoro
Per eseguire comandi SQL sul database, sono necessari i fogli di lavoro.
Per creare un foglio di lavoro:
- Nel menu a sinistra, in Utilizza i dati, passa il mouse sopra Progetti, quindi fai clic su Spazi di lavoro.
- Nella barra laterale I miei spazi di lavoro, fai clic sul pulsante + Aggiungi nuovo e seleziona File SQL.
Creare un volume esterno
Esegui questo comando in un foglio di lavoro Snowflake per creare il volume.
CREATE EXTERNAL VOLUME codelabs_retl_ext_vol
STORAGE_LOCATIONS =
(
(
NAME = 'codelabs_retl_ext_vol'
STORAGE_PROVIDER = 'GCS'
STORAGE_BASE_URL = 'gcs://<Your bucket name>/snowflake_extvol'
)
);
Ottieni il service account Snowflake
DESC (descrivi) il volume esterno appena creato per ottenere il service account univoco generato da Snowflake.
DESC EXTERNAL VOLUME codelabs_retl_ext_vol;
- Nel riquadro dei risultati, cerca le proprietà JSON e trova la voce
property_valueche contiene una stringa JSON che inizia con"NAME":"codelabs_retl_ext_vol" - Trova la proprietà
STORAGE_GCP_SERVICE_ACCOUNTall'interno dell'oggetto JSON e copia il relativo valore (che avrà l'aspetto di un indirizzo email). Si tratta dell'identificatore del service account che deve accedere al bucket GCS. - Archivia questo service account in una variabile di ambiente nell'istanza della shell per riutilizzarlo in un secondo momento.
export GCP_SERVICE_ACCOUNT=<Your service account>
Concedere le autorizzazioni GCS a Snowflake
Ora, all'account di servizio Snowflake deve essere concessa l'autorizzazione di scrittura nel bucket GCS.
gcloud storage buckets add-iam-policy-binding gs://$GCS_BUCKET_NAME \
--member="serviceAccount:$GCP_SERVICE_ACCOUNT" \
--role="roles/storage.objectAdmin"
gcloud storage buckets add-iam-policy-binding gs://$GCS_BUCKET_NAME \
--member="serviceAccount:$GCP_SERVICE_ACCOUNT" \
--role="roles/storage.legacyBucketReader"
Verifica l'accesso in Snowflake
Nella scheda di lavoro Snowflake, esegui questo comando per verificare che Snowflake ora possa connettersi correttamente al bucket GCS.
SELECT SYSTEM$VERIFY_EXTERNAL_VOLUME('codelabs_retl_ext_vol');
Il risultato deve essere un oggetto JSON contenente "success":true.
Per saperne di più sui volumi esterni in Snowflake, consulta la documentazione ufficiale.
Esportare i dati di esempio degli ordini
Ora puoi creare una tabella Iceberg in Snowflake. Il comando seguente indica a Snowflake di eseguire una query e archiviare i risultati in GCS utilizzando il formato Iceberg. I file di dati saranno Parquet e i metadati saranno Avro e JSON, tutti archiviati nella posizione definita dal codelabs_retl_ext_vol External Volume.
Crea un database
- Nel menu a sinistra, in Catalogo Horizon, passa il mouse sopra Catalogo e poi fai clic su Database Explorer.
- Nella pagina Database, fai clic sul pulsante + Database in alto a destra.
- Assegna un nome al nuovo database
codelabs_retl_db
USE DATABASE codelabs_retl_db;
CREATE ICEBERG TABLE REGIONAL_SALES_ICEBERG (
NATION_NAME STRING,
MARKET_SEGMENT STRING,
ORDER_YEAR INTEGER,
ORDER_PRIORITY STRING,
TOTAL_ORDER_COUNT INTEGER,
TOTAL_REVENUE NUMBER(24,2),
UNIQUE_CUSTOMER_COUNT INTEGER
)
EXTERNAL_VOLUME = 'codelabs_retl_ext_vol'
CATALOG = 'SNOWFLAKE'
BASE_LOCATION = 'regional_sales_iceberg'
AS (
SELECT
n.n_name AS nation_name,
c.c_mktsegment AS market_segment,
YEAR(o.o_orderdate) AS order_year,
o.o_orderpriority AS order_priority,
COUNT(o.o_orderkey) AS total_order_count,
ROUND(SUM(o.o_totalprice), 2) AS total_revenue,
COUNT(DISTINCT c.c_custkey) AS unique_customer_count
FROM SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.orders AS o
INNER JOIN SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.customer AS c
ON o.o_custkey = c.c_custkey
INNER JOIN SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.nation AS n
ON c.c_nationkey = n.n_nationkey
GROUP BY
n.n_name,
c.c_mktsegment,
YEAR(o.o_orderdate),
o.o_orderpriority
);
Per ulteriori informazioni sulla creazione e la gestione delle tabelle Iceberg utilizzando Snowflake, consulta la documentazione ufficiale.
Verificare i dati in GCP
Ora controlla il bucket GCS. I file creati da Snowflake dovrebbero essere visibili. Ciò conferma che l'esportazione è riuscita. I metadati Iceberg si trovano nella cartella metadata e i dati effettivi come file Parquet nella cartella data.
gcloud storage ls "gs://$GCS_BUCKET_NAME/snowflake_extvol/**"
I nomi esatti dei file variano, ma la struttura dovrebbe essere simile alla seguente:
gs://$GCS_BUCKET_NAME/snowflake_extvol/ gs://$GCS_BUCKET_NAME/snowflake_extvol/regional_sales_iceberg.snvrAWuR/data/snow_cbsKIRmdDmo_wLg128fugxg_0_2_009.parquet ... gs://$GCS_BUCKET_NAME/snowflake_extvol/regional_sales_iceberg.snvrAWuR/metadata/00001-62f831ff-6708-4494-94c5-c891b7ad447f.metadata.json ...
I dati sono stati copiati da Snowflake a Google Cloud Storage in formato Iceberg.
Mentre abbiamo questo elenco, salviamo il file metadata.json in una variabile di ambiente, perché ci servirà in un secondo momento.
export GCS_METADATA_JSON=$(gcloud storage ls "gs://$GCS_BUCKET_NAME/snowflake_extvol/**" | grep .metadata.json)
5. Configura una tabella esterna BigQuery
Ora che la tabella Iceberg si trova in Google Cloud Storage, il passaggio successivo consiste nel renderla accessibile a BigQuery. A questo scopo, crea una tabella esterna BigLake.
BigLake è un motore di archiviazione che consente di creare tabelle in BigQuery che leggono i dati direttamente da origini esterne come Google Cloud Storage. Per questo lab, è la tecnologia chiave che consente a BigQuery di comprendere la tabella Iceberg appena esportata senza dover importare i dati.
Per far funzionare il tutto, sono necessari due componenti:
- Una connessione alle risorse Cloud:si tratta di un collegamento sicuro tra BigQuery e GCS. Utilizza un service account speciale per gestire l'autenticazione, assicurandosi che BigQuery disponga delle autorizzazioni necessarie per leggere i file dal bucket GCS.
- Una definizione di tabella esterna:indica a BigQuery dove trovare il file di metadati della tabella Iceberg in GCS e come deve essere interpretato.
Configurare una connessione a Google Cloud Storage
Innanzitutto, verrà creata la connessione che consente a BigQuery di accedere a GCS. Questo comando crea una risorsa di connessione in BigQuery.
bq mk \
--connection \
--project_id=$GCP_PROJECT \
--location=$GCP_REGION \
--connection_type=CLOUD_RESOURCE \
codelabs-retl-connection
Il successo avrà un aspetto simile a questo:
Connection 12345678.region.codelabs-retl-connection successfully created
Per ulteriori informazioni sulle connessioni delle risorse Cloud in BigQuery, consulta la documentazione di Google Cloud.
Autorizza la connessione BigQuery a leggere i dati
La nuova connessione BigQuery ha un proprio service account che richiede l'autorizzazione per leggere i dati dal bucket Google Cloud Storage.
1. Recupera il service account di connessione
Per prima cosa, recupera l'ID service account dalla connessione appena creata:
bq show \
--location $GCP_REGION \
--connection codelabs-retl-connection
I risultati mostreranno una tabella delle connessioni corrispondenti.
Impostiamo serviceAccountId su una variabile di ambiente da utilizzare in un secondo momento.
export GCP_BQ_SERVICE_ACCOUNT=<Your service account email>
2. Concedi autorizzazioni
Autorizza il service account a visualizzare i dati nel bucket GCS eseguendo questo comando.
gcloud storage buckets add-iam-policy-binding \
gs://$GCS_BUCKET_NAME \
--member serviceAccount:$GCP_BQ_SERVICE_ACCOUNT \
--role roles/storage.objectViewer
Crea la tabella esterna
Ora crea la tabella esterna BigLake in BigQuery. Questo comando non sposta alcun dato. Crea semplicemente un puntatore ai dati esistenti in GCS. Avrai bisogno del percorso di uno dei file .metadata.json creati da Snowflake.
bq mk --dataset --location=$GCP_REGION codelabs_retl
bq mk \
--table \
--location=$GCP_REGION \
--external_table_definition=ICEBERG=$GCS_METADATA_JSON@projects/$GCP_PROJECT/locations/$GCP_REGION/connections/codelabs-retl-connection \
codelabs_retl.regional_sales
Verifica dei dati in BigQuery
Ora è possibile eseguire query su questa tabella utilizzando SQL standard, proprio come per qualsiasi altra tabella BigQuery. BigQuery utilizzerà la connessione per leggere i file Parquet da GCS al volo.
bq query \
--location=$GCP_REGION \
--nouse_legacy_sql "SELECT * FROM \`$GCP_PROJECT.codelabs_retl.regional_sales\` LIMIT 10;"
6. Importazione dei dati da BigQuery a Spanner: il passaggio finale
È stata raggiunta la parte finale e più importante della pipeline: lo spostamento dei dati dalla tabella BigLake a Spanner. Questo è il passaggio "Reverse ETL", in cui i dati, dopo essere stati elaborati e curati nel data warehouse, vengono caricati in un sistema operativo per essere utilizzati dalle applicazioni.
Spanner è un database relazionale completamente gestito e distribuito a livello globale. Offre la coerenza transazionale di un database relazionale tradizionale, ma con la scalabilità orizzontale di un database NoSQL. Ciò lo rende una scelta ideale per la creazione di applicazioni scalabili e ad alta disponibilità.
La procedura sarà la seguente:
- Crea uno schema della tabella nel database Spanner che corrisponda alla struttura dei dati.
- Esegui una query BigQuery
EXPORT DATAper caricare i dati dalla tabella BigLake direttamente nella tabella Spanner.
Crea la tabella Spanner
Prima di trasferire i dati da BigQuery, è necessario creare una tabella di destinazione in Spanner con uno schema compatibile.
gcloud spanner databases ddl update $SPANNER_DB \
--instance=$SPANNER_INSTANCE \
--ddl="$(cat <<EOF
CREATE TABLE regional_sales (
nation_name STRING(MAX),
market_segment STRING(MAX),
order_year INT64,
order_priority STRING(MAX),
total_order_count INT64,
total_revenue NUMERIC,
unique_customer_count INT64
) PRIMARY KEY (nation_name, market_segment, order_year, order_priority);
EOF
)"
Esportare i dati da BigQuery
Questo è l'ultimo passaggio. Con i dati di origine pronti in una tabella BigLake di BigQuery e la tabella di destinazione creata in Spanner, lo spostamento effettivo dei dati è sorprendentemente semplice. Verrà utilizzata una singola query SQL BigQuery: EXPORT DATA.
Questa query è progettata appositamente per scenari come questo. Esporta in modo efficiente i dati da una tabella BigQuery (incluse quelle esterne come la tabella BigLake) a una destinazione esterna. In questo caso, la destinazione è la tabella Spanner.
bq query --location=$GCP_REGION --use_legacy_sql=false <<EOF
EXPORT DATA OPTIONS (
uri="https://spanner.googleapis.com/projects/${GCP_PROJECT}/instances/${SPANNER_INSTANCE}/databases/${SPANNER_DB}",
format='CLOUD_SPANNER',
spanner_options="""{
"table": "regional_sales",
"priority": "HIGH"
}"""
) AS
SELECT * FROM \`${PROJECT_ID}.codelabs_retl.regional_sales\`
EOF
Al termine della query, nel riquadro Risultati dovrebbe essere visualizzato il messaggio "Aggiornamento completato".
7. Verifica i dati in Spanner
Complimenti! Una pipeline Reverse ETL completa è stata creata ed eseguita correttamente. Il passaggio finale consiste nel verificare che i dati siano arrivati in Spanner come previsto.
gcloud spanner databases execute-sql \
--instance=$SPANNER_INSTANCE \
$SPANNER_DB \
--sql='SELECT * FROM regional_sales LIMIT 10'
I dati di esempio importati vengono visualizzati come richiesto:
nation_name market_segment order_year order_priority total_order_count total_revenue unique_customer_count ALGERIA AUTOMOBILE 1992 1-URGENT 375 59232423.66 298 ALGERIA AUTOMOBILE 1992 2-HIGH 328 47371891.08 269 ALGERIA AUTOMOBILE 1992 3-MEDIUM 346 52823195.87 262 ALGERIA AUTOMOBILE 1992 4-NOT SPECIFIED 365 52935998.34 288 ALGERIA AUTOMOBILE 1992 5-LOW 380 54920263.68 293 ALGERIA AUTOMOBILE 1993 1-URGENT 394 63145618.78 312 ALGERIA AUTOMOBILE 1993 2-HIGH 340 50737488.4 277 ALGERIA AUTOMOBILE 1993 3-MEDIUM 383 55871057.46 298 ALGERIA AUTOMOBILE 1993 4-NOT SPECIFIED 365 56424662.05 291 ALGERIA AUTOMOBILE 1993 5-LOW 363 54673249.06 283
Il divario tra i mondi dei dati analitici e operativi è stato colmato.
8. Eliminazione
Pulire Spanner
Elimina il database e l'istanza Spanner
gcloud spanner instances delete $SPANNER_INSTANCE
Pulire GCS
Elimina il bucket GCS creato per ospitare i dati
gcloud storage rm --recursive gs://$GCS_BUCKET_NAME
Pulire BigQuery
bq rm -r codelabs_retl
bq rm --connection --location=$GCP_REGION codelabs-retl-connection
Pulire Snowflake
Elimina il database
- Nel menu a sinistra, in Catalogo Horizon, passa il mouse sopra Catalogo e poi fai clic su Esplora database.
- Fai clic su … a destra del database
CODELABS_RETL_DBper espandere le opzioni e seleziona Elimina. - Nella finestra di dialogo di conferma visualizzata, seleziona Elimina database.
Eliminare le cartelle di lavoro
- Nel menu a sinistra, in Utilizza i dati, passa il mouse sopra Progetti, quindi fai clic su Spazi di lavoro.
- Nella barra laterale Il mio spazio di lavoro, passa il mouse sopra i diversi file dello spazio di lavoro che hai utilizzato per questo lab per visualizzare le opzioni aggiuntive ... e fai clic.
- Seleziona Elimina, quindi fai di nuovo clic su Elimina nella finestra di dialogo di conferma visualizzata.
- Esegui questa operazione per tutti i file dello spazio di lavoro SQL che hai creato per questo lab.
Elimina volumi esterni
- Nel menu a sinistra, in Catalogo Horizon, passa il mouse sopra Catalogo e poi fai clic su Dati esterni.
- Fai clic su
a destra di CODELABS_RETL_EXT_VOLe seleziona Riduci volume esterno, quindi di nuovo su Riduci volume esterno nella finestra di dialogo di conferma.
9. Complimenti
Congratulazioni per aver completato il codelab.
Argomenti trattati
- Come caricare dati in Snowflake
- Come creare un bucket GCS
- Come esportare una tabella Snowflake in GCS in formato CSV
- Come configurare un'istanza di Spanner
- Come caricare tabelle CSV in Spanner con Dataflow