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 motore per suggerimenti

Il Recommender per il clustering e il partizionamento di BigQuery genera consigli per partizioni o cluster per ottimizzare le tabelle BigQuery. Il motore per suggerimenti analizza i flussi di lavoro nelle tabelle BigQuery e offre per ottimizzare 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 genera 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 partizionato, non in cluster Partition "Risparmia circa 64 ore di slot al mese eseguendo il partizionamento su column_C per DAY"
Non partizionate, non raggruppate in cluster Cluster "Risparmia circa 64 ore di slot al mese eseguendo il clustering su column_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 eseguire il partizionamento o il cluster di 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 per suggerimenti restituisce anche informazioni sui carichi di lavoro delle tabelle sotto forma di insight. Gli approfondimenti sono risultati che ti aiutano a comprendere il carico di lavoro del progetto, fornendo maggiore contesto su come una partizione il suggerimento del cluster può migliorare i costi dei carichi di lavoro.

Limitazioni

  • Il consigliatore per il partizionamento e il clustering non supporta le 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 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 precedenti 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 ulteriori informazioni, vedi 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 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 A basse emissioni di CO2
Multiregione UE eu
Francoforte europe-west3 icona foglia A basse emissioni di CO2
Londra europe-west2 icona foglia A basse emissioni 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 A basse emissioni di CO2
Virginia del Nord us-east4
Oregon us-west1 icona foglia A basse emissioni di CO2
Salt Lake City us-west3
San Paolo southamerica-east1 icona foglia Bassi livelli di CO2
Toronto northamerica-northeast2 icona foglia A basse emissioni di CO2
Stati Uniti (più regioni) 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 vedere le autorizzazioni esatte obbligatorie, espandi la sezione Autorizzazioni obbligatorie:

Autorizzazioni obbligatorie

Per accedere ai suggerimenti su 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 suggerimenti su partizioni e cluster e insight 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.

    Nella scheda Consigli sono elencati tutti i consigli disponibili per il tuo progetto.

  3. Nel riquadro Ottimizza i costi dei carichi di lavoro 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 suggerimenti con suggerimenti su partizionamento e clustering.

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

gcloud

Per visualizzare i suggerimenti su partizioni o cluster per un progetto specifico, usa 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 suggerimento.
content.overview.partitionColumn Partition Nome della colonna di partizionamento consigliato.
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 insight tabella con gcloud CLI, utilizza 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 utilizzati dal carico di lavoro in esecuzione sulla tabella
content.queryJobsCountMonthly Tutti Conteggio mensile dei job in esecuzione nella tabella

API REST

Per visualizzare i consigli per le partizioni o i cluster per un progetto specifico, utilizza l'API REST. Con ciascun comando, devi fornire un metodo di autenticazione che puoi ottenere usando gcloud CLI. Per maggiori informazioni 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
Nella tabella seguente vengono descritti i campi importanti della risposta dell'API per suggerimenti:

Proprietà Pertinente per il sottotipo Descrizione
recommenderSubtype Partizione o cluster Indica il tipo di suggerimento.
content.overview.partitionColumn Partition Nome della colonna di partizionamento consigliato.
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 insight tabella utilizzando l'API REST, esegui questo 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 Insights:

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 utilizzati dal carico di lavoro in esecuzione sulla tabella
content.queryJobsCountMonthly Tutti Conteggio mensile dei job in esecuzione nella tabella

Applica i suggerimenti per i cluster

Per applicare i suggerimenti sul cluster, esegui una delle seguenti operazioni:

Applica i cluster direttamente alla tabella originale

Puoi applicare i suggerimenti sul cluster direttamente a un progetto BigQuery esistente tabella. 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 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 API tables.update o tables.patch per modificare la specifica di 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 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 Cloud Shell Editor.

    Attivare 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 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, 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)
    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 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 alla 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 copiata:

        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 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. È probabile che molte funzioni di tabella siano 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 artefatti interessati alla nuova tabella.

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

Applicare i cluster in una vista materializzata

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. Esistono considerazioni sui prezzi quando esegui query, gestisci e memorizzi le viste materializzate. Per informazioni su come creare una vista materializzata in cluster, consulta Visualizzazioni materializzate in cluster.

Applica i suggerimenti per le partizioni

Per applicare i suggerimenti di partizionamento, devi applicarli a una copia della tabella originale. BigQuery non supporta la modifica di un partizionamento schema di una tabella, come la modifica di una tabella non partizionata in tabella partizionata, modificando lo schema di partizionamento di una tabella o creando vista materializzata con uno schema di partizionamento diverso dalla tabella di base. Puoi modificare il partizionamento di una tabella solo su una copia della tabella.

Applica i suggerimenti sulla partizione 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 che i dati originali vengano conservati se 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 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 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 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. È probabile che molte funzioni di tabella siano 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 artefatti 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 i dettagli sui prezzi di questa funzionalità, vedi Panoramica dei prezzi di Gemini in BigQuery.

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

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, vedi 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 suggerimenti su partizioni e cluster potrebbero non essere visualizzati sotto quanto segue circostanze:

  • La tabella è inferiore a 10 GB.
  • La tabella ha un costo di scrittura elevato da parte del data Manipulation Language (DML) operazioni.
  • La tabella non è stata letta negli ultimi 30 giorni.
  • Il risparmio mensile stimato è troppo trascurabile (meno di un'ora di slot di risparmio).
  • La tabella è già in cluster.