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 en 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 con 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: El uso del procesamiento vectorizado en un motor de ejecución hace un uso más eficiente de la arquitectura de CPU moderna, ya que opera 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 consultadas y necesarias de las columnas y particiones. 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 con una edición adecuada. 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.
  • Tienes tablas que se consultan con frecuencia: BI Engine te permite designar tablas preferidas para 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 BI Engine no admite: Si bien BI Engine admite la mayoría de los operadores y funciones de SQL, las funciones que BI Engine no admite 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 que requieren 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 con 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 obsoletas para 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 mesas 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 preferidas. Por ejemplo, todas las tablas en 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

Para usar BI Engine, tu organización debe comprar capacidad de BI Engine creando una reserva de BI Engine con una edición compatible. Para obtener más información, consulta Información sobre las ediciones de BigQuery.

Además, 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: Las particiones a las que se hace referencia deben tener 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 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 las dos funciones tienen diferentes entradas directas, 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 no se admiten las funciones de ventana, 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, incluidas las tablas de BigLake
  • 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
  • Consultas que usan la función SEARCH o que se optimizan con índices de búsqueda

Solución alternativa para funciones no compatibles

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?