Forum Discussion
Detect a Column value change and increment another value
Hi,
Whenever the version is changed in Table B, the Upgraded_sites in Table A should be incremented. Week is a filter. In this case, Week 2, 3 and 4 are selected. Table B shows, two sites in Australia has been upgraded. So, Upgraded_Sites in Table A shows 2 whereas none of the sites in Singapore is upgraded. So, upgraded_sites for SG in Table A shows 0. How do I create a measure for this?
Thanks.
Table A
Table B
11 Replies
- amitchandak
Super User
Prima_ , 2 new columns
new column in Table B =
change =
var _1= countx(filter(TableB, [country] = earlier([Country]) && [site] = earlier([site]) && [week] = earlier([week]) -1 && [verison] <> earlier([verison])), [verison])
return
if(isblank(_1),0,1)new column in tAble A
sumx(filter(TableA, TableA[Country] = TableB[Country]),[Change]) - Prima_
Resolver I
Thank you. Let me try it out!
- Icey
Community Support
Hi Prima_ ,
You may create two measures like below:
Version_is_Upgraded = VAR CurWeekVersion_ = MAX ( 'Table B'[version] ) VAR CurWeekVersion_Path = SUBSTITUTE ( CurWeekVersion_, ".", "|" ) VAR CurWeekVersion_1 = PATHITEM ( CurWeekVersion_Path, 1, INTEGER ) VAR CurWeekVersion_2 = PATHITEM ( CurWeekVersion_Path, 2, INTEGER ) VAR PreWeekVersion_ = CALCULATE ( MAX ( 'Table B'[version] ), FILTER ( ALLEXCEPT ( 'Table B', 'Table B'[Country], 'Table B'[Site_Name] ), 'Table B'[week] = MAX ( 'Table B'[week] ) - 1 ) ) VAR PreWeekVersion_Path = SUBSTITUTE ( PreWeekVersion_, ".", "|" ) VAR PreWeekVersion_1 = PATHITEM ( PreWeekVersion_Path, 1, INTEGER ) VAR PreWeekVersion_2 = PATHITEM ( PreWeekVersion_Path, 2, INTEGER ) RETURN IF ( PreWeekVersion_ <> BLANK (), ISAFTER ( CurWeekVersion_1, PreWeekVersion_1, ASC, CurWeekVersion_2, PreWeekVersion_2, ASC ) )Upgraded_Site_Count = CALCULATE ( DISTINCTCOUNT ( 'Table B'[Site_Name] ), FILTER ( 'Table B', [Version_is_Upgraded] ) ) + 0Note:
The "version" column's type is "Text". And I use SUBSTITUTE and PATHITEM functions to split version numbers in case you have more complex version numbers in your scenario.
In addition, ISAFTER is a boolean function that emulates the behavior of a 'Start At' clause and returns true for a row that meets all of the condition parameters.
Referencce: How to compare version numbers in DAX - Microsoft Power BI Community
For more details, please check the attached .pbix file.
Best Regards,
Icey
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
- Prima_
Resolver I
Thanks a lot Icey for the code and .pbix file. I am using Power BI Desktop Version: 2.73.5586.1501 32-bit (September 2019). I guess ISAFTER() funtion is not supported in that.
- Icey
Community Support
Hi Prima_ ,
You can also try this:
Version_is_Upgraded 2 = VAR CurWeekVersion_ = MAX ( 'Table B'[version] ) VAR CurWeekVersion_Path = SUBSTITUTE ( CurWeekVersion_, ".", "|" ) VAR CurWeekVersion_1 = PATHITEM ( CurWeekVersion_Path, 1, INTEGER ) VAR CurWeekVersion_2 = PATHITEM ( CurWeekVersion_Path, 2, INTEGER ) VAR PreWeekVersion_ = CALCULATE ( MAX ( 'Table B'[version] ), FILTER ( ALLEXCEPT ( 'Table B', 'Table B'[Country], 'Table B'[Site_Name] ), 'Table B'[week] = MAX ( 'Table B'[week] ) - 1 ) ) VAR PreWeekVersion_Path = SUBSTITUTE ( PreWeekVersion_, ".", "|" ) VAR PreWeekVersion_1 = PATHITEM ( PreWeekVersion_Path, 1, INTEGER ) VAR PreWeekVersion_2 = PATHITEM ( PreWeekVersion_Path, 2, INTEGER ) RETURN PreWeekVersion_ <> BLANK () && CurWeekVersion_1 > PreWeekVersion_1 || ( CurWeekVersion_1 = PreWeekVersion_1 && CurWeekVersion_2 > PreWeekVersion_2 )Best Regards,
Icey
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.