El día de hoy quiero compartir algo que no se abordó en mi libro: El ADN de Power Pivot, esto es: Las Variables en el Lenguaje DAX. Pero antes de entrar en materia quiero hacerte una pregunta:
¿Qué tipo de Lenguaje es DAX?, me refiero:
a) Un Lenguaje de Programación
b) Un Lenguaje de Funciones
c) Lenguaje de Consulta
Si tu mi amig@ has visto y estudiado el material que brinda EFB sobre esta temática o (Nociones en Power Pivot, Aplicaciones con Power Pivot, El ADN de Power Pivot, Artículos Power Pivot en EFB), has adquirido conocimiento al respecto e diversas fuentes, estoy seguro que has respondido la opción b) (Lenguaje de Funciones)
Cierto que sí…
Ha puesto a que sí, no me mientas 🙂
Ok, también habrán marcado Lenguaje de Consulta
No obstante, el lenguaje DAX es tan estupendo y útil que su popularidad crece exponencialmente en la comunidad de usuario de Excel y profesionales en inteligencia de negocios, con ello las mejoras que se hacen a el son constantes, mes a mes, año a año. Por lo anterior hpy podemos decir que el lenguaje DAX, es un lenguaje de programación de Microsoft SQL Server Anlysis Services (SSAS) y Microsoft Power Pivot.
Al Final de día son todas la opciones 😎
Para la versión 2016, ya no sólo hablamos de iteraciones (Bucles), literales (constantes), sino también al que es parte integra de los lenguajes de programación: Variables en el Lenguaje DAX.
Habiendo dicho esto, el lenguaje DAX es diferente de la gran mayoría de lenguaje de programación y adaptarse a esta nueva forma de pensamiento toma algo de tiempo. Aunque se puede empezar a implementar DAX en cuestión de horas, existen características que requieren de especial atención y práctica.
El día de hoy quiero comentarles acerca de una característica que está disponible a partir de la versión de Power Pivot del año 2016, las variables en el lenguaje DAX.
.
Variables en el Lenguaje DAX
Las variables en el lenguaje DAX son una de las características que hace que nuestras fórmulas DAX se puedan leer con mayor facilidad, y con ello documentarlas de manera indirecta, esto incide en que la legibilidad aumenta al igual que la capacidad para reciclarlas y utilizarlas en otros escenarios.
– Sintaxis
La sintaxis para el uso de variables en el Lenguaje DAX, es bastante sencilla
VAR
<NombreVariable> = <Expresión DAX para Medida o Tabla>
RETURN
<Expresión DAX>
Se pueden declarar cuantas variables necesitemos, esto lo logramos utilizando la palabra VAR el número n de variables que necesitemos antes de la palabra reservada RETURN.
– Ejemplo 1: Tasa Básica de Crecimiento
Tomemos por ejemplo el cálculo para tasa básica de crecimiento, escrita sin variables (sin medidas previamente creadas) y de su forma más simple sería
.
TABLA_Pedidos[Tasa Básica de Crecimiento %]:=
DIVIDE (
SUM ( TABLA_Pedidos[Precio de Venta] )
– CALCULATE (
SUM ( TABLA_Pedidos[Precio de Venta] );
TABLA_Pedidos[Fecha de Envio (año)] = «2000»
);
CALCULATE (
SUM ( TABLA_Pedidos[Precio de Venta] );
TABLA_Pedidos[Fecha de Envio (año)] = «2000»
)
)
.
He exagerado un poco la expresión ya que no se han usado medidas para acortar un poco la fórmula, además estamos asumiendo que no tenemos una tabla de calendario estándar por lo que no se utilizan funciones como DATESADD o SAMEPERIODSLASTYEAR en compañía de ALL para crear una fórmula limpia.
Lo importante es ver el beneficio más evidente en variables, la medida tasa básica de crecimiento con variables:
.
TABLA_Pedidos[Tasa Básica de Crecimiento %]:=
VAR IngresosActuales =
SUM ( TABLA_Pedidos[Precio de Venta] )
VAR IngresosPrimerA =
CALCULATE (
SUM ( TABLA_Pedidos[Precio de Venta] );
TABLA_Pedidos[Fecha de Envio (año)] = «2000»
)
RETURN
DIVIDE ( IngresosActuales – IngresosPrimerA; IngresosPrimerA )
.
Lo sé, con variables la fórmula también se ve abarrotada de funciones y operaciones, sin embargo, si miramos la parte de RETURN veremos cuán limpia es la fórmula, es decir, podemos ver la función DIVIDE nombre que expresan de manera más clara lo que es la medida, además, si nuestra fórmula es más compleja y requiere del uso de esta variable en más de dos ocasiones, entonces, podremos notar que disminuye considerablemente las dimensiones.
Ok, si esto fuera todo, en realidad las variables no representarían un cambio para incrementar la legibilidad de los códigos DAX…
En realidad las variables, tienen la particularidad que toman el valor en la parte que se definen, para el contexto de evaluación en esa instancia; es decir, no importa si la variable se utiliza más adelante donde existen modificaciones el contexto de evaluación, estas conservar el valor almacenado donde fueron definidas.
Es decir, aquellas fórmulas donde tenemos contexto de fila generados automáticamente y contexto de fila generados programablente, requieren del uso de funciones como EARLIER para resolver ciertos escenarios,
Aquí no estamos entrando en detalle acerca de lo contextos de fila (automático y programable), evaluación e iteración; estamos mirando solo un par de beneficios en variables, si tu mi amig@ lector tienes El ADN de Power Pivot y ya has estudiado la primera sección del capítulo 9: Funciones de Filtro y Perspectivas del lenguaje, entonces podrás ver la utilidad y porque es más fácil de entender respecto a la función EARLIER.
.
– Ejemplo 2: Unidades por encima
Imaginemos que queremos crear una columna calculada que nos diga el número de ventas que tuvieron un mayor número de unidades compradas con las unidades actuales del row context actual. Ahora sabemos que la fórmula DAX que realiza esta tarea es:
.
TABLA_Peididos[Unidades por Encima]=
COUNTROWS (
FILTER (
TABLA_Pedidos;
TABLA_Pedidos[Unidades] > EARLIER ( TABLA_Pedidos[Unidades] )
)
)
.
Con variables lo podemos escribir …
.
TABLA_Peididos[Unidades por Encima]=
VAR UnidadesActuales = TABLA_Pedidos[Unidades]
RETURN
COUNTROWS (
FILTER ( TABLA_Pedidos; TABLA_Pedidos[Unidades] > UnidadesActuales )
)
.
En el ejemplo previo, utilizando variables, almacenamos el valor de las unidades de la fila actual creado por el contexto de fila automático en la variable UnidadesActuales, variable que utilizamos más tarde en el iterador (FILTER) para entablar la comparación.
Nota como el sólo nombre de la variable le da mayor legibilidad que utilizar la función EARLIER (quién por ciertos es una de las funciones más extrañas -Al principio- de comprender)
Las variables tienen múltiples beneficios, incluyendo cuando usamos el lenguaje DAX como lenguaje de Consulta, a pesar de ello, mi intención aquí es que conozcas la utilidad de ellas y las emplees en primera medida para escenarios como en el ejemplo de tasa básica de crecimiento, de esta manera, poco a poco te iras acostumbrando a ellas.
.
Para la segunda distribución de mi libro electrónico; El ADN de Power Pivot, agregaremos esta parte y expandiremos las explicaciones para agregar más ejemplos y proporciona más detalles.
.
Muy bien, y eso es todo por mi el dia de hoy
¿Qué te parece las variables en un lenguaje de funciones?
Un Abrazo, Hasta la próxima oprtunidad