Gestire i suggerimenti per partizioni e cluster

Questo documento descrive il funzionamento del consigliatore per le partizioni e i cluster, come visualizzare i consigli e gli approfondimenti e come applicare i consigli per le partizioni e i cluster.

Come funziona il recommender

Il Recommender di clustering e partizionamento BigQuery genera suggerimenti per partizioni o cluster per ottimizzare le tabelle BigQuery. Il recommender analizza i flussi di lavoro nelle tabelle BigQuery e offre consigli per ottimizzare meglio i flussi di lavoro e i costi delle query utilizzando il partizionamento delle tabelle o il clustering delle tabelle.

Per saperne di più sul servizio Recommender, consulta la panoramica di Recommender.

Il recommender per il partizionamento e il clustering utilizza i dati di esecuzione del carico di lavoro del progetto degli ultimi 30 giorni per analizzare ogni tabella BigQuery alla ricerca di configurazioni di partizionamento e clustering suboptimal. Il recommender utilizza anche il machine learning per prevedere in che misura l'esecuzione del carico di lavoro potrebbe essere ottimizzata con diverse configurazioni di partitioning o clustering. Se il recommender rileva che il partizionamento o il clustering di una tabella consente risparmi significativi, genera un consiglio. Il recommender per il partizionamento e il clustering genera i seguenti tipi di consigli:

Tipo di tabella esistente Sottotipo di consiglio Esempio di consiglio
Non partizionate, non raggruppate in cluster Partition "Risparmia circa 64 ore di slot al mese partizionando in base alla colonna_C per GIORNO"
Non partizionate, non raggruppate in cluster Cluster "Risparmia circa 64 ore di slot al mese eseguendo il clustering in base a colonna_C"
Partizionato, non clusterizzato Cluster "Risparmia circa 64 ore di slot al mese eseguendo il clustering in base a colonna_C"

Ogni consiglio è composto da tre parti:

  • Indicazioni per partizionare o raggruppare una tabella specifica
  • La colonna specifica di una tabella da partizionare o raggruppare
  • Risparmi mensili stimati per l'applicazione del consiglio

Per calcolare il potenziale risparmio di carico di lavoro, il recommender presuppone che i dati storici sul carico di lavoro di esecuzione degli ultimi 30 giorni rappresentino il carico di lavoro futuro.

L'API del recommender restituisce anche informazioni sul carico di lavoro della tabella sotto forma di approfondimenti. Gli approfondimenti sono risultati che ti aiutano a comprendere il carico di lavoro del tuo progetto, fornendo più contesto su come un consiglio per una partizione o un cluster potrebbe migliorare i costi del carico di lavoro.

Limitazioni

  • Il consigliatore per il partizionamento e il clustering non supporta le tabelle BigQuery con SQL precedente. Durante la generazione di un consiglio, il recommender esclude eventuali query SQL precedente nella sua analisi. Inoltre, l'applicazione dei consigli per le partizioni alle tabella BigQuery con SQL precedente interrompe eventuali flussi di lavoro SQL precedente nella tabella.

    Prima di applicare i consigli per le partizioni, esegui la migrazione dei flussi di lavoro SQL precedente in GoogleSQL.

  • BigQuery non supporta la modifica in blocco dello schema di partizionamento di una tabella. Puoi modificare il partizionamento di una tabella solo su una copia della tabella. Per saperne di più, consulta Applicare i consigli per le partizioni.

Località

Il recommender per il partizionamento e il clustering è disponibile nelle seguenti località di elaborazione:

