Forum Discussion
Project completion date VS BY calendar - Projects impacts
Hi all,
How to implement if with powerquery codes?
I´d like to make a "date" formate data calculation, the proposal is to measure the impact of some projects, based on the Completion Date vs the 2019 BY calendar. to do that in Excel, I´ve make this formula:
"=IF([@[Anticipated Completion Date]]>$E$2;0;IF([@[Anticipated Completion Date]]<=$E$1;IF(365-($E$1-[@[Anticipated Completion Date]])>=0;(365-($E$1-[@[Anticipated Completion Date]]));0);$E$2-[@[Anticipated Completion Date]]))"
Where:
- Anticipated completion date = The project duedate, when is supposed to be finished;
- E1 = 30/09/2018 (End of the 2018 BY calendar);
- E2 = 30/09/2019 (End of the 2019 BY calendar);
- 365 = number of days in a regular year;
Regards,
Hi JoãoBerryBR
Create a calendar table without creating any relationship
calendar = ADDCOLUMNS(CALENDARAUTO(),"modified year",IF(MONTH([Date])<10,YEAR([Date]),YEAR([Date])+1))
Create measures in main data table
measure = VAR end_2018 = CALCULATE ( MAX ( 'calendar'[Date] ), FILTER ( ALL ( 'calendar' ), 'calendar'[modified year] = 2018 ) ) VAR end_2019 = CALCULATE ( MAX ( 'calendar'[Date] ), FILTER ( ALL ( 'calendar' ), 'calendar'[modified year] = 2019 ) ) RETURN IF ( MAX ( 'Table'[Anticipated Completion Date] ) > end_2019, 0, IF ( MAX ( 'Table'[Anticipated Completion Date] ) <= end_2018, IF ( 365 - DATEDIFF ( MAX ( 'Table'[Anticipated Completion Date] ), end_2018, DAY ) >= 0, 365 - DATEDIFF ( MAX ( 'Table'[Anticipated Completion Date] ), end_2018, DAY ), 0 ), DATEDIFF ( MAX ( 'Table'[Anticipated Completion Date] ), end_2019, DAY ) ) )Best Regards
MaggieCommunity Support Team _ Maggie Li
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
7 Replies
- StachuCommunity Champion
I don't get the formula, it seems the true in second IF can never happen (date>E2 (2019), and date <=E1 (2018))
can you describe it natural language?in M it can only be return as a column or a table, and it seems more like a measure for DAX - counting days from a given date to the end of a custom calendar year. If you do need it in a column, can you add sample tables (in format that can be copied to PowerBI) from your model with anonymised data?
Column1 Column2 A 1 B 2.5 As described here:
- JoãoBerryBRNew Member
hi,
Sorry for my dumb question but what parameter I need to put in the field below?
"modified year"
Regards,
- v-juanli-msftCommunity Support
Hi JoãoBerryBR
It is a column added in "calendar" table,it is written in my first formula.
The start of a year and end of a year is from 9/30 this year to 6/30 next year, eg, 2018/9/30~2019/6/30, it represents for year 2019, right?
Best Regards
MaggieCommunity Support Team _ Maggie Li
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
- v-juanli-msftCommunity Support
Hi JoãoBerryBR
Create a calendar table without creating any relationship
calendar = ADDCOLUMNS(CALENDARAUTO(),"modified year",IF(MONTH([Date])<10,YEAR([Date]),YEAR([Date])+1))
Create measures in main data table
measure = VAR end_2018 = CALCULATE ( MAX ( 'calendar'[Date] ), FILTER ( ALL ( 'calendar' ), 'calendar'[modified year] = 2018 ) ) VAR end_2019 = CALCULATE ( MAX ( 'calendar'[Date] ), FILTER ( ALL ( 'calendar' ), 'calendar'[modified year] = 2019 ) ) RETURN IF ( MAX ( 'Table'[Anticipated Completion Date] ) > end_2019, 0, IF ( MAX ( 'Table'[Anticipated Completion Date] ) <= end_2018, IF ( 365 - DATEDIFF ( MAX ( 'Table'[Anticipated Completion Date] ), end_2018, DAY ) >= 0, 365 - DATEDIFF ( MAX ( 'Table'[Anticipated Completion Date] ), end_2018, DAY ), 0 ), DATEDIFF ( MAX ( 'Table'[Anticipated Completion Date] ), end_2019, DAY ) ) )Best Regards
MaggieCommunity Support Team _ Maggie Li
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.- JoãoBerryBRNew Member
Thank you, I will try it.
Kind regards,
- JoãoBerryBRNew Member
Hi,
- the first IF is to exclude the Aticipated complention date before the current BU year, in this case, 30/09/2019, if it´s bigger then 30/09/2019, the result will be Zero;
- the second IF will test how many days from the previouls year, in this case, from 01/10/2017 until 30/09/2018, will impact the current BU, in this case 2019. The calculation consider 12 month of projects benefits, in this example, if one project was finished in 30/03/2018, the project benefit calculation will consider 6 months in the BU 2018 and 6 months in the BU2019;
- The second if also, avoid negative date, for example: one project was finished in 30/06/2016, the calculation result will be: -457, which does not make sense, so the IF will fill the field with Zero.
regards.