Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.
Hello everyone,
I´m having problems with a DAX calculation.
I need to calculate the % of hours that suppose every row per month and person and I have a table like this.
Any help?
Thanks.
Solved! Go to Solution.
Hi @Anonymous,
Could you try the formula below to see if it works in your scenario?
Task % = VAR currentMonth = MONTH ( MAX ( 'Table2'[Fecha de trabajo] ) ) VAR currentYear = YEAR ( MAX ( 'Table2'[Fecha de trabajo] ) )
VAR currentPerson =
MAX ( 'Table2'[Id_Persona] ) VAR HoursInTask = CALCULATE ( SUM ( 'Table2'[Horas] ), ALLEXCEPT ( Table2, 'Table2'[Id_Proyecto] ) ) VAR AmountHoursPersonInAllTasks = CALCULATE ( SUM ( 'Table2'[Horas] ), FILTER ( ALL ( 'Table2' ), 'Table2'[Id_Persona] = currentPerson && ( MONTH ( 'Table2'[Fecha de trabajo] ) = currentMonth && YEAR ( 'Table2'[Fecha de trabajo] ) = currentYear ) ) ) RETURN DIVIDE ( HoursInTask, AmountHoursPersonInAllTasks )
Regards
Hi @Anonymous
Could you please post a mock up of what you expect your result to look like. That will help us fill the gap.
Hello @Phil_Seamark,
I need a formula that looks like:
Task% = [Hours in the task]/[Amount of worked Hours in the month of this person in all worked tasks]
Hi @Anonymous
This might be getting close
Task % = var HoursInTask = CALCULATE(SUM('Table2'[Horas]),ALLEXCEPT(Table2,'Table2'[Id_Proyecto])) var AmountHoursPersonInAllTasks = CALCULATE( SUM('Table2'[Horas]), FILTER( ALL('Table2'), MONTH('Table2'[Fecha de trabajo])= MONTH(MAX('Table2'[Fecha de trabajo])) && YEAR('Table2'[Fecha de trabajo])= YEAR(MAX('Table2'[Fecha de trabajo])) )) RETURN DIVIDE(HoursInTask,AmountHoursPersonInAllTasks)
Thanks for answer so quickly @Phil_Seamark,
Yes, I have a CalendarTable with month, year, ...
I proved your formula and didn't show me what I need.
I think this part don't work fine. It sums all hours of all tasks that I have, the date filter in the part of ALL() don't work.
var AmountHoursPersonInAllTasks = CALCULATE( SUM('Table2'[Horas]), FILTER( ALL('Table2'), MONTH('Table2'[Fecha de trabajo])= MONTH(MAX('Table2'[Fecha de trabajo])) && YEAR('Table2'[Fecha de trabajo])= YEAR(MAX('Table2'[Fecha de trabajo])) ))
Hi @Anonymous,
Could you try the formula below to see if it works in your scenario?
Task % = VAR currentMonth = MONTH ( MAX ( 'Table2'[Fecha de trabajo] ) ) VAR currentYear = YEAR ( MAX ( 'Table2'[Fecha de trabajo] ) )
VAR currentPerson =
MAX ( 'Table2'[Id_Persona] ) VAR HoursInTask = CALCULATE ( SUM ( 'Table2'[Horas] ), ALLEXCEPT ( Table2, 'Table2'[Id_Proyecto] ) ) VAR AmountHoursPersonInAllTasks = CALCULATE ( SUM ( 'Table2'[Horas] ), FILTER ( ALL ( 'Table2' ), 'Table2'[Id_Persona] = currentPerson && ( MONTH ( 'Table2'[Fecha de trabajo] ) = currentMonth && YEAR ( 'Table2'[Fecha de trabajo] ) = currentYear ) ) ) RETURN DIVIDE ( HoursInTask, AmountHoursPersonInAllTasks )
Regards
Thanks @v-ljerr-msft,
Works great with little modifications.
Task % = VAR currentMonth = MONTH ( 'Table2'[Fecha de trabajo] ) VAR currentYear = YEAR ( 'Table2'[Fecha de trabajo] )
VAR currentPerson =
( 'Table2'[Id_Persona] ) VAR HoursInTask = SUM ( 'Table2'[Horas] ) VAR AmountHoursPersonInAllTasks = CALCULATE ( SUM ( 'Table2'[Horas] ), FILTER ( ALL ( 'Table2' ), 'Table2'[Id_Persona] = currentPerson && ( MONTH ( 'Table2'[Fecha de trabajo] ) = currentMonth && YEAR ( 'Table2'[Fecha de trabajo] ) = currentYear ) ) ) RETURN DIVIDE ( HoursInTask, AmountHoursPersonInAllTasks )
Hi @Anonymous
Do you have a Date Table that has a Month column?
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
111 | |
95 | |
80 | |
68 | |
59 |
User | Count |
---|---|
150 | |
119 | |
104 | |
87 | |
67 |