Descrizione della regione Nome della regione Dettagli
Asia Pacifico
Delhi asia-south2
Hong Kong asia-east2
Giacarta asia-southeast2
Mumbai asia-south1
Osaka asia-northeast2
Seul asia-northeast3
Singapore asia-southeast1
Sydney australia-southeast1
Taiwan asia-east1
Tokyo asia-northeast1
Europa
Belgio europe-west1 icona foglia Bassi livelli di CO2
Berlino europe-west10 icona foglia Bassi livelli di CO2
Multiregione UE eu
Francoforte europe-west3 icona foglia Bassi livelli di CO2
Londra europe-west2 icona foglia Bassi livelli di CO2
Paesi Bassi europe-west4 icona foglia Bassi livelli di CO2
Zurigo europe-west6 icona foglia Bassi livelli di CO2
Americhe
Iowa us-central1 icona foglia Bassi livelli di CO2
Las Vegas us-west4
Los Angeles us-west2
Montréal northamerica-northeast1 icona foglia Bassi livelli di CO2
Virginia del Nord us-east4
Oregon us-west1 icona foglia Bassi livelli di CO2
Salt Lake City us-west3
San Paolo southamerica-east1 icona foglia Bassi livelli di CO2
Toronto northamerica-northeast2 icona foglia Bassi livelli di CO2
Multiregione Stati Uniti us

Prima di iniziare

Autorizzazioni obbligatorie

Per ottenere le autorizzazioni necessarie per accedere ai consigli per la partizione e il clustering, chiedi all'amministratore di concederti il ruolo IAM BigQuery Partitioning Clustering Recommender Viewer (roles/recommender.bigqueryPartitionClusterViewer). Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.

Questo ruolo predefinito contiene le autorizzazioni necessarie per accedere ai consigli per partizioni e cluster. Per visualizzare le autorizzazioni esatte richieste, espandi la sezione Autorizzazioni richieste:

Autorizzazioni obbligatorie

Per accedere ai suggerimenti per partizioni e cluster sono necessarie le seguenti autorizzazioni:

  • recommender.bigqueryPartitionClusterRecommendations.get
  • recommender.bigqueryPartitionClusterRecommendations.list

Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.

Per saperne di più sui ruoli e sulle autorizzazioni IAM in BigQuery, consulta Introduzione a IAM.

Visualizza i suggerimenti

Questa sezione descrive come visualizzare i consigli e gli approfondimenti su partizioni e cluster utilizzando la console Google Cloud, Google Cloud CLI o l'API Recommender.

Seleziona una delle seguenti opzioni:

Console

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

    Vai a BigQuery

  2. Per aprire la scheda dei consigli, fai clic su Consigli > Visualizza tutti i consigli.

    Fai clic su Consigli per visualizzare tutti i consigli.

    La scheda Consigli elenca tutti i consigli disponibili per il tuo progetto.

  3. Nel riquadro Ottimizza i costi dei workload BigQuery, fai clic su Visualizza tutto.

    La tabella dei consigli sui costi elenca tutti i consigli generati per il progetto corrente. Ad esempio, lo screenshot seguente mostra che il recommender ha analizzato la tabella example_table e poi ha consigliato di raggruppare la colonna example_column per risparmiare una quantità approssimativa di byte e slot.

    Tabella dei consigli con suggerimenti di partizionamento e clustering.

  4. Per visualizzare ulteriori informazioni sull'insight e sul consiglio della tabella, fai clic su un consiglio.

gcloud

Per visualizzare i consigli per partizioni o cluster per un progetto specifico, utilizza il comando gcloud recommender recommendations list:

gcloud recommender recommendations list \
    --project=PROJECT_NAME \
    --location=REGION_NAME \
    --recommender=google.bigquery.table.PartitionClusterRecommender \
    --format=FORMAT_TYPE \

Sostituisci quanto segue:

La seguente tabella descrive i campi importanti della risposta dell'API del recommender:

Proprietà Pertinente per il sottotipo Descrizione
recommenderSubtype Partizione o cluster Indica il tipo di consiglio.
content.overview.partitionColumn Partition Nome della colonna di partizionamento consigliata.
content.overview.partitionTimeUnit Partition Unità di tempo consigliata per il partizionamento. Ad esempio, DAY indica che il consiglio è di avere partizioni giornaliere nella colonna consigliata.
content.overview.clusterColumns Cluster Nomi delle colonne di clustering consigliati.

