Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.
Buenas comunidad,
quisiera hacer una previsión de ventas, según los días pasados. Por ejemplo, si hoy es martes 18 de julio de 2023, para saber la previsión de ventas, sumaré el martes 11 de julio y el martes 4 de julio y lo dividiré entre dos para tener la media. Esa cifra será la previsión de ventas para hoy. Cuando sea martes 25 de julio, sumare el martes 4, el martes 11 y el martes 18 y lo dividiré por tres. Así con cada día de la semana.
Le he estado dando vueltas, pero no encuentro la manera para poder hacerlo en DAX.
¿Alguna idea que se os ocurra?
Gracias por vuestra ayuda.
Saludos,
Solved! Go to Solution.
Hola Neeko Tang,
gracias por tu propuesta. A lfinal, lo solucioné consultando con expertos, que me facilitaron esta fórmula:
Sales Forecast=
VAR __Mes=FORMAT(TODAY(), "YYYYMM", "ES-es")
VAR __Dia=MAX(dimCalendario[ORDENDIA])
VAR __MaxDate=MAX(dimCalendario[FECHA])
VAR __Total=CALCULATETABLE(
dimCalendario,
dimCalendario[AÑO-MES]=VALUE(__Mes),
dimCalendario[ORDENDIA]=VALUE(__Dia),
dimCalendario[FECHA]<=___MaxDate,
REMOVEFILTERS(dimCalendario)
)
RETURN
CALCULATE(
AVERAGEX(
VALUES(dimCalendario[FECHA]),
[Ventas]
),
__Total
)
Creo una tabla con los registros del calendario, donde el año-mes sea igua al año-mes actual, el número de día de la semana igual al número de día de la semana más grande, la fecha menor o igual a la fecha más grande del calendario y borro todos los filtros que se apliquen a la tabla calendario.
Después, calculo la media de las ventas según la tabla que acabo de generar.
Comparto este código para que pueda ser útil a la comunidad.
¡Muchas gracias por la aportación!
De acuerdo con su descripción, aquí están mis pasos que puede seguir como solución.
(1) Estos son mis datos de prueba.
(2) Podemos crear una medida.
Sales Forecast =
VAR CurrentDate = MAX('Table'[Date])
VAR CurrentWeekday = WEEKDAY(CurrentDate, 2)
VAR PastDates =
FILTER(
ALL('Table'[Date]),
WEEKDAY('Table'[Date], 2) = CurrentWeekday && 'Table'[Date] < CurrentDate
)
VAR PastSales =
CALCULATE(
SUM('Table'[Sales]),
'Table'[Date] IN PastDates
)
VAR PastDaysCount = COUNTROWS(PastDates)
RETURN IF(PastDaysCount = 0, BLANK(), PastSales / PastDaysCount)
(3) Entonces el resultado es el siguiente.
Si el anterior no puede ayudarlo a obtener el resultado deseado, proporcione algunos datos de muestra en sus tablas (excluya los datos confidenciales) con formato de texto y su resultado esperado con lógica de backend y ejemplos especiales. Es mejor si puede compartir un archivo pbix simplificado . Gracias.
Saludos
Neeko Tang
Si esta publicación ayuda, considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Hola Neeko Tang,
gracias por tu propuesta. A lfinal, lo solucioné consultando con expertos, que me facilitaron esta fórmula:
Sales Forecast=
VAR __Mes=FORMAT(TODAY(), "YYYYMM", "ES-es")
VAR __Dia=MAX(dimCalendario[ORDENDIA])
VAR __MaxDate=MAX(dimCalendario[FECHA])
VAR __Total=CALCULATETABLE(
dimCalendario,
dimCalendario[AÑO-MES]=VALUE(__Mes),
dimCalendario[ORDENDIA]=VALUE(__Dia),
dimCalendario[FECHA]<=___MaxDate,
REMOVEFILTERS(dimCalendario)
)
RETURN
CALCULATE(
AVERAGEX(
VALUES(dimCalendario[FECHA]),
[Ventas]
),
__Total
)
Creo una tabla con los registros del calendario, donde el año-mes sea igua al año-mes actual, el número de día de la semana igual al número de día de la semana más grande, la fecha menor o igual a la fecha más grande del calendario y borro todos los filtros que se apliquen a la tabla calendario.
Después, calculo la media de las ventas según la tabla que acabo de generar.
Comparto este código para que pueda ser útil a la comunidad.
¡Muchas gracias por la aportación!