Applica suggerimenti su partizioni e cluster
Questo documento mostra come applicare i suggerimenti su partizioni e cluster alle tabelle BigQuery.
Limitazioni
Il motore per suggerimenti di partizionamento e clustering non supporta Tabelle BigQuery con SQL precedente. Quando generi un suggerimento, il motore per suggerimenti esclude qualsiasi query SQL precedente nel suo e analisi. Inoltre, l'applicazione dei suggerimenti sulla partizione Le tabelle BigQuery con SQL precedente interrompono qualsiasi SQL precedente flussi di lavoro in quella tabella.
Prima di applicare i suggerimenti sulle partizioni, esegui la migrazione dei flussi di lavoro SQL precedente a GoogleSQL.
Il motore per suggerimenti di partizionamento e clustering non supporta le risorse archiviati 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 è abilitata.
- Assicurati di avere autorizzazioni IAM (Identity and Access Management) richieste.
Applica i suggerimenti per il cluster
Puoi applicare i suggerimenti sui cluster applicando i cluster a una copia della tabella originale, applicandoli direttamente alla tabella originale, o utilizzando le viste materializzate.
Applica i suggerimenti sul cluster a una tabella copiata
Quando applichi suggerimenti sui cluster a una tabella BigQuery, può prima copiare la tabella originale e poi applicare il consiglio tabella copiata. Questo metodo garantisce che i dati originali vengano conservati se eseguire il rollback della modifica alla configurazione del clustering.
Puoi utilizzare questo metodo per applicare i suggerimenti sul cluster a entrambi non partizionate e partizionate.
Nella console Google Cloud, vai alla pagina BigQuery.
Nell'editor query, crea una tabella vuota con gli stessi metadati (inclusi 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 la tabella copiata in modo che corrisponda al clustering consigliato utilizzando l'istruzione
bq update
:bq update --clustering_fields=CLUSTER_COLUMN DATASET.COPIED_TABLE
Sostituisci
CLUSTER_COLUMN
con la colonna su cui esegui il clustering, ad esempiomycolumn
.Puoi anche chiamare il metodo API
tables.update
otables.patch
per modificare la specifica di clustering.Nell'editor di query, recupera lo schema della tabella con le partizioni configurazione del clustering della tabella originale, il clustering esiste. Puoi recuperare lo schema visualizzando
INFORMATION_SCHEMA.TABLES
visualizzazione della tabella originale:SELECT ddl FROM DATASET.INFORMATION_SCHEMA.TABLES WHERE table_name = 'DATASET.ORIGINAL_TABLE;'
L'output è l'istruzione DDL (Data Definition Language) completa di ORIGINAL_TABLE, inclusa la clausola
PARTITION BY
. Per ulteriori informazioni sugli argomenti Nell'output DDL, vedi 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 in base alla colonna della tabella PARTITION BY c0
PARTITION BY DATE(c0)
PARTITION BY DATETIME_TRUNC(c0, MONTH)
Partizionata per ora di importazione PARTITION BY _PARTITIONDATE
PARTITION BY DATETIME_TRUNC(_PARTITIONTIME, MONTH)
Importa i dati nella tabella copiata. La procedura che utilizzi si basa su il tipo di partizione.
- Se la tabella originale non è partizionata o partizionata in base a una colonna della tabella,
importa i dati dalla tabella originale nella tabella copiata:
INSERT INTO DATASET.COPIED_TABLE SELECT * FROM DATASET.ORIGINAL_TABLE
Se la tabella originale è partizionata in base alla data di importazione, segui questi passaggi:
Recupera l'elenco di colonne per formare l'espressione di importazione dati tramite 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 alla tabella di copia:
INSERT DATASET.COPIED_TABLE (COLUMN_NAMES, _PARTITIONTIME) SELECT *, _PARTITIONTIME FROM DATASET.ORIGINAL_TABLE
Sostituisci
COLUMN_NAMES
con l'elenco di colonne che era l'output nel passaggio precedente, separati da virgole, ad esempiocol1, col2, col3
.
Ora hai una tabella di copia in cluster con gli stessi dati della tabella originale. Nei passaggi successivi, sostituirai la tabella originale con una nuova tabella in cluster.
- Se la tabella originale non è partizionata o partizionata in base a una colonna della tabella,
importa i dati dalla tabella originale nella 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 in cluster in base ai suggerimenti 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 qualsiasi processo della tabella in corso, ad esempio eventuali viste materializzate o qualsiasi job eseguito quando hai copiato la tabella.
- È possibile accedere ai dati storici delle tabelle utilizzando i viaggi nel tempo.
- Tutti i metadati associati alla tabella originale, ad esempio
table_option_list
ocolumn_option_list
. Per ulteriori informazioni, consulta Istruzioni per la definizione del linguaggio di definizione dei dati.
In caso di problemi, devi eseguire manualmente la migrazione degli artefatti interessati alla nuova tabella.
Dopo aver esaminato la tabella in cluster, puoi scegliere di eliminare il backup con il seguente comando:DROP TABLE DATASET.BACKUP_TABLE
Applica direttamente i suggerimenti sul cluster
Puoi applicare i suggerimenti sul cluster direttamente a un progetto BigQuery esistente tabella. Questo metodo è più rapido rispetto all'applicazione di consigli a una tabella copiata ma non conserva una tabella di backup.
Segui questi passaggi per applicare una nuova specifica di clustering alle applicazioni partizionate.
Nello strumento bq, aggiorna la specifica di clustering in modo che corrisponda al nuovo clustering:
bq update --clustering_fields=CLUSTER_COLUMN DATASET.ORIGINAL_TABLE
Sostituisci quanto segue:
CLUSTER_COLUMN
: la colonna su cui esegui 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 sui 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 tramite gli aggiornamenti automatici. Per l'esecuzione di query, la gestione e l'archiviazione di viste materializzate ci sono considerazioni sui prezzi. Per informazioni su come creare una vista materializzata in cluster, consulta Visualizzazioni materializzate in cluster.Applica suggerimenti sulla partizione
Puoi applicare i suggerimenti sulle partizioni applicando partizioni a una copia della tabella originale.
Applica i suggerimenti sulla partizione a una tabella copiata
Quando applichi suggerimenti sulle partizioni a una tabella BigQuery, può prima copiare la tabella originale e poi applicare il consiglio tabella copiata. Questo approccio garantisce che i dati originali vengano conservati se eseguire il rollback di una partizione.
La procedura seguente utilizza un suggerimento di esempio per eseguire il partizionamento di una tabella in base a
l'unità di tempo della partizione DAY
.
Crea una tabella copiata utilizzando i suggerimenti sulle partizioni:
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 alla partizione il nostro consiglio.
- 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 qualsiasi processo della tabella in corso, ad esempio eventuali viste materializzate o qualsiasi job eseguito quando hai copiato la tabella.
- È possibile accedere ai dati storici delle tabelle utilizzando i viaggi nel tempo.
- Tutti i metadati associati alla tabella originale, ad esempio
table_option_list
ocolumn_option_list
. Per ulteriori informazioni, consulta Istruzioni per la definizione del linguaggio di definizione dei dati. - Possibilità di utilizzare SQL precedente per scrivere i risultati delle query in tabelle partizionate. L'utilizzo del codice SQL precedente non è completamente supportato nelle tabelle partizionate. Una soluzione è eseguire la migrazione del codice SQL precedente flussi di lavoro in GoogleSQL prima di applicare un suggerimento per la partizione.
In caso di problemi, devi eseguire manualmente la migrazione degli artefatti interessati alla nuova tabella.
Dopo aver esaminato la tabella partizionata, puoi scegliere di eliminare il backup con il seguente comando:DROP TABLE DATASET.BACKUP_TABLE
Prezzi
Quando applichi un suggerimento a una tabella, puoi riscontrare quanto segue costi:
- Costi di elaborazione. Quando applichi un consiglio, esegui un DDL (Data Definition Language) o Data Manipulation Language (DML) al 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).
A seconda dell'account di fatturazione si applicano i costi per l'elaborazione e l'archiviazione standard associato al progetto. Per ulteriori informazioni, vedi Prezzi di BigQuery.