Per visualizzare gli approfondimenti della tabella utilizzando gcloud CLI, utilizza il comando gcloud recommender insights list:

gcloud recommender insights list \
    --project=PROJECT_NAME \
    --location=REGION_NAME \
    --insight-type=google.bigquery.table.StatsInsight \
    --format=FORMAT_TYPE \

Sostituisci quanto segue:

La seguente tabella descrive i campi importanti della risposta dell'API di approfondimenti:

Proprietà Pertinente per il sottotipo Descrizione
content.existingPartitionColumn Cluster Colonna di partizionamento esistente, se presente
content.tableSizeTb Tutti Dimensioni della tabella in terabyte
content.bytesReadMonthly Tutti Byte mensili letti dalla tabella
content.slotMsConsumedMonthly Tutti Millisecondi di slot mensili consumati dal workload in esecuzione nella tabella
content.queryJobsCountMonthly Tutti Conteggio mensile dei job in esecuzione nella tabella

API REST

Per visualizzare i consigli per partizioni o cluster per un progetto specifico, utilizza l'API REST. Con ogni comando, devi fornire un token di autenticazione, che puoi ottenere utilizzando gcloud CLI. Per maggiori informazioni su come ottenere un token di autenticazione, consulta Metodi per ottenere un token ID.

Puoi utilizzare la richiesta curl list per visualizzare tutti i consigli per un progetto specifico:

curl
    -H "Authorization: Bearer $GCLOUD_AUTH_TOKEN"
    -H "x-goog-user-project: PROJECT_NAME" https://recommender.googleapis.com/v1/projects/my-project/locations/us/recommenders/google.bigquery.table.PartitionClusterRecommender/recommendations

Sostituisci quanto segue:

  • GCLOUD_AUTH_TOKEN: il nome di un token di accesso gcloud CLI valido
  • PROJECT_NAME: il nome del progetto contenente la tabella BigQuery
La seguente tabella descrive i campi importanti della risposta dell'API del recommender:

Proprietà Pertinente per il sottotipo Descrizione
recommenderSubtype Partizione o cluster Indica il tipo di consiglio.
content.overview.partitionColumn Partition Nome della colonna di partizionamento consigliata.
content.overview.partitionTimeUnit Partition Unità di tempo consigliata per il partizionamento. Ad esempio, DAY indica che il consiglio è di avere partizioni giornaliere nella colonna consigliata.
content.overview.clusterColumns Cluster Nomi delle colonne di clustering consigliati.

Per visualizzare gli approfondimenti della tabella utilizzando l'API REST, esegui il seguente comando:

curl
-H "Authorization: Bearer $GCLOUD_AUTH_TOKEN"
-H "x-goog-user-project: PROJECT_NAME" https://recommender.googleapis.com/v1/projects/my-project/locations/us/insightTypes/google.bigquery.table.StatsInsight/insights

Sostituisci quanto segue:

  • GCLOUD_AUTH_TOKEN: il nome di un token di accesso gcloud CLI valido
  • PROJECT_NAME: il nome del progetto contenente la tabella BigQuery
La seguente tabella descrive i campi importanti della risposta dell'API di approfondimenti:

Proprietà Pertinente per il sottotipo Descrizione
content.existingPartitionColumn Cluster Colonna di partizionamento esistente, se presente
content.tableSizeTb Tutti Dimensioni della tabella in terabyte
content.bytesReadMonthly Tutti Byte mensili letti dalla tabella
content.slotMsConsumedMonthly Tutti Millisecondi di slot mensili consumati dal workload in esecuzione nella tabella
content.queryJobsCountMonthly Tutti Conteggio mensile dei job in esecuzione nella tabella

Applica i suggerimenti per i cluster

