Vista de COLUMNS

La vista INFORMATION_SCHEMA.COLUMNS contiene una fila para cada columna (campo) en una tabla.

Permisos necesarios

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

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

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

  • roles/bigquery.admin
  • roles/bigquery.dataViewer
  • roles/bigquery.dataEditor
  • 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.COLUMNS, los resultados 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 el datasetId).
table_name STRING El nombre de la tabla o la vista (también denominado tableId).
column_name STRING Es el nombre de la columna
ordinal_position INT64 El desplazamiento (con indexación de base 1) de la columna dentro de la tabla; si es una seudocolumna, como _PARTITIONTIME o _PARTITIONDATE, el valor es NULL.
is_nullable STRING YES o NO, lo cual depende 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 incorporación 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 la columna es una columna de incorporación generada automáticamente generada; de lo contrario, el valor es NULL.
is_stored STRING El valor es YES si la columna es una columna de incorporación generada automáticamente; de lo contrario, el valor es NULL.
async_generation_status STRUCT Contiene errores de bloqueo para trabajos de generación de incorporación en segundo plano si la columna es una columna de incorporación generada automáticamente; de lo contrario, el valor es NULL. Para obtener información sobre los errores de bloqueo, consulta el campo async_generation_status.blocking_error.message. Los errores de bloqueo pueden incluir lo siguiente:
  • Errores de permiso denegado
  • Errores no encontrados
  • Errores de extremos de modelos de incorporación no compatibles
  • Errores de la API de Vertex AI no habilitada
Una vez que el próximo trabajo de generación de incorporación se realice correctamente, se borrará la columna async_generation_status.
is_hidden STRING YES o NO, lo cual depende de si se trata de una seudocolumna, como _PARTITIONTIME o _PARTITIONDATE
is_updatable STRING El valor es siempre NULL.
is_system_defined STRING YES o NO, lo cual depende de si se trata de una seudocolumna, como _PARTITIONTIME o _PARTITIONDATE
is_partitioning_column STRING YES o NO, lo cual depende de si la columna es una columna de partición.
clustering_ordinal_position INT64 El desplazamiento 1 indexado de la columna dentro de las columnas de agrupamiento en clústeres de la tabla; el valor es NULL si la tabla no está agrupada
collation_name STRING El nombre de la especificación de la intercalación si existe; de lo contrario, NULL.

Si se pasa STRING o ARRAY<STRING>, la especificación de la intercalación se muestra si existe; de lo contrario, se muestra 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 un NUMERIC o BIGNUMERIC con parámetros; de lo contrario, el valor es NULL.
data_policies.name STRING Es la lista de políticas de datos que se adjuntan a la columna para controlar el acceso y el enmascaramiento. Este campo está en (vista previa).
policy_tags ARRAY<STRING> Es la lista de etiquetas de política que se adjuntan a la columna.
is_identity STRING YES o NO, lo cual depende de si la columna es una columna de identidad
identity_generation STRING Uno de ALWAYS o BY DEFAULT, lo cual depende del modo de generación de la columna de identidad. Si la columna no es una columna de identidad el valor es NULL.
identity_start INT64 Es el primer valor que genera la columna de identidad o NULL si la columna no es una columna de identidad.
identity_increment INT64 Es la diferencia mínima entre los IDs generados sucesivamente para la columna de identidad o NULL si la columna no es una columna de identidad.
identity_maximum INT64 Es el valor máximo que se puede generar para la columna de identidad o NULL si la columna no es una columna de identidad.
identity_minimum INT64 Es el valor mínimo que se puede generar para la columna de identidad o NULL si la columna no es una columna de identidad.
identity_cycle STRING Si la columna es una columna de identidad, este valor es NEVER; de lo contrario, el valor es NULL.

Para lograr estabilidad, te recomendamos que enumeres de forma explícita las columnas en tus consultas de esquema de información en lugar de usar un comodín (SELECT *). La enumeración explícita de columnas evita que las consultas se interrumpan si cambia el esquema subyacente.

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.COLUMNS Nivel de proyecto REGION
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.COLUMNS Nivel de conjunto de datos Ubicación del conjunto de datos
Reemplaza lo siguiente:
  • Opcional: PROJECT_ID es el ID de tu Google Cloud proyecto. 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

En el siguiente ejemplo, se recuperan los metadatos desde la vista INFORMATION_SCHEMA.COLUMNS 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, el bigquery-public-data proyecto, debes agregar el ID del proyecto al conjunto de datos en 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 facilitar la lectura, algunas columnas se excluyen 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      |
+------------------------+-------------+------------------+-------------+-----------+-----------+-------------------+------------------------+-----------------------------+-------------+