Vista de TABLES

La vista INFORMATION_SCHEMA.TABLES contiene una fila para cada tabla o vista en un conjunto de datos. Las vistas TABLES y TABLE_OPTIONS también contienen información de alto nivel sobre las vistas. Para obtener información detallada, consulta la vista INFORMATION_SCHEMA.VIEWS.

Permisos necesarios

Para consultar la vista INFORMATION_SCHEMA.TABLES, necesitas los siguientes permisos de Identity and Access Management (IAM):

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

Cada uno de los siguientes roles predefinidos de IAM incluye los permisos anteriores:

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

Para obtener más información sobre IAM de BigQuery, consulta Control de acceso con IAM.

Esquema

Cuando consultas la vista INFORMATION_SCHEMA.TABLES, los resultados contienen una fila por cada tabla o vista de un conjunto de datos. Para obtener información detallada sobre las vistas, consulta la vista INFORMATION_SCHEMA.VIEWS en su lugar.

La vista INFORMATION_SCHEMA.TABLES tiene el siguiente esquema:

Nombre de la columna Tipo de datos Valor
table_catalog STRING El ID del proyecto que contiene el conjunto de datos.
table_schema STRING El nombre del conjunto de datos que contiene la tabla o la vista, también denominado datasetId.
table_name STRING El nombre de la tabla o la vista, también denominado tableId.
table_type STRING El tipo de tabla, que es una de las siguientes opciones:
is_insertable_into STRING YES o NO, lo que depende de si la tabla admite declaraciones DML INSERT
is_typed STRING El valor es siempre NO
creation_time TIMESTAMP La fecha y hora de creación de la tabla
base_table_catalog STRING Para las clonaciones de tabla y las instantáneas de tabla, es el proyecto de la tabla base. Solo se aplica a las tablas que tienen table_type configurado como CLONE o SNAPSHOT.
base_table_schema STRING Para las clonaciones de tabla y las instantáneas de tabla, es el conjunto de datos de la tabla base. Solo se aplica a las tablas que tienen table_type configurado como CLONE o SNAPSHOT.
base_table_name STRING Para las clonaciones de tabla y las instantáneas de tabla, es el nombre de la tabla base. Solo se aplica a las tablas que tienen table_type configurado como CLONE o SNAPSHOT.
snapshot_time_ms TIMESTAMP Para las clonaciones de tabla y las instantáneas de tabla, la hora en que se clonó o la instantánea se ejecutó en la tabla base para crear esta tabla. Si se usó el viaje en el tiempo, este campo contiene la marca de tiempo del viaje en el tiempo. De lo contrario, el campo snapshot_time_ms es igual al campo creation_time. Solo se aplica a las tablas que tienen table_type configurado como CLONE o SNAPSHOT.
replica_source_catalog STRING Para las réplicas de vista materializada, es el proyecto de la vista materializada base.
replica_source_schema STRING Para las réplicas de vista materializada, es el conjunto de datos de la vista materializada base.
replica_source_name STRING Para las réplicas de vista materializada, es el nombre de la vista materializada base.
replication_status STRING Para las réplicas de vista materializada, el estado de la replicación de la vista materializada base a la réplica de vista materializada; uno de los siguientes:
  • REPLICATION_STATUS_UNSPECIFIED
  • ACTIVE: La replicación está activa sin errores
  • SOURCE_DELETED: La vista materializada de origen se borró
  • PERMISSION_DENIED: La vista materializada de origen no se ha autorizado en el conjunto de datos que contiene las tablas de BigLake de Amazon S3 de origen que se usan en la consulta que creó la vista materializada.
  • UNSUPPORTED_CONFIGURATION: Hay un problema con los requisitos previos de la réplica que no sean la autorización de vista materializada de origen.
replication_error STRING Si replication_status indica un problema de replicación para una réplica de vista materializada, replication_error proporciona más detalles sobre el problema.
ddl STRING La declaración DDL que se puede usar para volver a crear la tabla, como CREATE TABLE o CREATE VIEW.
default_collation_name STRING El nombre de la especificación de la intercalación predeterminada, si existe; en caso contrario, NULL.
upsert_stream_apply_watermark TIMESTAMP En el caso de las tablas que usan la captura de datos modificados (CDC), la hora en que se aplicaron las modificaciones de fila por última vez. Para obtener más información, consulta Supervisa el progreso de la operación de inserción y actualización de tablas.

Permiso y sintaxis

Las consultas realizadas a esta vista deben incluir un conjunto de datos o un calificador de región. Para consultas con un calificador de conjunto de datos, debes tener permisos para el conjunto de datos. Para consultas con un calificador de región, debes tener permisos para el proyecto. Para obtener más información, consulta Sintaxis. En la siguiente tabla, se explican los permisos de la región y los recursos para esta vista:

Nombre de la vista Permiso del recurso Permiso de la región
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.TABLES Nivel de proyecto REGION
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.TABLES Nivel de conjunto de datos Ubicación del conjunto de datos
Reemplaza lo siguiente:

  • Opcional: PROJECT_ID: el ID del proyecto de Google Cloud. Si no se especifica, se usa el proyecto predeterminado.
+ REGION: Cualquier nombre de región del conjunto de datos. Un ejemplo es region-us. DATASET_ID: El ID del conjunto de datos. Para obtener más información, consulta Calificador de conjunto de datos.

Ejemplo

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

Ejemplos

Ejemplo 1:

En el ejemplo siguiente, se recuperan los metadatos de todas las tablas en el conjunto de datos llamado mydataset. Los metadatos que se muestran corresponden a todos los tipos de tablas de mydataset en tu proyecto predeterminado.

mydataset contiene las tablas siguientes:

  • mytable1: Una tabla de BigQuery estándar
  • myview1: una vista de BigQuery

Para ejecutar la consulta en un proyecto que no sea el predeterminado, agrega el ID del proyecto al conjunto de datos en este formato: `project_id`.dataset.INFORMATION_SCHEMA.view (por ejemplo, `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;

El resultado es similar al siguiente. Para facilitar la lectura, algunas columnas se excluyen del resultado.

+----------------+---------------+----------------+------------+--------------------+---------------------+---------------------------------------------+
| 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;                        |
+----------------+---------------+----------------+------------+--------------------+---------------------+---------------------------------------------+
Ejemplo 2:

En el ejemplo siguiente, se recuperan los metadatos de todas las tablas de tipo CLONE o SNAPSHOT de la vista INFORMATION_SCHEMA.TABLES. Los metadatos que se muestran corresponden a las tablas de mydataset en tu proyecto predeterminado.

Para ejecutar la consulta en un proyecto que no sea el predeterminado, agrega el ID del proyecto al conjunto de datos en este formato: `project_id`.dataset.INFORMATION_SCHEMA.view (por ejemplo, `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';

El resultado es similar al siguiente. Para facilitar la lectura, algunas columnas se excluyen del resultado.

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

Ejemplo 3:

En el siguiente ejemplo, se recuperan las columnas table_name y ddl de la vista INFORMATION_SCHEMA.TABLES para la tabla population_by_zip_2010 en el conjunto de datos census_bureau_usa. Este conjunto de datos es parte del programa de conjuntos de datos públicos de BigQuery.

Debido a que la tabla que consultas está en otro proyecto, debes agregar el ID del proyecto al conjunto de datos en el siguiente formato: `project_id`.dataset.INFORMATION_SCHEMA.view. En este ejemplo, el valor es `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';

El resultado es similar al siguiente:

+------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|       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", "")]                                                                                                                                                                                             |
|                        | );                                                                                                                                                                                                                         |
+------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+