cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Highlighted
Helper I
Helper I

Cómo usar DAX para crear una columna que muestre resultados dinámicos

Hola fans de Power BI,

He estado atascado en este problema por un tiempo y espero que pueda encontrar una solución aquí.

A continuación se muestra el escenario.

Tengo una tabla de ventas que incluye mis ingresos mensuales obtenidos. Cada inicio del mes, me gustaría calcular el nuevo objetivo mensual basado en los ingresos obtenidos del mes pasado. Si los ingresos obtenidos del mes pasado tuvieron un superávit, entonces la meta mensual para el resto de los meses sigue siendo la misma, si hay un déficit, entonces necesito agregar esos déficits al resto de los meses del año. La segunda imagen puede ayudar a entender el escenario.

El círculo rojo en la primera imagen no muestra lo que quiero porque parece que se calcula en función de cada fila.

A continuación se muestra mi dax:

Columna ?
VAR _n á MONTH('Goal'[StartofMonth].[ Fecha])
VAR _Looptable - GENERATESERIES(1._n)
VAR _NewMonthlyGoal 'Goal'[Monthly Goal] + IF('Goal'[Achieved.Achieved Monthly Revenue] < 'Goal'[Monthly Goal], ('Goal'[Monthly Goal] - 'Goal'[Achieved.Monthly Revenue])/(12-_n),0)
VAR _Looptable1 - ADDCOLUMNS(_Looptable,"_NMG", 'Goal'[Monthly Goal] + IF('Goal'[Achieved.Monthly Revenue] < 'Goal'[Monthly Goal], ('Goal'[Monthly Goal] - 'Goal'[Achieved.Monthly Revenue])/(12-_n),0))
VAR _max á MAXX(_Looptable1,[Valor])
devolución
MAXX(FILTER(_Looptable1,[Value]-_max),[_NMG])

2020-08-05_10-43-27.png

2020-08-05_11-05-28.png

9 REPLIES 9
Highlighted
Community Support
Community Support

Re: Cómo usar DAX para crear una columna que muestre resultados dinámicos

Hola @Syruswan ,

Intente modificar su columna como se muestra a continuación:

