Gestisci le tabelle in cluster

Questo documento descrive come ottenere informazioni e controllare l'accesso alle tabelle in cluster in BigQuery.

Per ulteriori informazioni, consulta le seguenti risorse:

Prima di iniziare

Per ottenere informazioni sulle tabelle, devi disporre dell'autorizzazione bigquery.tables.get. I seguenti ruoli IAM predefiniti includono le autorizzazioni bigquery.tables.get:

  • roles/bigquery.metadataViewer
  • roles/bigquery.dataViewer
  • roles/bigquery.dataOwner
  • roles/bigquery.dataEditor
  • roles/bigquery.admin

Inoltre, se un utente dispone dell'autorizzazione bigquery.datasets.create, quando crea un set di dati, gli viene concesso l'accesso bigquery.dataOwner. L'accesso bigquery.dataOwner consente all'utente di ottenere informazioni sulle tabelle in un set di dati.

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

Controllare l'accesso alle tabelle in cluster

Per configurare l'accesso a tabelle e viste, puoi concedere un ruolo IAM a un'entità ai seguenti livelli, elencati in ordine di intervallo di risorse consentite (dalla più grande alla più piccola):

  • un livello elevato nella Google Cloud gerarchia delle risorse, ad esempio il livello di progetto, cartella o organizzazione
  • il livello del set di dati
  • a livello di tabella o visualizzazione

Puoi anche limitare l'accesso ai dati all'interno delle tabelle utilizzando i seguenti metodi:

L'accesso a qualsiasi risorsa protetta da IAM è cumulativo. Ad esempio, se un'entità non ha accesso a un livello elevato, ad esempio un progetto, puoi concederle l'accesso a livello di set di dati e l'entità avrà accesso alle tabelle e alle viste nel set di dati. Allo stesso modo, se l'entità non ha accesso a livello di progetto o set di dati, puoi concederle l'accesso a livello di tabella o vista.

La concessione di ruoli IAM a un livello superiore nella Google Cloud gerarchia delle risorse come il progetto, la cartella o l'organizzazione consente all'entità di accedere a un ampio insieme di risorse. Ad esempio, la concessione di un ruolo a un'entità a livello di progetto conferisce a questa entità autorizzazioni che si applicano a tutti i set di dati del progetto.

La concessione di un ruolo a livello di set di dati specifica le operazioni che un'entità è autorizzata a eseguire su tabelle e viste in quel set di dati specifico, anche se l'entità non ha accesso a un livello superiore. Per informazioni sulla configurazione dei controlli dell'accesso a livello di set di dati, consulta Controllare l'accesso ai set di dati.

La concessione di un ruolo a livello di tabella o vista specifica le operazioni che un'entità è autorizzata a eseguire su tabelle e viste specifiche, anche se l'entità non ha accesso a un livello superiore. Per informazioni sulla configurazione dei controlli dell'accesso a livello di tabella, vedi Controllo dell'accesso a tabelle e viste.

Puoi anche creare ruoli personalizzati IAM. Se crei un ruolo personalizzato, le autorizzazioni che concedi dipendono dalle operazioni specifiche che vuoi che l'entità sia in grado di eseguire.

Non puoi impostare un'autorizzazione "Nega" su qualsiasi risorsa protetta da IAM.

Per saperne di più su ruoli e autorizzazioni, consulta la sezione Informazioni sui ruoli nella documentazione di IAM e la sezione Ruoli e autorizzazioni IAM di BigQuery.

Ottenere informazioni sulle tabelle in cluster

Seleziona una delle seguenti opzioni:

Console

  1. Nella console Google Cloud , vai al riquadro Risorse.

  2. Fai clic sul nome del set di dati per espanderlo, poi fai clic sul nome della tabella che vuoi visualizzare.

  3. Fai clic su Dettagli.

    Vengono visualizzati i dettagli della tabella, incluse le colonne di clustering.

    Dettagli della tabella.

SQL

Per le tabelle in cluster, puoi eseguire query sulla colonna CLUSTERING_ORDINAL_POSITION nella vista INFORMATION_SCHEMA.COLUMNS per trovare l'offset con indice 1 della colonna all'interno delle colonne di clustering della tabella:

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

    Vai a BigQuery

  2. Nell'editor di query, inserisci la seguente istruzione:

    CREATE TABLE mydataset.data (column1 INT64, column2 INT64)
    CLUSTER BY column1, column2;
    SELECT
      column_name, clustering_ordinal_position
    FROM
      mydataset.INFORMATION_SCHEMA.COLUMNS;

  3. Fai clic su Esegui.

Per maggiori informazioni su come eseguire le query, consulta Eseguire una query interattiva.

La posizione ordinale del clustering è 1 per column1 e 2 per column2. Altri metadati della tabella sono disponibili tramite le visualizzazioni TABLES, TABLE_OPTIONS, COLUMNS e COLUMN_FIELD_PATH in INFORMATION_SCHEMA.

bq

Esegui il comando bq show per visualizzare tutte le informazioni della tabella. Utilizza il flag --schema per visualizzare solo le informazioni sullo schema della tabella. Il flag --format può essere utilizzato per controllare l'output.

Se stai recuperando informazioni su una tabella in un progetto diverso da quello predefinito, aggiungi l'ID progetto al set di dati nel seguente formato: project_id:dataset.

bq show \
    --schema \
    --format=prettyjson \
    PROJECT_ID:DATASET.TABLE

Sostituisci quanto segue:

  • PROJECT_ID: il tuo ID progetto
  • DATASET: il nome del set di dati
  • TABLE: il nome della tabella

Esempi:

Inserisci questo comando per visualizzare tutte le informazioni su myclusteredtable in mydataset. mydataset nel progetto predefinito.

bq show --format=prettyjson mydataset.myclusteredtable

L'output dovrebbe essere simile al seguente:

{
  "clustering": {
    "fields": [
      "customer_id"
    ]
  },
...
}

API

Chiama il metodo bigquery.tables.get e fornisci eventuali parametri pertinenti.

Elenca le tabelle in cluster in un set di dati

Le autorizzazioni richieste per elencare le tabelle in cluster e i passaggi per elencarle sono gli stessi delle tabelle standard. Per ulteriori informazioni, vedi Elencare le tabelle in un set di dati.

Modificare la specifica di clustering

Puoi modificare o rimuovere le specifiche di clustering di una tabella oppure modificare l'insieme di colonne in cluster in una tabella in cluster. Questo metodo di aggiornamento del set di colonne di clustering è utile per le tabelle che utilizzano inserimenti di streaming continui perché non possono essere facilmente scambiate con altri metodi.

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 su cui 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

Passaggi successivi