Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.

Reply
Syndicate_Admin
Administrator
Administrator

Previsión presupuestaria basada en retrospectivas

Necesidad de crear pronósticos de presupuesto mensuales basados en diferentes retrospectivas (3 días, 5 días, 7 días)


Buscando algo como lo siguiente:

Si asumimos que el día actual es el 19/03/2022, y queremos pronosticar las proyecciones de gasto utilizando una retrospectiva de 3 días, extraeríamos los datos del presupuesto diario del 16/03/2022.

Primero necesito crear la columna de presupuesto acumulativo. El 3/16, el valor presupuestario acumulado debe ser igual a la suma del presupuesto de 3/1 a 3/15. Todos los días después del 3/16, agregamos acumulativamente los valores de la columna 'Presupuesto diario real' para obtener el total del presupuesto acumulado.

En segundo lugar, necesito crear el gasto acumulado proyectado. Esto toma el promedio de la columna 'Gasto real diario' en la ventana de 3 días anterior al día actual, ya que estamos usando una retrospectiva de 3 días. Luego lo agrega acumulativamente a la columna 'Gasto proyectado acumulativo' de 3/16 para obtener el Gasto proyectado acumulativo.

Necesito una tabla de Power BI que sea algo así como el formato a continuación, pero estoy totalmente perplejo. La ayuda sería apreciada aquí.

¡Gracias!

rkedia_0-1648851287960.png

2 ACCEPTED SOLUTIONS
Syndicate_Admin
Administrator
Administrator

Hay @rkedia ,

1. De acuerdo con su descripción y resultado esperado, he creado una muestra de datos para la prueba.

Eyelyn9_0-1649057407161.png

2. Y en base a esto— —Si asumimos que el día actual es el 19/03/2022, y queremos pronosticar las proyecciones de gasto utilizando una retrospectiva de 3 días, extraeríamos los datos del presupuesto diario del 16/03/2022.

Creo dos tablas adicionales para segmentaciones de datos:

Date Slicer = CALENDAR(MIN('Table'[Date]),MAX('Table'[Date])) 
Lookbacks = ADDCOLUMNS( {"3 Day Lookback","5 Day Lookback","7 Day Lookback"} ,"Number",CONVERT( LEFT([Value],1),INTEGER))

Eyelyn9_2-1649057501601.png Eyelyn9_1-1649057491493.png

3.Luego, primero cree una medida de bandera para filtrar la fecha necesaria y aplíquela al panel de filtro visual, establecido como "es 1"

Filter Flag = IF(MAX('Table'[Date])>= SELECTEDVALUE('Date Slicer'[Date])-MAX('Lookbacks'[Number]),1,0) 

Eyelyn9_4-1649057792016.png

4. Ahora cree medidas:

