Introducción a la búsqueda en BigQuery
.Los índices de búsqueda de BigQuery te permiten usar GoogleSQL para encontrar de forma eficiente elementos de datos únicos que estén enterrados en texto sin estructurar o datos JSON semiestructurados, sin tener que conocer los esquemas de las tablas de antemano.
Con los índices de búsqueda, BigQuery proporciona un potente almacenamiento en columnas y una búsqueda de texto en una sola plataforma, lo que permite realizar búsquedas de filas eficientes cuando necesitas encontrar filas de datos concretas. Un caso de uso habitual son las analíticas de registros. Por ejemplo, puede que quieras identificar las filas de datos asociadas a un usuario para generar informes del Reglamento General de Protección de Datos (RGPD) o buscar códigos de error específicos en una carga útil de texto.
BigQuery almacena y gestiona tus índices, de modo que, cuando los datos estén disponibles en BigQuery, puedas recuperarlos inmediatamente con la función SEARCH
u otros operadores y funciones, como los operadores igual (=
), IN
o LIKE
, y determinadas funciones de cadena y JSON. Para optimizar tus búsquedas, consulta las prácticas recomendadas.
Casos prácticos
Los índices de búsqueda de BigQuery te ayudan a hacer lo siguiente:
- Busca registros del sistema, de la red o de aplicaciones almacenados en tablas de BigQuery.
- Identificar los elementos de datos que se deben eliminar para cumplir los procesos normativos.
- Ayudar a los desarrolladores a solucionar problemas.
- Realizar auditorías de seguridad.
- Crea un panel de control que requiera filtros de búsqueda muy selectivos.
- Busca coincidencias exactas en los datos preprocesados.
Para obtener más información, consulta los artículos Crear un índice de búsqueda y Buscar con un índice.
Precios
No se aplican cargos por el procesamiento necesario para crear y actualizar los índices de búsqueda cuando el tamaño total de las tablas indexadas de tu organización es inferior al límite de tu región. Para admitir la indexación más allá de este límite, debes proporcionar tu propia reserva para gestionar los trabajos de gestión de índices.
Los índices de búsqueda generan costes de almacenamiento cuando están activos.
Puede consultar el tamaño de almacenamiento del índice en la vista INFORMATION_SCHEMA.SEARCH_INDEXES
.
Roles y permisos
Para crear un índice de búsqueda, necesitas el bigquery.tables.createIndex
permiso de gestión de identidades y accesos
en la tabla en la que vas a crear el índice. Para eliminar un índice de búsqueda, necesitas el permiso bigquery.tables.deleteIndex
. Cada uno de los siguientes roles de gestión de identidades y accesos predefinidos incluye los permisos que necesitas para trabajar con índices de búsqueda:
- Propietario de datos de BigQuery (
roles/bigquery.dataOwner
) - Editor de datos de BigQuery (
roles/bigquery.dataEditor
) - Administrador de BigQuery (
roles/bigquery.admin
)
Limitaciones
- No puedes crear un índice de búsqueda directamente en una vista o una vista materializada, pero si llamas a la función
SEARCH
en una vista de una tabla indexada, se usará el índice de búsqueda subyacente. - No puedes crear un índice de búsqueda en una tabla externa.
- Si cambias el nombre de una tabla después de crear un índice de búsqueda en ella, el índice dejará de ser válido.
- La función
SEARCH
se ha diseñado para búsquedas puntuales. No se pueden realizar búsquedas aproximadas, corregir errores tipográficos, usar comodines ni otros tipos de búsquedas de documentos. - Si el índice de búsqueda aún no tiene una cobertura del 100 %, se te seguirá cobrando por todo el almacenamiento del índice que se indique en la vista
INFORMATION_SCHEMA.SEARCH_INDEXES
. - Las consultas que usan la función
SEARCH
o que están optimizadas por índices de búsqueda no se aceleran con BigQuery BI Engine. Los índices de búsqueda no se utilizan cuando una instrucción DML modifica la tabla indexada, pero se pueden usar cuando el predicado que se puede optimizar mediante índices de búsqueda forma parte de una subconsulta en una instrucción DML.
- No se usa ningún índice de búsqueda en la siguiente consulta:
DELETE FROM my_dataset.indexed_table WHERE SEARCH(user_id, '123');
- Un índice de búsqueda se puede usar en la siguiente consulta:
DELETE FROM my_dataset.other_table WHERE user_id IN ( SELECT user_id FROM my_dataset.indexed_table WHERE SEARCH(user_id, '123') );
Los índices de búsqueda no se usan cuando la consulta hace referencia a vistas materializadas.
Los índices de búsqueda no se usan en una consulta de transacción de varias instrucciones.
Los índices de búsqueda no se utilizan en una consulta de viaje en el tiempo.
Siguientes pasos
- Más información sobre cómo crear un índice de búsqueda
- Más información sobre cómo buscar en una tabla con un índice de búsqueda