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 informes bi_engine_statistics.acceleration_mode como FULL_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 informes bi_engine_statistics.acceleration_mode como FULL_INPUT o FULL_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áusulas OVER 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áusulas OVER 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:

  1. Escribe una consulta en BigQuery.
  2. Guarda los resultados de la consulta en una tabla.
  3. 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.
  4. 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?