Vista SEARCH_INDEX_COLUMNS
La vista INFORMATION_SCHEMA.SEARCH_INDEX_COLUMNS
contiene una fila por cada columna indexada de búsqueda de cada tabla de un conjunto de datos.
Permisos obligatorios
Para ver los metadatos del índice de búsqueda, necesitas el permiso de gestión de identidades y accesos (IAM) bigquery.tables.get
o bigquery.tables.list
en la tabla con el índice. Cada uno de los siguientes roles de gestión de identidades y accesos predefinidos incluye al menos uno de estos permisos:
roles/bigquery.admin
roles/bigquery.dataEditor
roles/bigquery.dataOwner
roles/bigquery.dataViewer
roles/bigquery.metadataViewer
roles/bigquery.user
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 vistaINFORMATION_SCHEMA.SEARCH_INDEX_COLUMNS
, los resultados de la consulta contienen una fila por cada columna indexada de cada tabla de un conjunto de datos.
La vista INFORMATION_SCHEMA.SEARCH_INDEX_COLUMNS
tiene el siguiente esquema:
Nombre de la columna | Tipo de datos | Valor | |
---|---|---|---|
index_catalog |
STRING |
Nombre del proyecto que contiene el conjunto de datos. | |
index_schema |
STRING |
Nombre del conjunto de datos que contiene el índice. | |
table_name |
STRING |
Nombre de la tabla base en la que se crea el índice. | |
index_name |
STRING |
Nombre del índice. | |
index_column_name |
STRING |
Nombre de la columna indexada de nivel superior. | |
index_field_path |
STRING |
Ruta completa del campo indexado ampliado, que empieza por el nombre de la columna. Los campos están separados por un punto. |
Ámbito y sintaxis
Las consultas de esta vista deben tener un calificador de conjunto de datos. En la siguiente tabla se explica el ámbito de la región de esta vista:
Nombre de la vista | Ámbito de los recursos | Ámbito de la región |
---|---|---|
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.SEARCH_INDEX_COLUMNS |
Nivel del conjunto de datos | Ubicación del conjunto de datos |
-
Opcional:
PROJECT_ID
: el ID de tu Google Cloud proyecto. Si no se especifica, se usa el proyecto predeterminado. -
DATASET_ID
: el ID de tu conjunto de datos. Para obtener más información, consulta Calificador de conjunto de datos.
Ejemplo
-- Returns metadata for search indexes in a single dataset.
SELECT * FROM myDataset.INFORMATION_SCHEMA.SEARCH_INDEX_COLUMNS;
Ejemplos
En el siguiente ejemplo se crea un índice de búsqueda en todas las columnas de my_table
.
CREATE TABLE dataset.my_table( a STRING, b INT64, c STRUCT <d INT64, e ARRAY<STRING>, f STRUCT<g STRING, h INT64>>) AS SELECT 'hello' AS a, 10 AS b, (20, ['x', 'y'], ('z', 30)) AS c; CREATE SEARCH INDEX my_index ON dataset.my_table(ALL COLUMNS);
La siguiente consulta extrae información sobre los campos indexados.
El símbolo index_field_path
indica qué campo de una columna está indexado. Se diferencia de index_column_name
solo en el caso de STRUCT
, donde se indica la ruta completa al campo indexado. En este ejemplo, la columna c
contiene un campo ARRAY<STRING>
e
y otro STRUCT
llamado f
, que contiene un campo STRING
g
. Cada uno de estos campos está indexado.
SELECT table_name, index_name, index_column_name, index_field_path
FROM my_project.dataset.INFORMATION_SCHEMA.SEARCH_INDEX_COLUMNS
El resultado es similar al siguiente:
+------------+------------+-------------------+------------------+ | table_name | index_name | index_column_name | index_field_path | +------------+------------+-------------------+------------------+ | my_table | my_index | a | a | | my_table | my_index | c | c.e | | my_table | my_index | c | c.f.g | +------------+------------+-------------------+------------------+
La siguiente consulta une la vista INFORMATION_SCHEMA.SEARCH_INDEX_COUMNS
con las vistas INFORMATION_SCHEMA.SEARCH_INDEXES
y INFORMATION_SCHEMA.COLUMNS
para incluir el estado del índice de búsqueda y el tipo de datos de cada columna:
SELECT index_columns_view.index_catalog AS project_name, index_columns_view.index_SCHEMA AS dataset_name, indexes_view.TABLE_NAME AS table_name, indexes_view.INDEX_NAME AS index_name, indexes_view.INDEX_STATUS AS status, index_columns_view.INDEX_COLUMN_NAME AS column_name, index_columns_view.INDEX_FIELD_PATH AS field_path, columns_view.DATA_TYPE AS data_type FROM mydataset.INFORMATION_SCHEMA.SEARCH_INDEXES indexes_view INNER JOIN mydataset.INFORMATION_SCHEMA.SEARCH_INDEX_COLUMNS index_columns_view ON indexes_view.TABLE_NAME = index_columns_view.TABLE_NAME AND indexes_view.INDEX_NAME = index_columns_view.INDEX_NAME LEFT OUTER JOIN mydataset.INFORMATION_SCHEMA.COLUMNS columns_view ON indexes_view.INDEX_CATALOG = columns_view.TABLE_CATALOG AND indexes_view.INDEX_SCHEMA = columns_view.TABLE_SCHEMA AND index_columns_view.TABLE_NAME = columns_view.TABLE_NAME AND index_columns_view.INDEX_COLUMN_NAME = columns_view.COLUMN_NAME ORDER BY project_name, dataset_name, table_name, column_name;
El resultado es similar al siguiente:
+------------+------------+----------+------------+--------+-------------+------------+---------------------------------------------------------------+ | project | dataset | table | index_name | status | column_name | field_path | data_type | +------------+------------+----------+------------+--------+-------------+------------+---------------------------------------------------------------+ | my_project | my_dataset | my_table | my_index | ACTIVE | a | a | STRING | | my_project | my_dataset | my_table | my_index | ACTIVE | c | c.e | STRUCT<d INT64, e ARRAY<STRING>, f STRUCT<g STRING, h INT64>> | | my_project | my_dataset | my_table | my_index | ACTIVE | c | c.f.g | STRUCT<d INT64, e ARRAY<STRING>, f STRUCT<g STRING, h INT64>> | +------------+------------+----------+------------+--------+-------------+------------+---------------------------------------------------------------+