Vue TABLES

La vue INFORMATION_SCHEMA.TABLES contient une ligne pour chaque table ou vue d'un ensemble de données. Les vues TABLES et TABLE_OPTIONS contiennent également des informations générales sur les vues. Pour obtenir des informations détaillées, interrogez la vue INFORMATION_SCHEMA.VIEWS.

Autorisations requises

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

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

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

  • roles/bigquery.admin
  • roles/bigquery.dataViewer
  • 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 interrogez la vue INFORMATION_SCHEMA.TABLES, les résultats de la requête contiennent une ligne pour chaque table ou vue d'un ensemble de données. Pour obtenir des informations détaillées sur les vues, interrogez plutôt la vue INFORMATION_SCHEMA.VIEWS.

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

Nom de la colonne Type de données Value
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 ou la vue, également appelé datasetId.
table_name STRING Nom de la table ou de la vue, également appelé tableId.
table_type STRING Type de table (l'un des éléments suivants) :
is_insertable_into STRING YES ou NO, suivant que la table accepte ou non les instructions LMD INSERT
is_typed STRING La valeur est toujours NO
creation_time TIMESTAMP Date/Heure de création de la table
base_table_catalog STRING Pour les clones de table et les instantanés de table, le projet de la table de base. Applicable uniquement aux tables dont la valeur table_type est définie sur CLONE ou SNAPSHOT.
base_table_schema STRING Pour les clones de table et les instantanés de table, l'ensemble de données de la table de base. Applicable uniquement aux tables dont la valeur table_type est définie sur CLONE ou SNAPSHOT.
base_table_name STRING Pour les clones de table et les instantanés de table, le nom de la table de base. Applicable uniquement aux tables dont la valeur table_type est définie sur CLONE ou SNAPSHOT.
snapshot_time_ms TIMESTAMP Pour les clones de tables et les instantanés de table, le moment où l'opération de clonage ou de génération d'instantané a été exécutée sur la table de base pour créer cette table. Si la fonctionnalité temporelle a été utilisée, ce champ contient l'horodatage de la fonctionnalité temporelle. Sinon, le champ snapshot_time_ms est identique au champ creation_time. Applicable uniquement aux tables dont la valeur table_type est définie sur CLONE ou SNAPSHOT.
replica_source_catalog STRING Pour les instances répliquées de vues matérialisées, le projet de la vue matérialisée de base.
replica_source_schema STRING Pour les instances répliquées de vues matérialisées, l'ensemble de données de la vue matérialisée de base.
replica_source_name STRING Pour les instances répliquées de vues matérialisées, nom de la vue matérialisée de base.
replication_status STRING Pour les instances répliquées de vues matérialisées, l'état de la réplication de la vue matérialisée de base vers l'instance répliquée de la vue matérialisée ; l'une des options suivantes :
  • REPLICATION_STATUS_UNSPECIFIED
  • ACTIVE : la réplication est active sans erreur
  • SOURCE_DELETED : la vue matérialisée source a été supprimée.
  • PERMISSION_DENIEDLa vue matérialisée source n'a pas été autorisé sur l'ensemble de données contenant les tables sources BigLake Amazon S3 utilisées dans la requête qui a créé la vue matérialisée.
  • UNSUPPORTED_CONFIGURATION : il existe un problème avec les conditions préalables de l'instance répliquée, autres que l'autorisation de la vue matérialisée source.
replication_error STRING Si replication_status indique un problème de réplication pour une instance répliquée de vue matérialisée, replication_error fournit des informations supplémentaires.
ddl STRING L'Instruction LDD peut être utilisée pour recréer la table, par exemple CREATE TABLE ou CREATE VIEW
default_collation_name STRING Nom de la spécification de classement par défaut, le cas échéant. Dans le cas contraire, cette valeur est définie sur NULL.
upsert_stream_apply_watermark TIMESTAMP Heure de la dernière application des modifications de ligne pour les tables qui utilisent la capture des données modifiées (CDC). Pour en savoir plus, consultez la page Surveiller la progression des opérations upsert de la table.

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.TABLES Niveau Projet REGION
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.TABLES Niveau de l'ensemble de données Emplacement d'un ensemble de données
Remplacez les éléments suivants :

Exemple

-- Returns metadata for tables in a single dataset.
SELECT * FROM myDataset.INFORMATION_SCHEMA.TABLES;

Examples

Exemple 1 :

L'exemple suivant récupère les métadonnées de toutes les tables de l'ensemble de données nommé mydataset. Les métadonnées renvoyées concernent tous les types de tables de mydataset dans votre projet par défaut.

mydataset contient les tables suivantes :

  • mytable1 : une table BigQuery standard
  • myview1 : une vue BigQuery

Pour exécuter la requête sur un projet autre que celui par défaut, ajoutez l'ID du projet à l'ensemble de données, en respectant le format suivant : `project_id`.dataset.INFORMATION_SCHEMA.view. Par exemple : `myproject`.mydataset.INFORMATION_SCHEMA.TABLES.

SELECT
  table_catalog, table_schema, table_name, table_type,
  is_insertable_into, creation_time, ddl
FROM
  mydataset.INFORMATION_SCHEMA.TABLES;

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

+----------------+---------------+----------------+------------+--------------------+---------------------+---------------------------------------------+
| table_catalog  | table_schema  |   table_name   | table_type | is_insertable_into |    creation_time    |                     ddl                     |
+----------------+---------------+----------------+------------+--------------------+---------------------+---------------------------------------------+
| myproject      | mydataset     | mytable1       | BASE TABLE | YES                | 2018-10-29 20:34:44 | CREATE TABLE `myproject.mydataset.mytable1` |
|                |               |                |            |                    |                     | (                                           |
|                |               |                |            |                    |                     |   id INT64                                  |
|                |               |                |            |                    |                     | );                                          |
| myproject      | mydataset     | myview1        | VIEW       | NO                 | 2018-12-29 00:19:20 | CREATE VIEW `myproject.mydataset.myview1`   |
|                |               |                |            |                    |                     | AS SELECT 100 as id;                        |
+----------------+---------------+----------------+------------+--------------------+---------------------+---------------------------------------------+
Exemple 2 :

L'exemple suivant récupère les métadonnées de toutes les tables de type CLONE ou SNAPSHOT à partir de la vue INFORMATION_SCHEMA.TABLES. Les métadonnées renvoyées concernent les tables dans mydataset, dans votre projet par défaut.

Pour exécuter la requête sur un projet autre que celui par défaut, ajoutez l'ID du projet à l'ensemble de données, en respectant le format suivant : `project_id`.dataset.INFORMATION_SCHEMA.view. Par exemple : `myproject`.mydataset.INFORMATION_SCHEMA.TABLES.

  SELECT
    table_name, table_type, base_table_catalog,
    base_table_schema, base_table_name, snapshot_time_ms
  FROM
    mydataset.INFORMATION_SCHEMA.TABLES
  WHERE
    table_type = 'CLONE'
  OR
    table_type = 'SNAPSHOT';

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

  +--------------+------------+--------------------+-------------------+-----------------+---------------------+
  | table_name   | table_type | base_table_catalog | base_table_schema | base_table_name | snapshot_time_ms    |
  +--------------+------------+--------------------+-------------------+-----------------+---------------------+
  | items_clone  | CLONE      | myproject          | mydataset         | items           | 2018-10-31 22:40:05 |
  | orders_bk    | SNAPSHOT   | myproject          | mydataset         | orders          | 2018-11-01 08:22:39 |
  +--------------+------------+--------------------+-------------------+-----------------+---------------------+

Exemple 3 :

L'exemple suivant récupère les colonnes table_name et ddl de la vue INFORMATION_SCHEMA.TABLES 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, ajoutez l'ID du projet à l'ensemble de données en utilisant le format suivant : `project_id`.dataset.INFORMATION_SCHEMA.view. Dans cet exemple, la valeur est `bigquery-public-data`.census_bureau_usa.INFORMATION_SCHEMA.TABLES.

SELECT
  table_name, ddl
FROM
  `bigquery-public-data`.census_bureau_usa.INFORMATION_SCHEMA.TABLES
WHERE
  table_name = 'population_by_zip_2010';

Le résultat ressemble à ce qui suit :

+------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|       table_name       |                                                                                                            ddl                                                                                                             |
+------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| population_by_zip_2010 | CREATE TABLE `bigquery-public-data.census_bureau_usa.population_by_zip_2010`                                                                                                                                               |
|                        | (                                                                                                                                                                                                                          |
|                        |   geo_id STRING OPTIONS(description="Geo code"),                                                                                                                                                                           |
|                        |   zipcode STRING NOT NULL OPTIONS(description="Five digit ZIP Code Tabulation Area Census Code"),                                                                                                                          |
|                        |   population INT64 OPTIONS(description="The total count of the population for this segment."),                                                                                                                             |
|                        |   minimum_age INT64 OPTIONS(description="The minimum age in the age range. If null, this indicates the row as a total for male, female, or overall population."),                                                          |
|                        |   maximum_age INT64 OPTIONS(description="The maximum age in the age range. If null, this indicates the row as having no maximum (such as 85 and over) or the row is a total of the male, female, or overall population."), |
|                        |   gender STRING OPTIONS(description="male or female. If empty, the row is a total population summary.")                                                                                                                    |
|                        | )                                                                                                                                                                                                                          |
|                        | OPTIONS(                                                                                                                                                                                                                   |
|                        |   labels=[("freebqcovid", "")]                                                                                                                                                                                             |
|                        | );                                                                                                                                                                                                                         |
+------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+