The ultimate Microsoft Fabric, Power BI, Azure AI, and SQL learning event: Join us in Stockholm, September 24-27, 2024.
Save €200 with code MSCUST on top of early bird pricing!
Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more. Get started
Hai All I need help.
I am working On a sales report, so every month I am getting a new version of data, so I am using the append option.
So I want to create a calculated column or in power editor Calculated column for dynamic previous versions
For eg: Now I have two versions V5-May-2021 And V6-June-2021
So I want to create a previous version dynamic column as Dax or POwer query
the output should be like
when the new version arrives
Forecast Version(Already existing) | Previous version(Want to create) |
V6-JUNE-2021 | V5-May-2021 |
V7-July-2021 | V6-June-2021 |
V1-January-2022 | V12-December-2021 |
Solved! Go to Solution.
If you change the data type of version flag to integer this is a piece of cake.
Use the below formula as a calculated column.
If that is not working try the code sample below.
Prev =
var maxindex= maxx(FILTER('Sales forecast',EARLIER('Sales forecast'[Version Flag])>'Sales forecast'[Version Flag]),'Sales forecast'[Version Flag])
return CALCULATE(SELECTEDVALUE('Sales forecast'[Forecast Version]),all('Sales forecast'),'Sales forecast'[Version Flag]=maxindex)
Hi @AlanP514
Here is the sample file with the solution
https://www.dropbox.com/t/1KmBvYEHyXMYUYB6
https://www.dropbox.com/t/Ufe2M7Z5O0hsZdpl
This is PQ solution
= Table.AddColumn(#"Promoted Headers", "Previous Version",
each if Int64.From(Text.BetweenDelimiters([Forcast Version], "V", "-")) -1 = 0
then "V12-December-" & Number.ToText( Int64.From(Text.AfterDelimiter([Forcast Version], "-", 1)) - 1 )
else "V" & Number.ToText( Int64.From(Text.BetweenDelimiters([Forcast Version], "V", "-")) - 1 )
& "-" & Date.MonthName (#datetime ( 1, Int64.From(Text.BetweenDelimiters([Forcast Version], "V", "-")) - 1, 01,0,0,0 ))
& "-" & Number.ToText( Int64.From(Text.AfterDelimiter([Forcast Version], "-", 1))))
This is with DAX
Previous Version DAX =
VAR CurrentVersion = Data[Forcast Version]
VAR CurrentMonth = IFERROR ( MID ( CurrentVersion, 2, FIND ( "-", CurrentVersion, 1 ) - 2 ), BLANK ( ) )
RETURN
IF (
NOT ISBLANK ( CurrentMonth ),
VAR MonthNumber = IF ( CurrentMonth - 1 = 0, 12, CurrentMonth - 1 )
VAR MonthName = FORMAT ( DATE ( 1, MonthNumber, 1 ), "MMMM" )
VAR CurrentYear = VALUE ( RIGHT ( CurrentVersion, 4 ) )
VAR YearNumber = IF ( CurrentMonth - 1 = 0, CurrentYear - 1, CurrentYear )
RETURN
"V" & MonthNumber & "-" & MonthName & "-" & YearNumber
)
Hi @AlanP514
Here is the sample file with the solution
https://www.dropbox.com/t/1KmBvYEHyXMYUYB6
https://www.dropbox.com/t/Ufe2M7Z5O0hsZdpl
This is PQ solution
= Table.AddColumn(#"Promoted Headers", "Previous Version",
each if Int64.From(Text.BetweenDelimiters([Forcast Version], "V", "-")) -1 = 0
then "V12-December-" & Number.ToText( Int64.From(Text.AfterDelimiter([Forcast Version], "-", 1)) - 1 )
else "V" & Number.ToText( Int64.From(Text.BetweenDelimiters([Forcast Version], "V", "-")) - 1 )
& "-" & Date.MonthName (#datetime ( 1, Int64.From(Text.BetweenDelimiters([Forcast Version], "V", "-")) - 1, 01,0,0,0 ))
& "-" & Number.ToText( Int64.From(Text.AfterDelimiter([Forcast Version], "-", 1))))
This is with DAX
Previous Version DAX =
VAR CurrentVersion = Data[Forcast Version]
VAR CurrentMonth = IFERROR ( MID ( CurrentVersion, 2, FIND ( "-", CurrentVersion, 1 ) - 2 ), BLANK ( ) )
RETURN
IF (
NOT ISBLANK ( CurrentMonth ),
VAR MonthNumber = IF ( CurrentMonth - 1 = 0, 12, CurrentMonth - 1 )
VAR MonthName = FORMAT ( DATE ( 1, MonthNumber, 1 ), "MMMM" )
VAR CurrentYear = VALUE ( RIGHT ( CurrentVersion, 4 ) )
VAR YearNumber = IF ( CurrentMonth - 1 = 0, CurrentYear - 1, CurrentYear )
RETURN
"V" & MonthNumber & "-" & MonthName & "-" & YearNumber
)
Super Bro , amazing soution
@AlanP514 Good day,
Do we have an index column that helps us to identify the previous version, If the answer is yes this can be achieved.
Regards,
Atma.
Hai @Dhacd
yes I had created a version flag
This is a dynamic version flag that I created based on the forecast version column 21 is denoting the year and delimiter 0 and 5 is the version same for 2106
If you change the data type of version flag to integer this is a piece of cake.
Use the below formula as a calculated column.
My bad can you remove that ")" which is highlighted below.
Try removing the last ")" after the maxindex, If it is still not working please paste the code and I will run it from my side and check again.
If that is not working try the code sample below.
Prev =
var maxindex= maxx(FILTER('Sales forecast',EARLIER('Sales forecast'[Version Flag])>'Sales forecast'[Version Flag]),'Sales forecast'[Version Flag])
return CALCULATE(SELECTEDVALUE('Sales forecast'[Forecast Version]),all('Sales forecast'),'Sales forecast'[Version Flag]=maxindex)
Join the community in Stockholm for expert Microsoft Fabric learning including a very exciting keynote from Arun Ulag, Corporate Vice President, Azure Data.
Check out the August 2024 Power BI update to learn about new features.
User | Count |
---|---|
110 | |
80 | |
66 | |
53 | |
52 |
User | Count |
---|---|
121 | |
117 | |
77 | |
64 | |
63 |