Línea de tendencia con DAX - Galaz666/Power-Bi GitHub Wiki

El gráfico de líneas de Power BI ofrece la posibilidad de dibujar una línea de tendencia si en el eje X disponemos de una serie de tiempo o bien numérica.

Por otra parte, mediante DAX, podemos realizar el cálculo de tendencia con la fórmula de regresión lineal simple y aplicarla a cuantas situaciones aparezcan, con independencia de si los ejes son fechas u otro tipo de valor. Además, Power BI solo permite una línea de tendencia en el gráfico por lo que disponer de este sistema nos puede ayudar en alguna ocasión deonde eso sea una limitación.

Podéis encontrar en la red diferentes soluciones a esta necesidad tan común (TechNet, Daniil Maslyuk, PowerBI Pro, Power Pivot Pro, Foro de Power BI), de entre ellos la solución de Maslyuk nos parece la más límpia y es la que vamos a mostrar sin entrar en los tecnicismos de la estadística.

Partimos de un tabla de Excel que contiene dos columnas: Fecha, Venta. La importamos a Power BI, luego creamos una nueva tabla de fechas

Fechas = CALENDAR(MINX(Ventas;Ventas[Fecha]); MAXX(Ventas;Ventas[Fecha]))

y la relacionamos con la tabla importada.

En la tabla de ventas creamos una nueva medida que es la suma de las ventas y otra que realizará la línea de tendencia que en el ejemplo denominamos “Regresión”.

Regresión = VAR Conocido = FILTER ( SELECTCOLUMNS ( ALLSELECTED('Fechas'[Fecha]); "Conocido[X]"; 'Fechas'[Fecha]; "Conocido[Y]"; Ventas[Venta actual] ); AND ( NOT ( ISBLANK ( Conocido[X] ) ); NOT ( ISBLANK ( Conocido[Y] ) ) ) ) VAR Cuenta_Filas = COUNTROWS ( Conocido ) VAR Suma_X = SUMX ( Conocido; Conocido[X] ) VAR Suma_X2 = SUMX ( Conocido; Conocido[X] ^ 2 ) VAR Suma_Y = SUMX ( Conocido; Conocido[Y] ) VAR Suma_XY = SUMX ( Conocido; Conocido[X] * Conocido[Y] ) VAR Media_X = AVERAGEX ( Conocido; Conocido[X] ) VAR Media_Y = AVERAGEX ( Conocido; Conocido[Y] ) VAR Pendiente = DIVIDE ( Cuenta_Filas * Suma_XY - Suma_X * Suma_Y; Cuenta_Filas * Suma_X2 - Suma_X ^ 2 ) VAR Interseccion = Media_Y - Pendiente * Media_X RETURN Interseccion + Pendiente * SELECTEDVALUE ( 'Fechas'[Fecha] )

Podéis ver la secuencia en el siguiente video.

https://youtu.be/-EJtLopy_iM