Visualizzazione COLUMNS

La visualizzazione INFORMATION_SCHEMA.COLUMNS contiene una riga per ogni colonna (campo) di una tabella.

Autorizzazioni obbligatorie

Per eseguire query sulla visualizzazione INFORMATION_SCHEMA.COLUMNS, devi disporre delle seguenti autorizzazioni IAM (Identity and Access Management):

  • bigquery.tables.get
  • bigquery.tables.list

Ognuno dei seguenti ruoli IAM predefiniti include le autorizzazioni precedenti:

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

Per ulteriori informazioni sulle autorizzazioni di BigQuery, consulta Controllo dell'accesso con IAM.

Schema

Quando esegui una query sulla visualizzazione INFORMATION_SCHEMA.COLUMNS, i risultati della query contengono una riga per ogni colonna (campo) di una tabella.

La visualizzazione INFORMATION_SCHEMA.COLUMNS ha il seguente schema:

Nome colonna Tipo di dati Valore
table_catalog STRING L'ID progetto del progetto che contiene il set di dati.
table_schema STRING Il nome del set di dati che contiene la tabella, noto anche come il datasetId.
table_name STRING Il nome della tabella o della vista, noto anche come tableId.
column_name STRING Il nome della colonna.
ordinal_position INT64 L'offset della colonna all'interno della tabella, con indice 1. Se si tratta di una pseudocolonna come _PARTITIONTIME o _PARTITIONDATE, il valore è NULL.
is_nullable STRING YES o NO a seconda che la modalità della colonna consenta valori NULL.
data_type STRING Il tipo di dati GoogleSQL della colonna.
is_generated STRING Il valore è ALWAYS se la colonna è una colonna di incorporamento generata automaticamente; in caso contrario, il valore è NEVER.
generation_expression STRING Il valore è l'espressione di generazione utilizzata per definire la colonna se si tratta di una colonna di incorporamento generata automaticamente; in caso contrario, il valore è NULL.
is_stored STRING Il valore è YES se la colonna è una colonna di incorporamento generata automaticamente; in caso contrario, il valore è NULL.
async_generation_status STRUCT Contiene errori di blocco per i job di generazione di incorporamenti in background se la colonna è una colonna di incorporamento generata automaticamente; in caso contrario, il valore è NULL. Per informazioni sugli errori di blocco, consulta il campo async_generation_status.blocking_error.message. Gli errori di blocco possono includere:
  • Errori di autorizzazione negata
  • Errori non trovati
  • Errori relativi all'endpoint del modello di incorporamento non supportato
  • Errori relativi all'API Vertex AI non abilitata
Una volta che il job di generazione di incorporamenti successivo è stato completato correttamente, async_generation_status la colonna viene cancellata.
is_hidden STRING YES o NO a seconda che la colonna sia una pseudocolonna come _PARTITIONTIME o _PARTITIONDATE.
is_updatable STRING Il valore è sempre NULL.
is_system_defined STRING YES o NO a seconda che la colonna sia una pseudocolonna come _PARTITIONTIME o _PARTITIONDATE.
is_partitioning_column STRING YES o NO a seconda che la colonna sia una colonna di partizionamento.
clustering_ordinal_position INT64 L'offset della colonna all'interno delle colonne di clustering della tabella, con indice 1. Il valore è NULL se la tabella non è una tabella con clustering.
collation_name STRING Il nome della specifica delle regole di confronto se esiste; in caso contrario, NULL.

Se viene passato un valore STRING o ARRAY<STRING>, la specifica di confronto viene restituita se esiste; in caso contrario, viene restituito NULL.
column_default STRING Il valore predefinito della colonna, se esiste; in caso contrario, il valore è NULL.
rounding_mode STRING La modalità di arrotondamento utilizzata per i valori scritti nel campo se il suo tipo è con parametri NUMERIC o BIGNUMERIC; in caso contrario, il valore è NULL.
data_policies.name STRING L'elenco delle policy sui dati associate alla colonna per controllare l'accesso e la mascheratura. Questo campo è in (anteprima).
policy_tags ARRAY<STRING> L'elenco dei tag criterio associati alla colonna.

