Gestire 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 ulteriori informazioni 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 a livello di progetto, cartella o organizzazione
  • Il livello del set di dati
  • Il livello della tabella o della vista

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

L'accesso a qualsiasi risorsa protetta da IAM è additivo. Ad esempio, se un'entità non ha accesso a un livello elevato, ad esempio a 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 elevato o a livello di 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 , ad esempio a livello di progetto, cartella o organizzazione, consente all'entità di accedere a un' ampia gamma di risorse. Ad esempio, la concessione di un ruolo a un'entità a livello di progetto conferisce a questa entità le 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 di 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 di accesso a livello di tabella, consulta Controllare l'accesso a tabelle e viste.

Puoi anche creare ruoli IAM personalizzati. 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 ulteriori informazioni su ruoli e autorizzazioni, consulta la sezione Informazioni sui ruoli nella documentazione di IAM e Ruoli e autorizzazioni IAM di BigQuery .

Ottenere informazioni sulle tabelle in cluster

Seleziona una delle seguenti opzioni:

Console

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

  2. Fai clic sul nome del set di dati per espanderlo, quindi 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 una query sulla CLUSTERING_ORDINAL_POSITION colonna nella INFORMATION_SCHEMA.COLUMNS vista per trovare l'offset con indice 1 della colonna all'interno delle colonne di clustering della tabella:

  1. Nella Google Cloud console, 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 ulteriori 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 viste TABLES, TABLE_OPTIONS, COLUMNS, e COLUMN_FIELD_PATH in INFORMATION_SCHEMA.

bq

Esegui il comando bq show per visualizzare tutte le informazioni sulla 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 il seguente comando per visualizzare tutte le informazioni su myclusteredtable in mydataset. mydataset nel tuo progetto predefinito.

bq show --format=prettyjson mydataset.myclusteredtable

L'output dovrebbe essere simile al seguente:

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

API

Chiama il bigquery.tables.get metodo e fornisci tutti i parametri pertinenti.

Elencare 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, consulta 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 dell'insieme di colonne di clustering è utile per le tabelle che utilizzano inserimenti di streaming continui perché queste tabelle non possono essere facilmente sostituite con altri metodi.

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 cluster 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