Vista de SEARCH_INDEX_COLUMNS
La vista INFORMATION_SCHEMA.SEARCH_INDEX_COLUMNS
contiene una fila para cada columna indexada de la búsqueda en cada tabla en un conjunto de datos.
Permisos necesarios
Para ver los metadatos del índice de búsqueda, necesitas el permiso bigquery.tables.get
o bigquery.tables.list
de Identity and Access Management (IAM) en la tabla con el índice. Cada una de los siguientes roles predefinidos de IAM 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 IAM de BigQuery, consulta Control de acceso con IAM.
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 |
El nombre del proyecto que contiene el conjunto de datos. | |
index_schema |
STRING |
Es el nombre del conjunto de datos que contiene el índice. | |
table_name |
STRING |
El nombre de la tabla base en la que se crea el índice. | |
index_name |
STRING |
Es el nombre del índice. | |
index_column_name |
STRING |
El nombre de la columna indexada de nivel superior. | |
index_field_path |
STRING |
La ruta completa del campo indexado expandido, que comienza con el nombre de la columna. Los campos están separados por un punto. |
Permiso y sintaxis
Las consultas realizadas a esta vista deben tener un calificador de conjunto de datos. En la siguiente tabla, se explica el permiso de la región para esta vista:
Nombre de la vista | Permiso del recurso | Permiso de la región |
---|---|---|
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.SEARCH_INDEX_COLUMNS |
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.
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 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);
En la siguiente consulta, se extrae información sobre qué campos se indexan.
El index_field_path
indica qué campo de una columna está indexado. Esto difiere de index_column_name
solo en el caso de una STRUCT
, en la que se proporciona 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 los cuales 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>> | +------------+------------+----------+------------+--------+-------------+------------+---------------------------------------------------------------+