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 e europe-southwest1
  • us-east1, us-east5, us-south1
  • me-central1, me-central2, me-west1
  • australia-southeast2
  • southamerica-west1

Prima di iniziare

  1. Assicurati che l'API Recommender sia abilitata.
  2. 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.

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. 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 esempio mydataset
    • COPIED_TABLE: un nome per la tabella copiata, ad esempio copy_mytable
    • ORIGINAL_TABLE: il nome della tabella originale, ad esempio mytable
  3. Nella console Google Cloud, apri l'editor di Cloud Shell.

    Attivare Cloud Shell

  4. 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 esempio mycolumn.

    Puoi anche chiamare il metodo API tables.update o tables.patch per modificare la specifica di clustering.

  5. 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'istruzione CREATE 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)
  6. 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:

      1. 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.

      2. 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 esempio col1, 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.

  7. 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 esempio backup_mytable.

  8. 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.

Ti consigliamo di rivedere la tabella in cluster per assicurarti che tutte le funzioni della tabella funzionino come previsto. Molte funzioni di tabella sono probabilmente associate all'ID tabella e non al nome della tabella, quindi ti consigliamo di rivedere le seguenti funzioni di tabella prima di procedere:

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.

  1. 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 esempio mycolumn
    • DATASET: il nome del set di dati contenente la tabella, ad esempio mydataset
    • ORIGINAL_TABLE: il nome della tabella originale, ad esempio mytable

    Puoi anche chiamare il metodo API tables.update o tables.patch per modificare la specifica di clustering.

  2. 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.

  1. 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 esempio mydataset
    • COPIED_TABLE: un nome per la tabella copiata, ad esempio copy_mytable
    • PARTITION_COLUMN: la colonna in base alla quale stai eseguendo il partizionamento, ad esempio mycolumn

    Per saperne di più sulla creazione di tabelle partizionate, consulta Creazione di tabelle partizionate.

  2. 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 esempio backup_mytable.

  3. 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.

Ti consigliamo di rivedere la tabella partizionata per assicurarti che tutte le funzioni della tabella funzionino come previsto. Molte funzioni di tabella sono probabilmente associate all'ID tabella e non al nome della tabella, quindi ti consigliamo di rivedere le seguenti funzioni di tabella prima di procedere:

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.