Per applicare i consigli per i cluster, esegui una delle seguenti operazioni:

Applicare i cluster direttamente alla tabella originale

Puoi applicare i consigli per i cluster direttamente a una tabella BigQuery esistente. Questo metodo è più rapido dell'applicazione dei consigli a una tabella copiata, ma non conserva una tabella di backup.

Segui questi passaggi per applicare una nuova specifica di clustering a 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 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 dell'API tables.update o tables.patch per modificare la specifica del clustering.

  2. Per raggruppare tutte le righe in base alla nuova specifica di raggruppamento, esegui il seguente statement UPDATE:

    UPDATE DATASET.ORIGINAL_TABLE SET CLUSTER_COLUMN=CLUSTER_COLUMN WHERE true

Applicare i cluster a una tabella copiata

Quando applichi i consigli sui cluster a una tabella BigQuery, puoi prima copiare la tabella originale e poi applicare il consiglio alla tabella copiata. Questo metodo garantisce che i dati originali vengano conservati se è necessario eseguire il rollback della modifica alla configurazione del clustering.

Puoi utilizzare questo metodo per applicare i suggerimenti di cluster sia alle tabelle non partizionate sia a quelle partizionate.

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

    Vai a BigQuery

  2. Nell'editor di 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 Cloud Shell Editor.

    Attivare Cloud Shell

  4. Nell'editor di Cloud Shell, aggiorna la specifica del clustering della tabella copiata in modo che corrisponda a quella consigliata utilizzando il comando bq update:

     bq update --clustering_fields=CLUSTER_COLUMN DATASET.COPIED_TABLE 

    Sostituisci CLUSTER_COLUMN con la colonna in base alla quale esegui il clustering, ad esempio mycolumn.

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

  5. Nell'editor di query, recupera lo schema della tabella con la configurazione del partizionamento e del clustering della tabella originale, se esistente. 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 (Data Definition Language) completa 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 partizione nella tabella originale:

    Tipo di partizionamento Esempio di output
    Non partizionato La clausola PARTITION BY non è presente.
    Partizionato per colonna della tabella PARTITION BY c0
    PARTITION BY DATE(c0)
    PARTITION BY DATETIME_TRUNC(c0, MONTH)
    Partizionato per data di importazione PARTITION BY _PARTITIONDATE
    PARTITION BY DATETIME_TRUNC(_PARTITIONTIME, MONTH)
  6. Importa i dati nella tabella copiata. La procedura che utilizzi si basa sul tipo di partizione.

    • Se la tabella originale non è partizionata o è partizionata in base a una colonna della tabella, importa i dati dalla tabella originale a quella copiata:
      INSERT INTO DATASET.COPIED_TABLE
      SELECT * FROM DATASET.ORIGINAL_TABLE
    • Se la tabella originale è partizionata in base alla data di importazione:

      1. Recupera l'elenco delle colonne per formare l'espressione di importazione dati utilizzando la visualizzazione 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 copiata:

        INSERT DATASET.COPIED_TABLE (COLUMN_NAMES, _PARTITIONTIME)
        SELECT *, _PARTITIONTIME FROM DATASET.ORIGINAL_TABLE

        Sostituisci COLUMN_NAMES con l'elenco di colonne che è stato l'output del passaggio precedente, separato da virgole, ad esempio col1, col2, col3.

    Ora hai una tabella copiata in cluster con gli stessi dati della tabella originale. Nei passaggi successivi, sostituisci la tabella originale con una tabella appena raggruppata.

  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 copiata con il nome della tabella originale:

    ALTER TABLE DATASET.COPIED_TABLE
    RENAME TO DATASET.ORIGINAL_TABLE

    La tabella originale è ora raggruppata in base al consiglio per i cluster.

Ti consigliamo di esaminare la tabella raggruppata 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, pertanto è meglio esaminare le seguenti funzioni di tabella prima di procedere:

