Vista COLUMNAS

La vista INFORMATION_SCHEMA.COLUMNS contiene una fila por cada columna (campo) de una tabla.

Permisos obligatorios

Para consultar la vista INFORMATION_SCHEMA.COLUMNS, necesitas los siguientes permisos de gestión de identidades y accesos (IAM):

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

Cada uno de los siguientes roles de gestión de identidades y accesos predefinidos incluye los permisos anteriores:

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

Para obtener más información sobre los permisos de BigQuery, consulta Control de acceso con gestión de identidades y accesos.

Esquema

Cuando consultas la vista INFORMATION_SCHEMA.COLUMNS, los resultados de la consulta contienen una fila por cada columna (campo) de una tabla.

La vista INFORMATION_SCHEMA.COLUMNS 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, también denominado datasetId.
table_name STRING Nombre de la tabla o de la vista, también conocido como tableId.
column_name STRING Nombre de la columna.
ordinal_position INT64 Desplazamiento de la columna en la tabla, indexado a partir de 1. Si se trata de una pseudocolumna, como _PARTITIONTIME o _PARTITIONDATE, el valor es NULL.
is_nullable STRING YES o NO, en función de si el modo de la columna permite valores NULL.
data_type STRING El tipo de datos de GoogleSQL de la columna.
is_generated STRING El valor es ALWAYS si la columna es una columna de inserciones generada automáticamente. De lo contrario, el valor es NEVER.
generation_expression STRING El valor es la expresión de generación que se usa para definir la columna si se trata de una columna de inserción generada automáticamente. De lo contrario, el valor es NULL.
is_stored STRING El valor es YES si la columna es una columna de inserciones generada automáticamente. De lo contrario, el valor es NULL.
is_hidden STRING YES o NO en función de si la columna es una pseudocolumna, como _PARTITIONTIME o _PARTITIONDATE.
is_updatable STRING El valor es siempre NULL.
is_system_defined STRING YES o NO en función de si la columna es una pseudocolumna, como _PARTITIONTIME o _PARTITIONDATE.
is_partitioning_column STRING YES o NO en función de si la columna es una columna de partición.
clustering_ordinal_position INT64 Desplazamiento de la columna indexado en 1 dentro de las columnas de agrupación de la tabla. El valor es NULL si la tabla no es una tabla agrupada.
collation_name STRING El nombre de la especificación de ordenación, si existe. De lo contrario, NULL.

Si se incluye un STRING o un ARRAY<STRING>, se devuelve la especificación de la ordenación si existe. De lo contrario, se devuelve NULL.
column_default STRING El valor predeterminado de la columna si existe. De lo contrario, el valor es NULL.
rounding_mode STRING El modo de redondeo que se usa para los valores escritos en el campo si su tipo es NUMERIC o BIGNUMERIC parametrizado. De lo contrario, el valor es NULL.
data_policies.name STRING Lista de políticas de datos asociadas a la columna para controlar el acceso y el enmascaramiento. Este campo está en versión preliminar.
policy_tags ARRAY<STRING> Lista de etiquetas de política adjuntas a la columna.

Por motivos de estabilidad, te recomendamos que incluyas explícitamente las columnas en tus consultas de esquema de información en lugar de usar un comodín (SELECT *). Si incluyes las columnas explícitamente, evitarás que las consultas fallen si cambia el esquema subyacente.

Ámbito y sintaxis

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

Nombre de la vista Ámbito de los recursos Ámbito de la región
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.COLUMNS Nivel de proyecto REGION
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.COLUMNS Nivel del conjunto de datos Ubicación del conjunto de datos
Sustituye lo siguiente:
  • Opcional: PROJECT_ID: el ID de tu proyecto. 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: el ID de tu conjunto de datos. Para obtener más información, consulta Calificador de conjunto de datos.

Ejemplo

En el siguiente ejemplo se recuperan los metadatos de la vista INFORMATION_SCHEMA.COLUMNS de la tabla population_by_zip_2010 del conjunto de datos census_bureau_usa. Este conjunto de datos forma parte del programa de conjuntos de datos públicos de BigQuery.

Como la tabla que estás consultando está en otro proyecto (bigquery-public-data), debes añadir el ID del proyecto al conjunto de datos con el siguiente formato: `project_id`.dataset.INFORMATION_SCHEMA.view; por ejemplo, `bigquery-public-data`.census_bureau_usa.INFORMATION_SCHEMA.TABLES.

La siguiente columna se excluye de los resultados de la consulta:

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

El resultado es similar al siguiente. Para mejorar la legibilidad, algunas columnas se han excluido del resultado.

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