Applica i suggerimenti per partizioni e cluster
Questo documento mostra come applicare i suggerimenti per partizioni e cluster alle tabelle BigQuery.
Limitazioni
Il motore per suggerimenti di partizionamento e clustering non supporta le tabelle BigQuery con SQL precedente. Quando genera un suggerimento, il motore per suggerimenti esclude eventuali query SQL precedente nella propria analisi. Inoltre, l'applicazione dei suggerimenti sulle partizioni nelle tabelle BigQuery con SQL precedente causa l'interruzione di tutti i flussi di lavoro SQL legacy in quella tabella.
Prima di applicare i suggerimenti sulle partizioni, esegui la migrazione dei flussi di lavoro SQL precedente in GoogleSQL.
Il motore per suggerimenti di partizionamento e clustering non supporta risorse archiviate nelle seguenti regioni:
europe-central2
,europe-west8
,europe-west9
,europe-west12
,europe-north1
eeurope-southwest1
us-east1
,us-east5
,us-south1
me-central1
,me-central2
,me-west1
australia-southeast2
southamerica-west1
Prima di iniziare
- Assicurati che l'API Recommender sia abilitata.
- Assicurati di disporre delle autorizzazioni IAM (Identity and Access Management) necessarie.
Applica i suggerimenti del cluster
Puoi applicare i suggerimenti sul cluster applicando i cluster a una copia della tabella originale, applicandoli direttamente alla tabella originale o utilizzando le viste materializzate.
Applica i suggerimenti del cluster a una tabella copiata
Quando applichi i suggerimenti sul cluster a una tabella BigQuery, prima puoi copiare la tabella originale e poi applicare il suggerimento alla tabella copiata. Questo metodo garantisce che i dati originali vengano conservati se devi eseguire il rollback della modifica alla configurazione di clustering.
Puoi utilizzare questo metodo per applicare i suggerimenti sui cluster a tabelle non partizionate e partizionate.
Nella console Google Cloud, vai alla pagina BigQuery.
Nell'editor query, crea una tabella vuota con gli stessi metadati (incluse le specifiche di clustering) della tabella originale utilizzando l'operatore
LIKE
:CREATE TABLE DATASET.COPIED_TABLE LIKE DATASET.ORIGINAL_TABLE
Sostituisci quanto segue:
DATASET
: il nome del set di dati contenente la tabella, ad esempiomydataset
COPIED_TABLE
: un nome per la tabella copiata, ad esempiocopy_mytable
ORIGINAL_TABLE
: il nome della tabella originale, ad esempiomytable
Nella console Google Cloud, apri l'editor di Cloud Shell.
Nell'editor di Cloud Shell, aggiorna la specifica di clustering della tabella copiata in modo che corrisponda al clustering consigliato utilizzando il comando
bq update
:bq update --clustering_fields=CLUSTER_COLUMN DATASET.COPIED_TABLE
Sostituisci
CLUSTER_COLUMN
con la colonna per la quale stai eseguendo il clustering, ad esempiomycolumn
.Puoi anche chiamare il metodo API
tables.update
otables.patch
per modificare la specifica di clustering.Nell'editor query, recupera lo schema della tabella con la configurazione di partizionamento e clustering della tabella originale, se esiste un partizionamento o un clustering. Puoi recuperare lo schema visualizzando la visualizzazione
INFORMATION_SCHEMA.TABLES
della tabella originale:SELECT ddl FROM DATASET.INFORMATION_SCHEMA.TABLES WHERE table_name = 'DATASET.ORIGINAL_TABLE;'
L'output è l'istruzione DDL (Full Data Definition Language) di ORIGINAL_TABLE, inclusa la clausola
PARTITION BY
. Per ulteriori informazioni sugli argomenti nell'output DDL, consulta l'istruzioneCREATE TABLE
.L'output DDL indica il tipo di partizionamento nella tabella originale:
Tipo di partizionamento Esempio di output Non partizionato La clausola PARTITION BY
non è presente.Partizionata per colonna della tabella PARTITION BY c0
PARTITION BY DATE(c0)
PARTITION BY DATETIME_TRUNC(c0, MONTH)
Partizionata in base alla data/ora di importazione PARTITION BY _PARTITIONDATE
PARTITION BY DATETIME_TRUNC(_PARTITIONTIME, MONTH)
Importa i dati nella tabella copiata. Il processo utilizzato si basa sul tipo di partizione.
- Se la tabella originale è partizionata o non è partizionata in base a una colonna di tabella, importa i dati dalla tabella originale alla tabella copiata:
INSERT INTO DATASET.COPIED_TABLE SELECT * FROM DATASET.ORIGINAL_TABLE
Se la tabella originale è partizionata in base alla data e ora di importazione:
Recupera l'elenco di colonne per formare l'espressione di importazione dati utilizzando la vista
INFORMATION_SCHEMA.COLUMNS
:SELECT ARRAY_TO_STRING(( SELECT ARRAY( SELECT column_name FROM DATASET.INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'ORIGINAL_TABLE')), ", ")
L'output è un elenco di nomi di colonna separati da virgole.
Importa i dati dalla tabella originale a quella di copia:
INSERT DATASET.COPIED_TABLE (COLUMN_NAMES, _PARTITIONTIME) SELECT *, _PARTITIONTIME FROM DATASET.ORIGINAL_TABLE
Sostituisci
COLUMN_NAMES
con l'elenco di colonne, come output nel passaggio precedente, separate da virgole, ad esempiocol1, col2, col3
.
Ora hai una tabella di copia in cluster con gli stessi dati della tabella originale. Nei passaggi successivi, sostituisci la tabella originale con una nuova tabella in cluster.
- Se la tabella originale è partizionata o non è partizionata in base a una colonna di tabella, importa i dati dalla tabella originale alla tabella copiata:
Rinomina la tabella originale in una tabella di backup:
ALTER TABLE DATASET.ORIGINAL_TABLE RENAME TO DATASET.BACKUP_TABLE
Sostituisci
BACKUP_TABLE
con un nome per la tabella di backup, ad esempiobackup_mytable
.Rinomina la tabella di copia in base alla tabella originale:
ALTER TABLE DATASET.COPIED_TABLE RENAME TO DATASET.ORIGINAL_TABLE
La tabella originale è ora raggruppata in base al suggerimento per il cluster.
- Accesso e autorizzazioni, ad esempio autorizzazioni IAM, accesso a livello di riga o accesso a livello di colonna.
- Artefatti delle tabelle come cloni di tabelle, snapshot di tabelle o indici di ricerca.
- Lo stato di tutti i processi della tabella in corso, ad esempio eventuali viste materializzate o job eseguiti quando hai copiato la tabella.
- È possibile accedere ai dati storici delle tabelle utilizzando il viaggio nel tempo.
- Tutti i metadati associati alla tabella originale, ad esempio
table_option_list
ocolumn_option_list
. Per saperne di più, consulta Istruzioni linguistiche per la definizione dei dati.
Se si verificano problemi, devi eseguire manualmente la migrazione degli artefatti interessati alla nuova tabella.
Dopo aver esaminato la tabella in cluster, facoltativamente puoi eliminare la tabella di backup con il seguente comando:DROP TABLE DATASET.BACKUP_TABLE
Applica direttamente i suggerimenti sul cluster
Puoi applicare i suggerimenti sul cluster direttamente a una tabella BigQuery esistente. Questo metodo è più rapido rispetto all'applicazione dei suggerimenti a una tabella copiata, ma non conserva una tabella di backup.
Segui questi passaggi per applicare una nuova specifica di clustering alle tabelle non partizionate o partizionate.
Nello strumento bq, aggiorna la specifica di clustering della tabella in modo che corrisponda al nuovo clustering:
bq update --clustering_fields=CLUSTER_COLUMN DATASET.ORIGINAL_TABLE
Sostituisci quanto segue:
CLUSTER_COLUMN
: la colonna in base alla quale stai eseguendo il clustering, ad esempiomycolumn
DATASET
: il nome del set di dati contenente la tabella, ad esempiomydataset
ORIGINAL_TABLE
: il nome della tabella originale, ad esempiomytable
Puoi anche chiamare il metodo API
tables.update
otables.patch
per modificare la specifica di clustering.Per raggruppare tutte le righe in base alla nuova specifica di clustering, esegui la seguente istruzione
UPDATE
:UPDATE DATASET.ORIGINAL_TABLE SET CLUSTER_COLUMN=CLUSTER_COLUMN WHERE true
Applica i suggerimenti sul cluster utilizzando le viste materializzate
Puoi creare una vista materializzata della tabella per archiviare i dati della tabella originale con il consiglio applicato. L'utilizzo delle viste materializzate per applicare i suggerimenti garantisce che i dati in cluster siano sempre aggiornati utilizzando gli aggiornamenti automatici. Quando esegui query, gestisci e archivi le viste materializzate occorre considerare i prezzi. Per informazioni su come creare una vista materializzata in cluster, consulta Viste materializzate in cluster.Applica i suggerimenti per la partizione
Puoi applicare i suggerimenti sulla partizione applicando le partizioni a una copia della tabella originale.
Applica i suggerimenti sulle partizioni a una tabella copiata
Quando applichi i suggerimenti di partizionamento a una tabella BigQuery, puoi prima copiare la tabella originale e poi applicare il suggerimento alla tabella copiata. Questo approccio garantisce che i dati originali vengano conservati se devi eseguire il rollback di una partizione.
La procedura seguente utilizza un suggerimento di esempio per partizionare una tabella in base all'unità di tempo di partizione DAY
.
Crea una tabella copiata utilizzando i suggerimenti per la partizione:
CREATE TABLE DATASET.COPIED_TABLE PARTITION BY DATE_TRUNC(PARTITION_COLUMN, DAY) AS SELECT * FROM DATASET.ORIGINAL_TABLE
Sostituisci quanto segue:
DATASET
: il nome del set di dati contenente la tabella, ad esempiomydataset
COPIED_TABLE
: un nome per la tabella copiata, ad esempiocopy_mytable
PARTITION_COLUMN
: la colonna in base alla quale stai eseguendo il partizionamento, ad esempiomycolumn
Per saperne di più sulla creazione di tabelle partizionate, consulta Creazione di tabelle partizionate.
Rinomina la tabella originale in una tabella di backup:
ALTER TABLE DATASET.ORIGINAL_TABLE RENAME TO DATASET.BACKUP_TABLE
Sostituisci
BACKUP_TABLE
con un nome per la tabella di backup, ad esempiobackup_mytable
.Rinomina la tabella di copia in base alla tabella originale:
ALTER TABLE DATASET.COPIED_TABLE RENAME TO DATASET.ORIGINAL_TABLE
La tabella originale è ora partizionata in base al suggerimento per la partizione.
- Accesso e autorizzazioni, ad esempio autorizzazioni IAM, accesso a livello di riga o accesso a livello di colonna.
- Artefatti delle tabelle come cloni di tabelle, snapshot di tabelle o indici di ricerca.
- Lo stato di tutti i processi della tabella in corso, ad esempio eventuali viste materializzate o job eseguiti quando hai copiato la tabella.
- È possibile accedere ai dati storici delle tabelle utilizzando il viaggio nel tempo.
- Tutti i metadati associati alla tabella originale, ad esempio
table_option_list
ocolumn_option_list
. Per saperne di più, consulta Istruzioni linguistiche per la definizione dei dati. - Possibilità di utilizzare SQL precedente per scrivere risultati delle query in tabelle partizionate. L'utilizzo del codice SQL precedente non è completamente supportato nelle tabelle partizionate. Una soluzione consiste nel eseguire la migrazione dei flussi di lavoro SQL precedente in GoogleSQL prima di applicare un suggerimento per la partizione.
Se si verificano problemi, devi eseguire manualmente la migrazione degli artefatti interessati alla nuova tabella.
Dopo aver esaminato la tabella partizionata, puoi facoltativamente eliminare la tabella di backup con il seguente comando:DROP TABLE DATASET.BACKUP_TABLE
Prezzi
L'applicazione di un suggerimento a una tabella può comportare i seguenti costi:
- Costi di elaborazione. Quando applichi un suggerimento, esegui una query DDL (Data Definition Language) o DML (Data Manipulation Language) al tuo progetto BigQuery.
- Costi di archiviazione. Se utilizzi il metodo di copia di una tabella, utilizzi spazio di archiviazione aggiuntivo per la tabella copiata (o di backup).
I costi di elaborazione e archiviazione standard si applicano a seconda dell'account di fatturazione associato al progetto. Per ulteriori informazioni, consulta la pagina relativa ai prezzi di BigQuery.