In caso di problemi, devi eseguire manualmente la migrazione degli elementi interessati alla nuova tabella.

Dopo aver esaminato la tabella cluster, puoi eliminare facoltativamente la tabella di backup con il seguente comando:
    DROP TABLE DATASET.BACKUP_TABLE
    

Applicare i cluster in una vista materializzata

Puoi creare una vista materializzata della tabella per memorizzare i dati della tabella originale con il consiglio applicato. L'utilizzo di viste materializzate per applicare i consigli garantisce che i dati raggruppati vengano mantenuti aggiornati utilizzando gli aggiornamenti automatici. Esistono considerazioni sui prezzi quando esegui query, gestisci e memorizzi le viste materializzate. Per scoprire come creare una vista materializzata raggruppata, consulta Viste materializzate raggruppate.

Applica i suggerimenti per le partizioni

Per applicare i consigli per le partizioni, devi applicarli a una copia della tabella originale. BigQuery non supporta la modifica in situ di uno schema di partizionamento di una tabella, ad esempio la conversione di una tabella non partizionata in una tabella partizionata, la modifica dello schema di partizionamento di una tabella o la creazione di una vista materializzata con uno schema di partizionamento diverso da quello della tabella di base. Puoi modificare il partizionamento di una tabella solo su una copia della tabella.

Applicare i suggerimenti per le partizioni a una tabella copiata

Quando applichi i consigli per le partizioni a una tabella BigQuery, devi prima copiare la tabella originale e poi applicare il consiglio alla tabella copiata. Questo approccio garantisce la conservazione dei dati originali se è necessario eseguire il rollback di una partizione.

La procedura seguente utilizza un consiglio di esempio per partizionare una tabella in base all'unità di tempo della partizione DAY.

  1. Crea una tabella copiata utilizzando i consigli per le 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 esegui il partizionamento, ad esempio mycolumn

    Per ulteriori informazioni sulla creazione di tabelle partizionate, consulta Creare 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 copiata con il nome della tabella originale:

    ALTER TABLE DATASET.COPIED_TABLE
    RENAME TO DATASET.ORIGINAL_TABLE

    La tabella originale è ora partizionata in base al consiglio per la partizione.

Ti consigliamo di esaminare 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, pertanto è meglio esaminare le seguenti funzioni di tabella prima di procedere:

In caso di problemi, devi eseguire manualmente la migrazione degli elementi interessati alla nuova tabella.

Dopo aver esaminato la tabella partizionata, puoi eliminare facoltativamente la tabella di backup con il seguente comando:
    DROP TABLE DATASET.BACKUP_TABLE
    

Prezzi

Per informazioni dettagliate sui prezzi di questa funzionalità, consulta la panoramica dei prezzi di Gemini in BigQuery.

Quando applichi un consiglio a una tabella, potresti sostenere i seguenti costi:

  • Costi di elaborazione. Quando applichi un consiglio, esegui una query DDL (Data Definition Language) o DML (Data Manipulation Language) nel 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).

Gli addebiti standard per l'elaborazione e lo spazio di archiviazione si applicano in base all'account di fatturazione associato al progetto. Per ulteriori informazioni, consulta la pagina relativa ai prezzi di BigQuery.

Quote e limiti

Per informazioni su quote e limiti per questa funzionalità, consulta Quote per Gemini in BigQuery.

Risoluzione dei problemi

Problema: non vengono visualizzati consigli per una tabella specifica.

I consigli per le partizioni e i cluster potrebbero non essere visualizzati nelle seguenti circostanze:

  • La tabella è inferiore a 10 GB.
  • La tabella ha un costo di scrittura elevato dovuto alle operazioni DML (Data Manipulation Language).
  • La tabella non è stata letta negli ultimi 30 giorni.
  • I risparmi mensili stimati sono troppo insignificanti (meno di 1 ora di risparmio per slot).
  • La tabella è già in cluster.