Introducción a BI Engine
BigQuery BI Engine es un servicio de análisis rápido en la memoria que acelera muchas consultas de SQL en BigQuery mediante el almacenamiento en caché inteligente de los datos que usas con más frecuencia. BI Engine puede acelerar las consultas de SQL desde cualquier fuente, incluidas las que están escritas por herramientas de visualización de datos, y puede administrar tablas en caché para una optimización continua. Esto te permite mejorar el rendimiento de las consultas sin ajustes manuales ni niveles de datos. Puedes agrupar en clústeres y particionar tablas para optimizar aún más el rendimiento de BI Engine para tablas grandes.
Por ejemplo, si en tu panel solo se muestran los datos del último trimestre, puedes particionar tus tablas por tiempo para que solo las particiones más recientes se carguen en la memoria. También puedes combinar los beneficios de las vistas materializadas y BI Engine. Esto funciona muy bien cuando las vistas materializadas se usan a fin de unir y compactar datos a fin de optimizar su estructura para BI Engine.
BI Engine ofrece las siguientes ventajas:
- Compatibilidad con la API de BigQuery: BI Engine se integra directamente a la API de BigQuery. Cualquier solución BI o aplicación personalizada que funcione con la API de BigQuery a través de mecanismos estándar como los controladores REST o JDBC y ODBC puede usar BI Engine sin cambios.
- Tiempo de ejecución vectorizado: Usar el procesamiento vectorizado en un motor de ejecución hace un uso más eficiente de la arquitectura de CPU moderna mediante la operación en lotes de datos a la vez. BI Engine también usa codificaciones de datos avanzadas, en especial la codificación de longitud de ejecución del diccionario, para comprimir aún más los datos que se almacenan en la capa en la memoria.
- Integración continua: BI Engine funciona con las características y los metadatos de BigQuery, incluidas las vistas autorizadas, la seguridad a nivel de columna y el enmascaramiento de datos.
- Asignaciones de reservas: Las reservas de BI Engine administran por separado la asignación de memoria para cada proyecto y región. BI Engine solo almacena en caché las partes requeridas de las columnas y particiones que se consultaron. Puedes especificar qué tablas usan la aceleración de BI Engine con las tablas preferidas.
En la mayoría de las organizaciones, un administrador de facturación habilita BI Engine, quien debe reservar capacidad para la aceleración de BI Engine. Para obtener más información, consulta Reserva capacidad de BI Engine.
Casos de uso de BI Engine
BI Engine puede acelerar de manera significativa muchas consultas de SQL, incluidas las que se usan para los paneles de IE. La aceleración es más efectiva si identificas las tablas que son esenciales para tus consultas y, luego, las marcas como tablas preferidas. Para usar BI Engine, crea una reserva en una región y especifica su tamaño. Puedes permitir que BigQuery determine qué tablas almacenar en caché según los patrones de uso del proyecto o puedes especificar tablas para evitar que otro tráfico interfiera con su aceleración.
BI Engine es útil en los siguientes casos prácticos:
- Usas herramientas de IE para analizar tus datos: BI Engine acelera las consultas de BigQuery, ya sea que se ejecuten en la consola de BigQuery, una herramienta de IE como Looker Studio o Tableau, o una biblioteca cliente, una API, o un conector ODBC o JDBC. Esto puede mejorar de forma significativa el rendimiento de los paneles conectados a BigQuery a través de una conexión integrada (API) o conectores.
- Consultaste tablas con frecuencia: BI Engine te permite designar tablas preferidas que acelerar. Esto es útil si tienes un subconjunto de tablas que se consultan con más frecuencia o que se usan para paneles de alta visibilidad.
Es posible que BI Engine no se adapte a tus necesidades en los siguientes casos:
- Usas comodines en tus consultas: BI Engine no admite las consultas que hacen referencia a tablas comodín y no se benefician de la aceleración.
- Necesitas funciones de BigQuery que no son compatibles con BI Engine: Si bien BI Engine es compatible con la mayoría de los operadores y funciones de SQL, las funciones no compatibles con BI Engine incluyen tablas externas, seguridad a nivel de las filas y funciones definidas por el usuario que no son de SQL.
Consideraciones para BI Engine
Ten en cuenta lo siguiente cuando decidas cómo configurar BI Engine:
Garantiza la aceleración para consultas específicas
Para garantizar que se acelere un conjunto de consultas, crea un proyecto separado con una reserva de BI Engine dedicada. Primero, estima la capacidad de procesamiento necesaria para tus consultas y, luego, designa esas tablas como tablas preferidas para BI Engine.
Minimiza tus uniones
BI Engine funciona mejor con datos unidos o agregados previamente, y para consultas con una pequeña cantidad de uniones. Esto sucede en particular cuando un lado de la unión es grande y los otros son mucho más pequeños, como cuando consultas una tabla de hechos grande unida a tablas de dimensiones más pequeñas. Puedes combinar BI Engine con vistas materializadas que realizan uniones para producir una sola tabla grande y compacta. De esta manera, no se realizan las mismas uniones para cada consulta. Se recomiendan las vistas materializadas inactivas para obtener un rendimiento óptimo de las consultas.
Comprende el impacto de BI Engine
Para comprender tu uso de BI Engine, consulta Supervisa BI Engine con Cloud Monitoring o consulta las vistas INFORMATION_SCHEMA.BI_CAPACITIES
y INFORMATION_SCHEMA.BI_CAPACITY_CHANGES
. Asegúrate de inhabilitar la opción Usar resultados almacenados en caché en BigQuery para obtener la comparación más precisa. Para obtener más información, consulta Usa los resultados de consultas almacenados en caché.
Tablas preferidas
Las tablas preferidas de BI Engine te permiten limitar la aceleración de BI Engine a un conjunto específico de tablas. Las consultas de todas las demás tablas usan ranuras normales de BigQuery. Por ejemplo, con las tablas preferidas, puedes acelerar solo las tablas y los paneles que identificas como importantes para tu negocio.
Si no hay suficiente memoria RAM en el proyecto para contener todas las tablas preferidas, BI Engine descarga particiones y columnas a las que no se accedió recientemente. Este proceso libera la memoria para consultas nuevas que necesitan aceleración.
Limitaciones de las tablas preferidas
Las tablas preferidas de BI Engine tienen las siguientes limitaciones:
- No puedes agregar vistas a la lista de reservas de tablas preferidas. Las tablas preferidas de BI Engine solo son compatibles con tablas.
- Las consultas a vistas materializadas solo se aceleran si las vistas materializadas y sus tablas base están en la lista de tablas preferidas.
- No se admite la especificación de particiones o columnas para la aceleración.
- Las columnas de tipo
JSON
no son compatibles y no están aceleradas por BI Engine. - Las consultas que acceden a varias tablas solo se aceleran si todas las tablas son
tablas preferidas. Por ejemplo, todas las tablas de una consulta con un
JOIN
deben estar en la lista de tablas preferidas para acelerarse. Si incluso una tabla no está en la lista preferida, la consulta no puede usar BI Engine. - Los conjuntos de datos públicos no son compatibles con la consola de Google Cloud. Para agregar una tabla pública como tabla preferida, usa la API o el DDL.
Limitaciones
BigQuery BI Engine tiene las siguientes limitaciones.
Uniones
BI Engine acelera ciertos tipos de consultas de unión. La aceleración se produce en subconsultas a nivel de hoja con INNER
y LEFT OUTER JOINS
, en las que una tabla de hechos grande se une con hasta cuatro tablas de "dimensión" más pequeñas.
Las tablas de dimensiones pequeñas tienen las siguientes restricciones:
- Menos de 5 millones de filas
- Límite de tamaño:
- Tablas no particionadas: 5 GiB o menos
- Tablas particionadas: Particiones a las que se hace referencia de 1 GB o menos
Funciones analíticas
Las funciones analíticas, también conocidas como funciones analíticas, tienen las siguientes limitaciones cuando se aceleran mediante BigQuery BI Engine:
- BigQuery BI Engine acelera las etapas de entrada si no tienen funciones analíticas. En este caso,
INFORMATION_SCHEMA.JOBS
ve los informesbi_engine_statistics
.acceleration_mode
comoFULL_INPUT
. - BI Engine acelera las etapas de entrada de las consultas con funciones analíticas en sus etapas de entrada, pero no tienen las limitaciones descritas en Limitaciones de las funciones analíticas de BI Engine.
En ese caso, las etapas de entrada o la consulta completa se ejecutan en BI Engine. En este caso,
INFORMATION_SCHEMA.JOBS
ve los informesbi_engine_statistics
.acceleration_mode
comoFULL_INPUT
oFULL_QUERY
Para obtener más información sobre el campo BiEngineStatistics
, consulta la referencia de trabajos.
Limitaciones de las funciones analíticas de BI Engine
Las consultas con funciones analíticas solo se ejecutan en BI Engine si se cumplen todas las siguientes condiciones:
- La consulta analiza exactamente una tabla.
- La tabla no está particionada.
- La tabla tiene menos de 5 millones de filas.
- La consulta no tiene operadores
JOIN
. - El tamaño de la tabla analizada multiplicado por la cantidad de operadores de función analítica no supera los 300 MiB.
Dos funciones analíticas con cláusulas OVER
idénticas y las mismas entradas directas pueden compartir el mismo operador de función analítica. Por ejemplo:
SELECT ROW_NUMBER() OVER (ORDER BY x), SUM(x) OVER (ORDER BY x) FROM my_table
solo tiene un operador de función analítica.SELECT ROW_NUMBER() OVER (ORDER BY x), SUM(x) OVER (PARTITION BY y ORDER BY x) FROM my_table
tiene dos operadores de función analítica porque ambas funciones tienen cláusulasOVER
diferentes.SELECT ROW_NUMBER() OVER (ORDER BY x) FROM (SELECT SUM(x) OVER (ORDER BY x) AS x FROM my_table)
tiene dos operadores de función analítica porque ambas tienen entradas directas diferentes, aunque sus cláusulasOVER
parezcan iguales.
Funciones analíticas compatibles
Se admiten las siguientes funciones analíticas a las que se hace referencia:
ANY_VALUE
AVG
BIT_AND
BIT_OR
BIT_XOR
CORR
COUNT
COUNTIF
COVAR_POP
COVAR_SAMP
CUME_DIST
DENSE_RANK
FIRST_VALUE
LAG
LAST_VALUE
LEAD
LOGICAL_AND
LOGICAL_OR
MAX
MIN
NTH_VALUE
NTILE
PERCENT_RANK
PERCENTILE_CONT
PERCENTILE_DISC
RANK
ROW_NUMBER
ST_CLUSTERDBSCAN
STDDEV_POP
STDDEV_SAMP
STDDEV
STRING_AGG
SUM
VAR_POP
VAR_SAMP
VARIANCE
Si las funciones analíticas no son compatibles, es posible que veas el siguiente error:
La función analítica no es compatible con otros operadores o sus entradas son demasiado grandes
Otras limitaciones de BI Engine
La aceleración de BI Engine no está disponible para las siguientes funciones:
- UDF de JavaScript
- Tablas externas
- Consulta de datos JSON: Mensaje de error: No se admite el tipo nativo JSON
- Escritura de resultados en una tabla de BigQuery permanente
- Tablas que contienen operaciones upsert que usan la captura de datos modificados de BigQuery
- Transacciones
- Consultas que muestran más de 1 GiB de datos. En el caso de las aplicaciones sensibles a la latencia, se recomienda un tamaño de respuesta inferior a 1 MiB.
- Seguridad a nivel de la fila
Solución alternativa para funciones no admitidas
Si bien algunas funciones de SQL no son compatibles con BigQuery BI Engine, existe una solución alternativa disponible:
- Escribe una consulta en BigQuery.
- Guarda los resultados de la consulta en una tabla.
- Programa tu consulta para actualizar la tabla de forma periódica. Una frecuencia de actualización diaria o por hora funciona mejor. Actualizar cada minuto podría invalidar la caché con demasiada frecuencia.
- Haz referencia a esta tabla en las consultas de rendimiento crítico.
Cuotas y límites
Consulta Cuotas y límites de BigQuery para obtener información sobre las cuotas y los límites que se aplican a BI Engine.
Precios
Se generan costos por la reserva que creas para la capacidad de BI Engine. Para obtener información sobre los precios de BI Engine, consulta la página Precios.
¿Qué sigue?
- Para aprender cómo crear tu reserva de BI Engine, consulta Reserva la capacidad de BI Engine.
- Para obtener información sobre las tablas preferidas, consulta Tablas preferidas de BI Engine.
- Para comprender tu uso de BI Engine, consulta Supervisa BI Engine con Cloud Monitoring.
- Obtén información sobre las funciones optimizadas de BI Engine.
- Aprende a usar BI Engine con lo siguiente: