Vista de SEARCH_INDEXES

La vista INFORMATION_SCHEMA.SEARCH_INDEXES contiene una fila para cada Índice de la Búsqueda 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 vista INFORMATION_SCHEMA.SEARCH_INDEXES, los resultados de la consulta contienen una fila por cada Índice de la Búsqueda de un conjunto de datos.

La vista INFORMATION_SCHEMA.SEARCH_INDEXES 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_status STRING El estado del índice: ACTIVE, PENDING DISABLEMENT, TEMPORARILY DISABLED, o PERMANENTLY DISABLED.
  • ACTIVE significa que el índice se puede usar o crear. Consulta coverage_percentage para ver el progreso de la creación del índice.
  • PENDING DISABLEMENT significa que el tamaño total de las tablas basa indexadas supera el límite de tu organización. El índice se pone en cola para su eliminación. En este estado, el índice se puede usar en las búsquedas y se te cobra por el almacenamiento del índice de búsqueda.
  • TEMPORARILY DISABLED significa que el tamaño total de las tablas base indexadas supera el límite de tu organización, o la tabla indexada base es inferior a 10 GB. En este estado, el índice no se usa en las búsquedas y no se te cobra por el almacenamiento del índice de búsqueda.
  • PERMANENTLY DISABLED significa que hay un cambio de esquema incompatible en la tabla base, como cambiar el tipo de una columna indexada de STRING a INT64.
creation_time TIMESTAMP La hora en la que se creó el índice.
last_modification_time TIMESTAMP La última vez que se modificó la configuración del índice. Por ejemplo, borrar una columna indexada.
last_refresh_time TIMESTAMP La última vez que se indexaron los datos de la tabla. Un valor NULL significa que el índice aún no está disponible.
disable_time TIMESTAMP La hora en la que el estado del índice se estableció en DISABLED. El valor es NULL si el estado del índice no es DISABLED.
disable_reason STRING El motivo por el que se inhabilitó el índice. NULL si el estado del índice no es DISABLED.
DDL STRING La declaración DDL que se usa para crear el índice.
coverage_percentage INTEGER El porcentaje aproximado de datos de tabla que se indexaron. 0% significa que el índice no se puede usar en una consulta SEARCH, incluso si ya se indexaron algunos datos.
unindexed_row_count INTEGER La cantidad de filas en la tabla base que no se indexaron.
total_logical_bytes INTEGER La cantidad de bytes lógicos facturables para el índice.
total_storage_bytes INTEGER La cantidad de bytes de almacenamiento facturables para el índice.
analyzer STRING El analizador de texto que se usará para generar tokens para el índice de búsqueda.

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_INDEXES Nivel de conjunto de datos Ubicación del conjunto de datos
Reemplaza lo siguiente:

  • Opcional: PROJECT_ID: el ID del proyecto de Google Cloud. Si no se especifica, se usa el proyecto predeterminado.

Ejemplo

-- Returns metadata for search indexes in a single dataset.
SELECT * FROM myDataset.INFORMATION_SCHEMA.SEARCH_INDEXES;

Ejemplo

En el siguiente ejemplo, se muestran todos los índices de búsqueda activos en las tablas del conjunto de datos my_dataset, ubicado en el proyecto my_project. Incluye los nombres, las declaraciones DDL que se usan para crearlos, el porcentaje de cobertura y el analizador de texto. Si una tabla base indexada tiene menos de 10 GB, su índice no se propaga. En ese caso, coverage_percentage será 0.

SELECT table_name, index_name, ddl, coverage_percentage, analyzer
FROM my_project.my_dataset.INFORMATION_SCHEMA.SEARCH_INDEXES
WHERE index_status = 'ACTIVE';

Los resultados deberían verse así:

+-------------+-------------+--------------------------------------------------------------------------------------+---------------------+----------------+
| table_name  | index_name  | ddl                                                                                  | coverage_percentage | analyzer       |
+-------------+-------------+--------------------------------------------------------------------------------------+---------------------+----------------+
| small_table | names_index | CREATE SEARCH INDEX `names_index` ON `my_project.my_dataset.small_table`(names)      | 0                   | NO_OP_ANALYZER |
| large_table | logs_index  | CREATE SEARCH INDEX `logs_index` ON `my_project.my_dataset.large_table`(ALL COLUMNS) | 100                 | LOG_ANALYZER   |
+-------------+-------------+--------------------------------------------------------------------------------------+---------------------+----------------+