Daily Actual Spend Measure = CALCULATE(SUM('Table'[Daily Actial Spend]),FILTER('Table',[Date]>=SELECTEDVALUE('Date Slicer'[Date])-MAX('Lookbacks'[Number]) && [Date]< ode="">
Cumulative Budget = 
var _sele=SELECTEDVALUE('Date Slicer'[Date])-MAX('Lookbacks'[Number]) // selected date - X day lookback
var _sumofbefore= CALCULATE(SUM('Table'[Daily Budget]),FILTER(ALL('Table'),[Date]<_sele ))
return SWITCH(TRUE(), MAX('Table'[Date])=_sele,_sumofbefore, MAX('Table'[Date])>_sele, CALCULATE(SUM('Table'[Daily Budget]),FILTER(ALL('Table'),[Date]<=MAX('Table'[Date])  && [Date]>_sele)) +_sumofbefore)
Cumulative Projected Spend = 
var _sele=SELECTEDVALUE('Date Slicer'[Date])-MAX('Lookbacks'[Number]) // selected date - X day lookback
var _sumofbefore= CALCULATE(SUM('Table'[Daily Actial Spend]),FILTER(ALL('Table'),[Date]<_sele ))
return SWITCH(TRUE(), MAX('Table'[Date])=_sele,_sumofbefore, MAX('Table'[Date])>_sele, _sumofbefore + DATEDIFF(_sele,MAX('Table'[Date]),DAY) *CALCULATE(AVERAGE('Table'[Daily Actial Spend]),FILTER(ALL('Table'),[Date]<_sele+3&& [Date]>=_sele)))
Pct Diff(%) = ( [Cumulative Projected Spend] -[Cumulative Budget]) / [Cumulative Budget]

Resultado final:

Eyelyn9_5-1649057832399.png

Saludos
Eyelyn Qin
Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

View solution in original post

Syndicate_Admin
Administrator
Administrator

Hay @rkedia ,

Entonces, ¿quiere decir que las columnas acumulativas deben sumar valores para el mismo año-mes? ¿Y el visual solo debe mostrar el valor seleccionado del año-mes?

Puede agregar más filtros a la sintaxis de DAX. Por ejemplo:

&& YEAR(SELECTEDVALUE('Date Slicer'[Date]))= YEAR(MAX('Table'[Date])) && MONTH(SELECTEDVALUE('Date Slicer'[Date]))=MONTH(MAX('Table'[Date]))

Filter Flag = IF(MAX('Table'[Date])>= SELECTEDVALUE('Date Slicer'[Date])-MAX('Lookbacks'[Number]) && YEAR(SELECTEDVALUE('Date Slicer'[Date]))= YEAR(MAX('Table'[Date])) && MONTH(SELECTEDVALUE('Date Slicer'[Date]))=MONTH(MAX('Table'[Date])),1,0) 

Cumulative Budget = 
var _sele=SELECTEDVALUE('Date Slicer'[Date])-MAX('Lookbacks'[Number]) // selected date - X day lookback
var _sumofbefore= CALCULATE(SUM('Table'[Daily Budget]),FILTER(ALL('Table'),[Date]<_sele && YEAR([Date])=YEAR(_sele) && MONTH([Date])=MONTH(_sele)))

return SWITCH(TRUE(), MAX('Table'[Date])=_sele,_sumofbefore, MAX('Table'[Date])>_sele && YEAR(_sele)= YEAR(MAX('Table'[Date])) && MONTH(_sele)=MONTH(MAX('Table'[Date]))  , CALCULATE(SUM('Table'[Daily Budget]),FILTER(ALL('Table'),[Date]<=MAX('Table'[Date])  && [Date]>_sele)) +_sumofbefore)

Saludos
Eyelyn Qin
Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

View solution in original post

3 REPLIES 3
Syndicate_Admin
Administrator
Administrator

Hay @rkedia ,

Entonces, ¿quiere decir que las columnas acumulativas deben sumar valores para el mismo año-mes? ¿Y el visual solo debe mostrar el valor seleccionado del año-mes?

Puede agregar más filtros a la sintaxis de DAX. Por ejemplo:

&& YEAR(SELECTEDVALUE('Date Slicer'[Date]))= YEAR(MAX('Table'[Date])) && MONTH(SELECTEDVALUE('Date Slicer'[Date]))=MONTH(MAX('Table'[Date]))

Filter Flag = IF(MAX('Table'[Date])>= SELECTEDVALUE('Date Slicer'[Date])-MAX('Lookbacks'[Number]) && YEAR(SELECTEDVALUE('Date Slicer'[Date]))= YEAR(MAX('Table'[Date])) && MONTH(SELECTEDVALUE('Date Slicer'[Date]))=MONTH(MAX('Table'[Date])),1,0) 

Cumulative Budget = 
var _sele=SELECTEDVALUE('Date Slicer'[Date])-MAX('Lookbacks'[Number]) // selected date - X day lookback
var _sumofbefore= CALCULATE(SUM('Table'[Daily Budget]),FILTER(ALL('Table'),[Date]<_sele && YEAR([Date])=YEAR(_sele) && MONTH([Date])=MONTH(_sele)))

return SWITCH(TRUE(), MAX('Table'[Date])=_sele,_sumofbefore, MAX('Table'[Date])>_sele && YEAR(_sele)= YEAR(MAX('Table'[Date])) && MONTH(_sele)=MONTH(MAX('Table'[Date]))  , CALCULATE(SUM('Table'[Daily Budget]),FILTER(ALL('Table'),[Date]<=MAX('Table'[Date])  && [Date]>_sele)) +_sumofbefore)

Saludos
Eyelyn Qin
Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

Syndicate_Admin
Administrator
Administrator

Hay @rkedia ,

1. De acuerdo con su descripción y resultado esperado, he creado una muestra de datos para la prueba.

Eyelyn9_0-1649057407161.png

2. Y en base a esto— —Si asumimos que el día actual es el 19/03/2022, y queremos pronosticar las proyecciones de gasto utilizando una retrospectiva de 3 días, extraeríamos los datos del presupuesto diario del 16/03/2022.

Creo dos tablas adicionales para segmentaciones de datos:

Date Slicer = CALENDAR(MIN('Table'[Date]),MAX('Table'[Date])) 
Lookbacks = ADDCOLUMNS( {"3 Day Lookback","5 Day Lookback","7 Day Lookback"} ,"Number",CONVERT( LEFT([Value],1),INTEGER))

Eyelyn9_2-1649057501601.png Eyelyn9_1-1649057491493.png

3.Luego, primero cree una medida de bandera para filtrar la fecha necesaria y aplíquela al panel de filtro visual, establecido como "es 1"

Filter Flag = IF(MAX('Table'[Date])>= SELECTEDVALUE('Date Slicer'[Date])-MAX('Lookbacks'[Number]),1,0) 

Eyelyn9_4-1649057792016.png

4. Ahora cree medidas:

Daily Actual Spend Measure = CALCULATE(SUM('Table'[Daily Actial Spend]),FILTER('Table',[Date]>=SELECTEDVALUE('Date Slicer'[Date])-MAX('Lookbacks'[Number]) && [Date]< ode="">
Cumulative Budget = 
var _sele=SELECTEDVALUE('Date Slicer'[Date])-MAX('Lookbacks'[Number]) // selected date - X day lookback
var _sumofbefore= CALCULATE(SUM('Table'[Daily Budget]),FILTER(ALL('Table'),[Date]<_sele ))
return SWITCH(TRUE(), MAX('Table'[Date])=_sele,_sumofbefore, MAX('Table'[Date])>_sele, CALCULATE(SUM('Table'[Daily Budget]),FILTER(ALL('Table'),[Date]<=MAX('Table'[Date])  && [Date]>_sele)) +_sumofbefore)
Cumulative Projected Spend = 
var _sele=SELECTEDVALUE('Date Slicer'[Date])-MAX('Lookbacks'[Number]) // selected date - X day lookback
var _sumofbefore= CALCULATE(SUM('Table'[Daily Actial Spend]),FILTER(ALL('Table'),[Date]<_sele ))
return SWITCH(TRUE(), MAX('Table'[Date])=_sele,_sumofbefore, MAX('Table'[Date])>_sele, _sumofbefore + DATEDIFF(_sele,MAX('Table'[Date]),DAY) *CALCULATE(AVERAGE('Table'[Daily Actial Spend]),FILTER(ALL('Table'),[Date]<_sele+3&& [Date]>=_sele)))
Pct Diff(%) = ( [Cumulative Projected Spend] -[Cumulative Budget]) / [Cumulative Budget]

Resultado final:

Eyelyn9_5-1649057832399.png

Saludos
Eyelyn Qin
Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

Gracias por su respuesta, agradezco la ayuda! El único problema que tengo ahora es con las columnas acumulativas. Tal vez sea porque el conjunto de datos incluye datos de varios meses anteriores al 19/03/2022 (a partir de 2021) y meses posteriores al 03/2022 (abril). con el código que ha enviado, solo obtengo valores constantes del 17/03/2022 al 31/03/2022

Necesito que estas tablas solo incluyan datos para el mes seleccionado por la segmentación de datos de fecha y restablezcan el mes siguiente. Pude usar parte de la funcionalidad EOMONTH() para tratar problemas en otras columnas, pero estoy perplejo por los problemas en las columnas acumulativas.



Hágame saber si esto tiene sentido. ¡¡Gracias!!

Helpful resources

Announcements
PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.