Vue COLUMNS

La vue INFORMATION_SCHEMA.COLUMNS contient une ligne pour chaque colonne (champ) d'une table.

Autorisations requises

Pour interroger la vue INFORMATION_SCHEMA.COLUMNS, vous avez besoin des autorisations IAM (Identity and Access Management) suivantes :

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

Chacun des rôles IAM prédéfinis suivants inclut les autorisations ci-dessus :

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

Pour plus d'informations sur les autorisations BigQuery, consultez la page Contrôle des accès avec IAM.

Schéma

Lorsque vous lancez une requête sur la vue INFORMATION_SCHEMA.COLUMNS, les résultats de la requête contiennent une ligne pour chaque colonne (champ) d'une table.

La vue INFORMATION_SCHEMA.COLUMNS présente le schéma suivant :

Nom de la colonne Type de données Valeur
table_catalog STRING ID du projet qui contient l'ensemble de données.
table_schema STRING Nom de l'ensemble de données contenant la table, également appelé datasetId.
table_name STRING Nom de la table ou de la vue, également appelé tableId.
column_name STRING Nom de la colonne.
ordinal_position INT64 Décalage avec un indice de 1 de la colonne dans la table. S'il s'agit d'une pseudo-colonne telle que _PARTITIONTIME ou _PARTITIONDATE, la valeur est NULL.
is_nullable STRING YES ou NO selon que le mode de la colonne autorise ou non les valeurs NULL.
data_type STRING Type de données GoogleSQL de la colonne.
is_generated STRING La valeur est ALWAYS si la colonne est une colonne d'embedding générée automatiquement. Sinon, la valeur est NEVER.
generation_expression STRING La valeur correspond à l'expression de génération utilisée pour définir la colonne si celle-ci est une colonne d'embedding générée automatiquement. Sinon, la valeur est NULL.
is_stored STRING La valeur est YES si la colonne est une colonne d'embedding générée automatiquement. Sinon, la valeur est NULL.
is_hidden STRING YES ou NO selon que la colonne est une pseudo-colonne telle que _PARTITIONTIME ou _PARTITIONDATE.
is_updatable STRING La valeur est toujours NULL.
is_system_defined STRING YES ou NO selon que la colonne est une pseudo-colonne telle que _PARTITIONTIME ou _PARTITIONDATE.
is_partitioning_column STRING YES ou NO selon qu'il s'agit ou non d'une colonne de partitionnement.
clustering_ordinal_position INT64 Décalage avec un indice de 1 de la colonne dans les colonnes de clustering de la table. La valeur est NULL si la table n'est pas une table en cluster.
collation_name STRING Nom de la spécification de classement si elle existe. Dans le cas contraire, NULL.

Si une valeur STRING ou ARRAY<STRING> est transmise, la spécification de classement est renvoyée si elle existe. Sinon, NULL est renvoyé.
column_default STRING Valeur par défaut de la colonne, si elle existe ; sinon, la valeur est NULL.
rounding_mode STRING Mode d'arrondi utilisé pour les valeurs écrites dans le champ si son type est de type NUMERIC ou BIGNUMERIC paramétré. Sinon, la valeur est NULL.
data_policies.name STRING Liste des stratégies de données associées à la colonne pour contrôler l'accès et le masquage. Ce champ est disponible en version bêta.
policy_tags ARRAY<STRING> Liste des tags avec stratégie associés à la colonne.

Pour plus de stabilité, nous vous recommandons de lister explicitement les colonnes dans vos requêtes de schéma d'informations au lieu d'utiliser un caractère générique (SELECT *). Cela permet d'éviter que les requêtes ne soient interrompues si le schéma sous-jacent change.

Champ d'application et syntaxe

Les requêtes exécutées sur cette vue doivent inclure un ensemble de données ou un qualificatif de région. Pour les requêtes avec un qualificatif d'ensemble de données, vous devez disposer d'autorisations pour l'ensemble de données. Pour les requêtes avec un qualificatif de région, vous devez disposer des autorisations nécessaires sur le projet. Pour en savoir plus, consultez la section Syntaxe. Le tableau suivant explique la portée des régions et des ressources pour cette vue :

Nom de la vue Champ d'application de la ressource Champ d'application de la région
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.COLUMNS Niveau Projet REGION
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.COLUMNS Niveau de l'ensemble de données Emplacement de l'ensemble de données
Remplacez l'élément suivant :
  • PROJECT_ID (facultatif) : ID de votre projet Google Cloud . Si non spécifié, le projet par défaut est utilisé.
  • REGION : tout nom de région d'ensemble de données. Exemple : `region-us`.
  • DATASET_ID : ID de votre ensemble de données. Pour en savoir plus, consultez la section Qualificatif d'ensemble de données.

Exemple

L'exemple suivant récupère les métadonnées de la vue INFORMATION_SCHEMA.COLUMNS pour la table population_by_zip_2010 de l'ensemble de données census_bureau_usa. Celui-ci fait partie du programme d'ensembles de données publics de BigQuery.

Comme la table que vous interrogez se trouve dans un autre projet (bigquery-public-data), vous ajoutez l'ID de projet à l'ensemble de données, en respectant le format `project_id`.dataset.INFORMATION_SCHEMA.view. Par exemple : `bigquery-public-data`.census_bureau_usa.INFORMATION_SCHEMA.TABLES.

La colonne suivante est exclue des résultats de la requête :

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

Le résultat ressemble à ce qui suit. Pour des raisons de lisibilité, certaines colonnes sont exclues des résultats.

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