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. Este almacenamiento en caché te permite mejorar el rendimiento de las consultas sin ajustes manuales ni nivelación de datos. Puedes agrupar en clústeres tablas y particionar tablas para optimizar aún más el rendimiento de BI Engine para tablas grandes.
Por ejemplo, si tu panel solo muestra datos del último trimestre, puedes particionar tus tablas por tiempo para que solo se carguen en la memoria las particiones más recientes. Luego, puedes usar vistas materializadas para unir y aplanar tus datos, y, luego, marcar la vista y la tabla base resultantes como una tabla preferida para garantizar que la aceleración de BI Engine solo se aplique a los datos que necesitas.
BI Engine ofrece las siguientes ventajas:
- Compatibilidad con la API de BigQuery: BI Engine se integra directamente con la API de BigQuery. Cualquier solución de IE o aplicación personalizada que funcione con la API de BigQuery a través de mecanismos estándar, como la API de REST o los controladores JDBC y ODBC, puede usar BI Engine sin modificaciones.
- Tiempo de ejecución vectorizado: El uso del procesamiento vectorizado en un motor de ejecución hace un uso más eficiente de la arquitectura de la 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 perfecta: 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 consultadas de las columnas y particiones. Puedes especificar qué tablas usan la aceleración de BI Engine con tablas preferidas.
En la mayoría de las organizaciones, un administrador de facturación habilita BI Engine, que reserva capacidad para la aceleración de BI Engine con una edición adecuada. Para obtener más información, consulta Reserva capacidad de BI Engine.
Arquitectura de BI Engine
BI Engine se integra con herramientas de IE, como Looker, Data Studio, Tableau y Power BI, así como con aplicaciones personalizadas a través de la API de BigQuery para acelerar la exploración y el análisis de datos:

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 designas 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 Data Studio o Tableau, una biblioteca cliente, una API o un conector ODBC o JDBC. Esto puede mejorar significativamente el rendimiento de los paneles conectados a BigQuery a través de una conexión integrada (API) o conectores.
- Tienes tablas consultadas 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: las consultas que hacen referencia a tablas comodín no son compatibles con BI Engine y no se benefician de la aceleración.
- Necesitas funciones de BigQuery no 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 incluyen tablas externas, seguridad a nivel de la fila 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 independiente con una reserva de BI Engine dedicada. Primero, estima la capacidad de procesamiento necesaria para tus consultas, luego designa esas tablas como tablas preferidas para BI Engine.
Minimiza las uniones
BI Engine funciona mejor con datos unidos o agregados previamente, y con consultas con una pequeña cantidad de uniones. Este comportamiento es particularmente cierto cuando un lado de la unión es grande y los otros lados 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 materializadasque realizan uniones para producir una sola tabla grande y compacta. Este enfoque evita realizar las mismas uniones para cada consulta. Se recomiendan las vistas materializadas obsoletas 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
INFORMATION_SCHEMA.BI_CAPACITIES
y
INFORMATION_SCHEMA.BI_CAPACITY_CHANGES
vistas. 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 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 lógicas 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
JSONno 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 en una consulta con un
JOINdeben 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 Google Cloud consola. Para agregar una tabla pública como tabla preferida, usa la API o el DDL.
Optimización y aceleración de consultas
BigQuery y, por extensión BI Engine, dividen un plan de consulta en varias subconsultas. Una subconsulta consta de operaciones como el análisis, el filtrado, el procesamiento o la agregación de datos, y sirve como unidad de ejecución.
Si bien todas las consultas de SQL de BigQuery compatibles se ejecutan correctamente con BI Engine, BI Engine optimiza de forma selectiva etapas específicas:
- Subconsultas a nivel de hoja: BI Engine está más optimizado para
subconsultas a nivel de hoja que analizan datos desde el almacenamiento y realizan operaciones
como filtrado, procesamiento, agregación, orden (
ORDER BY) y uniones compatibles. - Ejecución de resguardo: Las etapas de consulta o las subconsultas que no se pueden acelerar con BI Engine vuelven automáticamente a las ranuras de ejecución estándar de BigQuery sin fallar la consulta.
Debido a esta optimización selectiva, la inteligencia empresarial más sencilla o las consultas de tipo de panel se benefician más de BI Engine porque la mayor parte del tiempo de ejecución se dedica a procesar datos sin procesar en subconsultas a nivel de la hoja.
Limitaciones
Para usar BI Engine, tu organización debe reservar capacidad de BI Engine con una edición compatible. Para obtener más información, consulta Comprende las ediciones de BigQuery.
Además, BI Engine tiene limitaciones que se describen en las siguientes secciones.
Uniones
BI Engine acelera ciertos tipos de consultas de unión. La aceleración se produce en subconsultas a nivel de hoja con uniones INNER y LEFT OUTER, en las que una tabla de hechos grande se une con hasta cuatro tablas de dimensiones más pequeñas. Las tablas de dimensiones pequeñas tienen las siguientes restricciones:
- Menos de 5 millones de filas
- Límites de tamaño:
- Tablas no particionadas: 5 GiB o menos
- Tablas particionadas: particiones a las que se hace referencia de 1 GiB o menos
Funciones analíticas
Las funciones analíticas, también conocidas como funciones analíticas, tienen las siguientes limitaciones cuando se aceleran con BI Engine:
- BI Engine acelera las etapas de entrada sin funciones analíticas. En este caso, la vista
INFORMATION_SCHEMA.JOBSinformabi_engine_statistics.acceleration_modecomoFULL_INPUT. - BI Engine acelera las etapas de entrada de las consultas con funciones analíticas si cumplen con las
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, y la vista
INFORMATION_SCHEMA.JOBSinformabi_engine_statistics.acceleration_modecomoFULL_INPUToFULL_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_tablesolo 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_tabletiene dos operadores de función analítica porque ambas tienen cláusulasOVERdiferentes.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áusulasOVERparezcan iguales.
Funciones analíticas compatibles
Se admiten las siguientes funciones analíticas:
ANY_VALUEAVGBIT_ANDBIT_ORBIT_XORCORRCOUNTCOUNTIFCOVAR_POPCOVAR_SAMPCUME_DISTDENSE_RANKFIRST_VALUELAGLAST_VALUELEADLOGICAL_ANDLOGICAL_ORMAXMINNTH_VALUENTILEPERCENT_RANKPERCENTILE_CONTPERCENTILE_DISCRANKROW_NUMBERST_CLUSTERDBSCANSTDDEV_POPSTDDEV_SAMPSTDDEVSTRING_AGGSUMVAR_POPVAR_SAMPVARIANCE
Si no se admiten las funciones analíticas, es posible que veas el siguiente mensaje de error:
Analytic function is incompatible with other operators or its inputs are too large
Limitaciones no compatibles de BI Engine
La aceleración de BI Engine no está disponible para las siguientes funciones:
- UDF de JavaScript y funciones remotas
- Tablas externas, incluidas las tablas de BigLake
- Consulta de datos
JSON(mensaje de error:JSON native type is not supported.) - Consulta de datos
RANGE(mensaje de error:RANGE native type is not supported.) - 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 en el nivel de la fila
- Consultas que usan funciones de búsqueda y búsqueda vectorial (como la
SEARCHfunción oVECTOR_SEARCHfunción) o que están optimizadas por índices de búsqueda o índices vectoriales. - Consultas recursivas con
RECURSIVE - Consultas de BigQuery ML
Solución alternativa para funciones no compatibles
Si tu consulta usa funciones de SQL no compatibles, puedes usar la siguiente solución alternativa:
- 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 por hora o por día funciona mejor. La actualización 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
Para obtener información sobre las cuotas y los límites que se aplican a BI Engine, consulta Cuotas y límites de BigQuery.
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 Precios de BigQuery.
¿Qué sigue?
- Aprende a crear una reserva en Reserva capacidad de BI Engine.
- Aprende a designar tablas preferidas en Tablas preferidas.
- Aprende a supervisar el uso en Supervisa BI Engine con Cloud Monitoring.
- Aprende a usar BI Engine con Data Studio y Tableau.