Per garantire la stabilità, ti consigliamo di elencare esplicitamente le colonne nelle query dello schema informativo anziché utilizzare un carattere jolly (SELECT *). L'elenco esplicito delle colonne impedisce l'interruzione delle query se lo schema sottostante cambia.

Ambito e sintassi

Le query su questa visualizzazione devono includere un qualificatore di set di dati o di regione. Per le query con un qualificatore di set di dati, devi disporre delle autorizzazioni per il set di dati. Per le query con un qualificatore di regione, devi disporre delle autorizzazioni per il progetto. Per ulteriori informazioni, consulta Sintassi. La tabella seguente illustra gli ambiti di regione e risorsa per questa visualizzazione:

Nome vista Ambito risorsa Ambito regione
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.COLUMNS Livello progetto REGION
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.COLUMNS Livello set di dati Posizione del set di dati
Sostituisci quanto segue:
  • (Facoltativo) PROJECT_ID: l'ID del tuo Google Cloud progetto. Se non specificato, viene utilizzato il progetto predefinito.
  • REGION: il nome di una regione del set di dati. Ad esempio, `region-us`.
  • DATASET_ID: l'ID del set di dati. Per ulteriori informazioni, consulta Qualificatore del set di dati.

Esempio

L'esempio seguente recupera i metadati dalla INFORMATION_SCHEMA.COLUMNS visualizzazione per la population_by_zip_2010 tabella nel census_bureau_usa set di dati. Questo set di dati fa parte del programma di set di dati pubblici di BigQuery.

Poiché la tabella su cui stai eseguendo la query si trova in un altro progetto, il bigquery-public-data progetto, devi aggiungere l'ID progetto al set di dati nel seguente formato: `project_id`.dataset.INFORMATION_SCHEMA.view; ad esempio, `bigquery-public-data`.census_bureau_usa.INFORMATION_SCHEMA.TABLES.

La seguente colonna è esclusa dai risultati della query:

  • IS_UPDATABLE
  SELECT
    * EXCEPT(is_updatable)
  FROM
    `bigquery-public-data`.census_bureau_usa.INFORMATION_SCHEMA.COLUMNS
  WHERE
    table_name = 'population_by_zip_2010';

Il risultato è simile al seguente. Per una maggiore leggibilità, alcune colonne sono escluse dal risultato.

+------------------------+-------------+------------------+-------------+-----------+-----------+-------------------+------------------------+-----------------------------+-------------+
|       table_name       | column_name | ordinal_position | is_nullable | data_type | is_hidden | is_system_defined | is_partitioning_column | clustering_ordinal_position | policy_tags |
+------------------------+-------------+------------------+-------------+-----------+-----------+-------------------+------------------------+-----------------------------+-------------+
| population_by_zip_2010 | zipcode     |                1 | NO          | STRING    | NO        | NO                | NO                     |                        NULL | 0 rows      |
| population_by_zip_2010 | geo_id      |                2 | YES         | STRING    | NO        | NO                | NO                     |                        NULL | 0 rows      |
| population_by_zip_2010 | minimum_age |                3 | YES         | INT64     | NO        | NO                | NO                     |                        NULL | 0 rows      |
| population_by_zip_2010 | maximum_age |                4 | YES         | INT64     | NO        | NO                | NO                     |                        NULL | 0 rows      |
| population_by_zip_2010 | gender      |                5 | YES         | STRING    | NO        | NO                | NO                     |                        NULL | 0 rows      |
| population_by_zip_2010 | population  |                6 | YES         | INT64     | NO        | NO                | NO                     |                        NULL | 0 rows      |
+------------------------+-------------+------------------+-------------+-----------+-----------+-------------------+------------------------+-----------------------------+-------------+