Column = 
Var _lastmonthgoal=CALCULATE(MAX('Goal'[Achieved.Achieved Monthly Revenue]),FILTER('Goal','Goal'[StartofMonth]=MAXX(FILTER('Goal','Goal'[StartofMonth]<EARLIER('Goal'[StartofMonth])),'Goal'[StartofMonth])
Return
IF( 'Goal'[Monthly Goal]>_lastmonthgoal, 'Goal'[Monthly Goal]+DIVIDE('Goal'[Monthly Goal]-_lastmonthgoal,12-MONTH('Goal'[StartofMonth)+1),'Goal'[Monthly Goal])

Si la medida anterior no funciona, pls cargar su archivo .pbix a una empresa de unidad y compartir el enlace conmigo.

Saludos
Kelly
¿He respondido a tu pregunta? ¡Marca mi puesto como una solución!

Highlighted
Helper I
Helper I

Re: Cómo usar DAX para crear una columna que muestre resultados dinámicos

Hola Kelly,

Gracias por la ayuda. Intenté la medida, pero no funcionó.

A continuación se muestra el archivo.

https://drive.google.com/file/d/10Prv_K3yeun1WovMp378SuI2sHHHT97D/view?usp=sharing

Highlighted
Community Support
Community Support

Re: Cómo usar DAX para crear una columna que muestre resultados dinámicos

Hola @Syruswan ,

Cree 2 columnas como se muestra a continuación:

Gap = 
var _lastmonth=MAXX(FILTER('Goal','Goal'[StartofMonth]<EARLIER('Goal'[StartofMonth])),'Goal'[StartofMonth])
Var _lastmonthgoal=CALCULATE(MAX('Goal'[Achieved.Achieved Monthly Revenue]),FILTER(ALL('Goal'),'Goal'[StartofMonth]=_lastmonth))
var _diff='Goal'[Monthly Goal]-_lastmonthgoal
Return
IF(_diff<0||_lastmonthgoal=BLANK(),0,DIVIDE(ABS(_diff),13-MONTH('Goal'[StartofMonth])))
_New monthly goal = 
var _previousgap=CALCULATE(MAX('Goal'[Gap]),FILTER('Goal','Goal'[StartofMonth]<=EARLIER('Goal'[StartofMonth])))
Return
IF(_previousgap=0,'Goal'[Monthly Goal],'Goal'[Monthly Goal]+SUMX(FILTER(ALL('Goal'),'Goal'[StartofMonth]<=EARLIER('Goal'[StartofMonth])),'Goal'[Gap]))

Y verás:

Annotation 2020-08-07 090055.png

Para el archivo .pbix relacionado, pls ver adjunto.

Saludos
Kelly
¿He respondido a tu pregunta? ¡Marca mi puesto como una solución!
Highlighted
Super User V
Super User V

Re: Cómo usar DAX para crear una columna que muestre resultados dinámicos

Hola

¿Podría compartir el archivo MS Excel con su fórmula de Excel para que pueda entender su lógica? Comparte el enlace desde donde puedo descargar tu archivo MS Excel.


Regards,
Ashish Mathur
http://www.ashishmathur.com
https://www.linkedin.com/in/excelenthusiasts/
Highlighted
Helper I
Helper I

Re: Cómo usar DAX para crear una columna que muestre resultados dinámicos

Hola Kelly,

Esta es la solución que estoy buscando. ¡Muchas gracias por la ayuda!

Sin embargo, en el caso real, tengo varios vendedores. Acabo de añadir otra columna llamada "vendedor". Quiero que el cálculo se haga en cada vendedor, en otras palabras, el cálculo debería funcionar más como subcuadámeno independiente con 12 filas (12 meses). ¿Cómo puedo ajustar el DAX para el cálculo? Intenté usar FILTER para salir con una submesa primero. Entonces todavía no funciona.

Brecha ( Gap)
VAR _Salesperson - FILTER('Goal', 'Goal'[Salesman] ? EARLIER('Goal'[Salesman] ))
var _lastmonth-MAXX(FILTER(_Salesperson,'Goal'[StartofMonth] < EARLIER('Goal'[StartofMonth])),'Goal'[StartofMonth])
Var _lastmonthgoal-CALCULATE(MAX('Goal'[Achieved.Achieved Monthly Revenue]),FILTER(_Salesperson,'Goal'[StartofMonth]-_lastmonth))
var _diff''Objetivo'[Objetivo mensual]-_lastmonthgoal
devolución
IF(_diff<0? _lastmonthgoal-BLANK(),0,DIVIDE(ABS(_diff),13-MONTH('Goal'[StartofMonth])))

El enlace es el archivo adjunto.

https://drive.google.com/file/d/1D_PjVyq0KQgkMTDYqhjjEb2C2tH5S9q6/view?usp=sharing

Highlighted
Community Support
Community Support

Re: Cómo usar DAX para crear una columna que muestre resultados dinámicos

Hola @Syruswan ,

Modifique las columnas como se muestra a continuación:

Gap = 
VAR _Salesperson = FILTER('Goal', 'Goal'[Salesman] = EARLIER('Goal'[Salesman] ))
var _lastmonth=MAXX(FILTER(_Salesperson,'Goal'[StartofMonth]<EARLIER('Goal'[StartofMonth])),'Goal'[StartofMonth])
Var _lastmonthgoal=CALCULATE(MAX('Goal'[Achieved.Achieved Monthly Revenue]),FILTER(_Salesperson,'Goal'[StartofMonth]=_lastmonth))
var _diff='Goal'[Monthly Goal]-_lastmonthgoal
Return
IF(_diff<0||_lastmonthgoal=BLANK(),0,DIVIDE(ABS(_diff),13-MONTH('Goal'[StartofMonth])))
_New monthly goal = 
VAR _Salesperson = FILTER('Goal', 'Goal'[Salesman] = EARLIER('Goal'[Salesman] ))
var _previousgap=CALCULATE(MAX('Goal'[Gap]),FILTER(_Salesperson,'Goal'[StartofMonth]<=EARLIER('Goal'[StartofMonth])))
Return
IF(_previousgap=0,'Goal'[Monthly Goal],'Goal'[Monthly Goal]+SUMX(FILTER(_Salesperson,'Goal'[StartofMonth]<=EARLIER('Goal'[StartofMonth])),'Goal'[Gap]))

Finalmente verá:

Annotation 2020-08-10 084406.png

Para el archivo .pbix modificado, pls ver adjunto.

Saludos
Kelly
¿He respondido a tu pregunta? ¡Marca mi puesto como una solución!
Highlighted
Helper I
Helper I

Re: Cómo usar DAX para crear una columna que muestre resultados dinámicos

Hola Kelly,

Gracias por la ayuda.

Estoy mirando a June y el número está un poco apagado. Estoy esperando que la nueva meta mensual en junio debe ser (($85,983.45 - $81,532.9) / 7 ) + $85983.45 á $86,619.24. Quiero calcular la diferencia entre el objetivo mensual alcanzado y el nuevo objetivo mensual calculado.

Me doy cuenta de que podría ser causa por

var _diff 'Goal'[Montly Goal] -_lastmonthgoal
Así que lo cambié a abajo, pero parece que no funciona en absoluto.
var _diff 'Objetivo'[Ingresos mensuales alcanzados] -_lastmonthgoal

2020-08-10_10-55-16.png

Highlighted
Community Support
Community Support

Re: Cómo usar DAX para crear una columna que muestre resultados dinámicos

Hola @Syruswan ,

Sí, como en mi cálculo, el _diff se basa en 83333.33,no en el nuevo valor dinámico, me ha molestado el problema durante 2 días, pero todavía no podía encontrar una solución, ya que necesita calcular en función del resultado dinámico, sería difícil. O en otra palabra, puede hacer que varias columnas sean los resultados intermedios para obtener una columna final.

Saludos
Kelly
¿He respondido a tu pregunta? ¡Marca mi puesto como una solución!
Highlighted
Helper I
Helper I

Re: Cómo usar DAX para crear una columna que muestre resultados dinámicos

Hola Kelly,

Muchas gracias por la ayuda. Sí, este cálculo dinámico es muy difícil. Encontré un post interesante que es bastante similar a lo que mencionaste que agregar una gran cantidad de columnas podría valer la pena intentarlo. La razón es que estamos haciendo el cálculo basado en un nuevo valor de la última fila. Con el fin de encontrar una manera de almacenar o crear ese valor, ADDCOLUMNS podría ser algo que vale la pena probar. He estado atascado en esto por mucho tiempo y no he descubierto una manera. A continuación está sólo un post que encontré.

2020-08-18_9-58-44.png

Helpful resources

Announcements
Community Conference

Power Platform Community Conference

Check out the on demand sessions that are available now!

Upcoming Events

Experience what’s next for Power BI

See the latest Power BI innovations, updates, and demos from the Microsoft Business Applications Launch Event.

secondImage

Power Platform 2020 release wave 2 plan

Features releasing from October 2020 through March 2021

Get Ready for Power BI Dev Camp

Get Ready for Power BI Dev Camp

Mark your calendars and join us for our next Power BI Dev Camp!.

Top Solution Authors