Introducción a BI Engine
BigQuery BI Engine es un servicio de análisis en memoria de alta velocidad que acelera muchas consultas de SQL en BigQuery almacenando en caché de forma inteligente los datos que usas con más frecuencia. BI Engine puede acelerar las consultas de SQL de cualquier fuente, incluidas las escritas por herramientas de visualización de datos, y puede gestionar tablas almacenadas en caché para optimizar continuamente el rendimiento. De esta forma, puedes mejorar el rendimiento de las consultas sin tener que ajustar manualmente los datos ni clasificarlos por niveles. Puedes agrupar en clústeres y crear particiones en las tablas para optimizar aún más el rendimiento de BI Engine en tablas grandes.
Por ejemplo, si su panel de control solo muestra los datos del último trimestre, puede particionar sus tablas por tiempo para que solo se carguen en la memoria las particiones más recientes. También puedes combinar las ventajas de las vistas materializadas y BI Engine. Esto funciona especialmente bien cuando las vistas materializadas se usan para combinar y acoplar datos con el 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 de BI o aplicación personalizada que funcione con la API de BigQuery mediante mecanismos estándar, como 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 aprovecha de forma más eficiente la arquitectura de las CPUs modernas, ya que opera en lotes de datos a la vez. BI Engine también usa codificaciones de datos avanzadas, concretamente la codificación de longitud de ejecución de diccionario, para comprimir aún más los datos almacenados en la capa en memoria.
- Integración perfecta: BI Engine funciona con las funciones y los metadatos de BigQuery, como las vistas autorizadas, la seguridad a nivel de columna y el enmascaramiento de datos.
- Asignaciones de reservas: las reservas de BI Engine gestionan por separado la asignación de memoria de cada proyecto y región. BI Engine solo almacena en caché las partes consultadas y obligatorias 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, que debe reservar capacidad para la aceleración de BI Engine con una edición adecuada. Para obtener más información, consulta Reservar capacidad de BI Engine.
Casos prácticos de BI Engine
BI Engine puede acelerar significativamente muchas consultas SQL, incluidas las que se usan en los paneles de control de BI. La aceleración es más eficaz si identifica las tablas que son esenciales para sus consultas y, a continuación, las marca como tablas preferidas. Para usar BI Engine, crea una reserva en una región y especifica su tamaño. Puedes dejar que BigQuery determine qué tablas se deben almacenar en caché en función de los patrones de uso del proyecto o especificar las tablas para evitar que otro tráfico interfiera en su aceleración.
BI Engine es útil en los siguientes casos prácticos:
- Usas herramientas de BI para analizar tus datos: BI Engine acelera las consultas de BigQuery, ya se ejecuten en la consola de BigQuery, en una herramienta de BI como Looker Studio o Tableau, o en una biblioteca de cliente, una API o un conector ODBC o JDBC. Esto puede mejorar significativamente el rendimiento de los paneles de control conectados a BigQuery mediante una conexión integrada (API) o conectores.
- Tienes tablas que consultas con frecuencia: BI Engine te permite designar tablas preferidas para acelerar el proceso. Esto resulta útil si tienes un subconjunto de tablas que se consultan con más frecuencia o que se usan en paneles de control 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, por lo que no se benefician de la aceleración.
- Necesitas funciones de BigQuery que no son compatibles con BI Engine: aunque BI Engine admite la mayoría de las funciones y los operadores de SQL, las funciones no compatibles con BI Engine incluyen tablas externas, seguridad a nivel de fila y funciones definidas por el usuario que no son de SQL.
Consideraciones sobre BI Engine
A la hora de decidir cómo configurar BI Engine, ten en cuenta lo siguiente:
Asegurar la aceleración de consultas específicas
Para asegurarse de que se aceleren una serie de consultas, cree un proyecto independiente con una reserva de BI Engine dedicada. Primero, estima la capacidad de computación que necesitan tus consultas y, a continuación, designa esas tablas como tablas preferidas para BI Engine.
Minimizar las uniones
BI Engine funciona mejor con datos precombinados o preagregados, y con consultas que tienen un número reducido de combinaciones. Esto es especialmente cierto cuando uno de los lados de la unión es grande y los demás son mucho más pequeños, como cuando se consulta una tabla de hechos grande unida a tablas de dimensiones más pequeñas. Puede combinar BI Engine con vistas materializadas, que realizan combinaciones para producir una sola tabla grande y plana. De esta forma, no se realizan las mismas combinaciones en cada consulta. Se recomienda usar vistas materializadas obsoletas para optimizar el rendimiento de las consultas.
Conocer el impacto de BI Engine
Para conocer tu uso de BI Engine, consulta Monitorizar 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 el artículo Usar resultados de consultas almacenados en caché.
Tablas preferidas
Las tablas preferidas de BI Engine le permiten limitar la aceleración de BI Engine a un conjunto de tablas específico. Las consultas a todas las demás tablas usan slots de BigQuery normales. Por ejemplo, con las tablas preferidas, puede acelerar solo las tablas y los paneles de control que considere importantes para su empresa.
Si no hay suficiente RAM en el proyecto para contener todas las tablas preferidas, BI Engine descarga las particiones y las columnas a las que no se ha accedido recientemente. Este proceso libera memoria para las nuevas consultas que necesiten aceleración.
Limitaciones de las tablas preferidas
Las tablas preferidas de BI Engine tienen las siguientes limitaciones:
- No puedes añadir vistas a la lista de reservas de tablas preferidas. Las tablas preferidas de BI Engine solo admiten tablas.
- Las consultas a vistas materializadas solo se aceleran si tanto las vistas materializadas como sus tablas base están en la lista de tablas preferidas.
- No se pueden especificar particiones ni columnas para la aceleración.
- Las columnas de tipo
JSON
no se admiten y no se aceleran con 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 que se acelere. Si al menos una tabla no está en la lista preferida, la consulta no podrá usar BI Engine. - Los conjuntos de datos públicos no se admiten en la consola de Google Cloud . Para añadir 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 determinados tipos de consultas de unión. La aceleración
se produce en subconsultas de nivel de hoja con INNER
y LEFT OUTER JOINS
,
donde se combina una tabla de hechos grande 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ímite de tamaño:
- Tablas sin particiones: 5 GiB o menos
- Tablas con particiones: particiones referenciadas de 1 GB o menos
Funciones de ventana
Las funciones de ventana, también conocidas como funciones analíticas, tienen las siguientes limitaciones cuando se aceleran con BigQuery BI Engine:
- Las fases de entrada se aceleran con BigQuery BI Engine si no tienen funciones de ventana. En este caso,
INFORMATION_SCHEMA.JOBS
ver informesbi_engine_statistics
.acceleration_mode
comoFULL_INPUT
. - Las fases de entrada de las consultas con funciones de ventana en sus fases de entrada se aceleran con BI Engine, pero no tienen las limitaciones descritas en Limitaciones de las funciones de ventana de BI Engine.
En ese caso, las fases de entrada o la consulta completa se ejecutan en BI Engine. En este caso,
INFORMATION_SCHEMA.JOBS
ver informesbi_engine_statistics
.acceleration_mode
comoFULL_INPUT
oFULL_QUERY
.
Para obtener más información sobre el campo BiEngineStatistics
, consulta Referencia de trabajo.
Limitaciones de las funciones de ventana de BI Engine
Las consultas con funciones de ventana solo se ejecutan en BI Engine si se cumplen todas las condiciones siguientes:
- La consulta analiza exactamente una tabla.
- La tabla no tiene particiones.
- La tabla tiene menos de 5 millones de filas.
- La consulta no tiene operadores
JOIN
. - El tamaño de la tabla analizada multiplicado por el número de operadores de funciones de ventana no supera los 300 MiB.
Dos funciones de ventana con cláusulas OVER
idénticas y las mismas entradas directas pueden compartir el mismo operador de función de ventana. 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 de ventana.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 de ventana porque las dos 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 de ventana porque las dos funciones tienen entradas directas diferentes, aunque sus cláusulasOVER
parezcan iguales.
Funciones de ventana admitidas
Se admiten las siguientes funciones de ventana referenciadas:
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:
- Funciones definidas por el usuario de JavaScript
- Tablas externas, incluidas las tablas de BigLake
- Consultar datos JSON - Mensaje de error: No se admite el tipo nativo JSON
- Escribir resultados en una tabla permanente de BigQuery
- Tablas que contienen inserciones y actualizaciones que usan la captura de datos de cambios de BigQuery
- Transacciones
- Consultas que devuelven más de 1 GiB de datos. En el caso de las aplicaciones sensibles a la latencia, se recomienda que el tamaño de la respuesta sea inferior a 1 MiB.
- Seguridad a nivel de fila
- Consultas que usan la función
SEARCH
o que están optimizadas por índices de búsqueda
Solución alternativa para funciones no admitidas
Aunque algunas funciones de SQL no son compatibles con BigQuery BI Engine, existe una solución alternativa:
- Escribe una consulta en BigQuery.
- Guarda los resultados de la consulta en una tabla.
- Programa tu consulta para que actualice la tabla periódicamente. Lo ideal es que la frecuencia de actualización sea horaria o diaria. Si se actualiza cada minuto, la caché podría invalidarse con demasiada frecuencia.
- Consulta esta tabla en tus consultas críticas para el rendimiento.
Cuotas y límites
Consulta las cuotas y los límites de BigQuery que se aplican a BI Engine.
Precios
Se te aplican cargos por la reserva que crees para la capacidad de BI Engine. Para obtener información sobre los precios de BI Engine, consulta la página Precios de BigQuery.
Siguientes pasos
- Para saber cómo crear una reserva de BI Engine, consulta Reservar capacidad de BI Engine.
- Para obtener información sobre cómo designar tablas preferidas, consulta Tablas preferidas de BI Engine.
- Para saber cómo utilizas BI Engine, consulta el artículo Monitorizar BI Engine con Cloud Monitoring.
- Funciones optimizadas de BI Engine
- Consulta cómo usar BI Engine con lo siguiente: