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 |
is_change_history_enabled |
STRING |
YES o NO , según si el historial de cambios está habilitado |
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_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 |
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. Por ejemplo,`region-us`
.DATASET_ID
: Es 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ándarmyview1
: 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", "")] | | | ); | +------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+