Data Analysis eXpressions, o DAX, es el lenguaje para la creación de medidas utilizado en Power BI y Power Pivot para Excel (también se encuentra presente en Analysis Services), las cuales comparten un mismo motor interno, al cual se le denomina Tabular"
Al preparar un informe, se envían una consulta al motor utilizando DAX, el cual a su vez procesa la consulta a utilizando dos motores internos:
■ Formula Engine (Motor de Fórmulas), el cual es el encargado de procesar la orden y generar la consulta. El motor de formulas, es quién realmente comprende el lenguaje DAX.
■ Storage Engine (Motor de almacenamiento), quien extrae los datos fuera del modelo para responder a las consulta realizada.
Para la extracción de datos, Storage Engine, trabaja de 2 formas diferentes: VertiPaq (aloja una copia de los datos en memoria, los cuales son actualizados a demanda) ó DirectQuery (a diferencia de Vertipaq, los datos no se almacenan, sino que la extracción de datos se realiza al momento de realizar la consulta).
Imagen 1: Arquitectura del motor DAX. Ref. The Definitive guide to DAX-Marco Russo y Alberto Ferrari
Los modelos de datos compuestos utilizan ambas tecnologías, la elección de qué motor utilizar para retornar una consulta estará en dependencia de cada consulta.
Vertipaq
VertiPaq, entra a juego cuando la fuente de datos es configurada con un modo de almacenamiento de Importación, esto debido a que los datos se encuentran almacenados en memoria. Para agilizar el proceso de extracción de datos, Vertipaq, aplica una serie de algoritmos de compresión de los datos:
Codificación de valores - Aplicado a Valores numéricos.
Codificación hash ó codificación de diccionario - Aplicado a cadenas de texto.
Codificación de Longitud (Run Len Encoding) - Aplicado adicional a los métodos anteriores, encargado de reducir valores repetidos.
Aunque Vertipaq, realiza un gran trabajo en la optimización del tiempo de extracción de datos, es importante optimizar el modelo de datos para una ejecución más rápida de las consultas DAX.
Comentarios