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

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

    Vai a BigQuery

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

    Attiva Cloud Shell

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

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

  5. 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'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 in base alla colonna della tabella PARTITION BY c0
    PARTITION BY DATE(c0)
    PARTITION BY DATETIME_TRUNC(c0, MONTH)
    Partizionata in base al tempo di importazione PARTITION BY _PARTITIONDATE
    PARTITION BY DATETIME_TRUNC(_PARTITIONTIME, MONTH)
  6. 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:

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

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

  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 in cluster in base ai suggerimenti per il cluster.

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

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 ambiente BigQuery esistente . 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.

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

  1. 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 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 alla partizione un consiglio per i nostri esperti.

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

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, viene eseguito 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.