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.
Data is mainly indicators and year of publication - table SDG.
I have a table called 'Old' that makes the % of availability change, because it considers only X years old.
On the pbix I upload here I have a page with a table with Country and %.
I need to know:
- Number of countries with % < 25
- Number of countries with % between 25 and 50
- Number of countries with % between 50 and 75
- Number of countries with % > 75
And these numbers will move when the threshold year (Old value) moves, so it has to be a measure.
Can you figure it out? Is it even possible? Please help!
Solved! Go to Solution.
Hey @Anonymous ,
as your measure always needs a filtercontext, you have to create that table internally in the measure and then count the rows with the desired criteria.
The following should work for the 25%:
025 =
-- Creates a table with Geographic area and the % measures
VAR vBaseTable =
ADDCOLUMNS (
VALUES ( SDG[Geographic area] ),
"@%", [%]
)
-- Then you filter that table to the rows where % < 0.25
VAR vFilterdTable = FILTER ( vBaseTable, [@%] < 0.25 )
RETURN
-- And then you sum the amount of rows that are left
SUMX ( vFilterdTable, 1 )
Then you have to add a second filer criteria for the amount 25-50%:
2550 =
VAR vBaseTable =
ADDCOLUMNS (
VALUES ( SDG[Geographic area] ),
"@%", [%]
)
VAR vFilterdTable = FILTER ( vBaseTable, [@%] >= 0.25 && [@%] < 0.5 )
RETURN
SUMX ( vFilterdTable, 1 )
And repeat the same for 50-75:
5075 =
VAR vBaseTable =
ADDCOLUMNS (
VALUES ( SDG[Geographic area] ),
"@%", [%]
)
VAR vFilterdTable = FILTER ( vBaseTable, [@%] >= 0.5 && [@%] < 0.75 )
RETURN
SUMX ( vFilterdTable, 1 )
And last but not least or > 75%:
75 =
VAR vBaseTable =
ADDCOLUMNS (
VALUES ( SDG[Geographic area] ),
"@%", [%]
)
VAR vFilterdTable = FILTER ( vBaseTable, [@%] >= 0.75)
RETURN
SUMX ( vFilterdTable, 1 )
Hey @Anonymous ,
that was close. But you have to add it to the vBaseTable as in the filtered the blanks already won't exist.
The following should work:
025 =
-- Creates a table with Geographic area and the % measures including blanks
VAR vBaseTable =
ADDCOLUMNS (
VALUES ( SDG[Geographic area] ),
"@%", IF([%] <> BLANK(), [%], BLANK())
)
-- Then you filter that table to the rows where % < 0.25 or BLANK
VAR vFilterdTable =
FILTER ( vBaseTable, [@%] < 0.25 || [@%] = BLANK() )
RETURN
-- And then you sum the amount of rows that are left
SUMX ( vFilterdTable, 1 )
Hi @Anonymous ,
Please try to modify your [Count of INDICATOR not older]:
Count of INDICATOR not older = var a=
CALCULATE(DISTINCTCOUNT('SDG'[INDICATOR]), FILTER(SDG,'SDG'[how old] < MAX(Old[Old])+1 )
)
return if(ISBLANK(a),0,a)
Then use the following measure:
Number of countries with % < 25 = var a =SUMMARIZE(SDG,SDG[Geographic area],"_%",[%]) return COUNTX(FILTER(a,[_%]<=0.25),SDG[Geographic area])+0
Number of countries with %between 25 and 50 = var a =SUMMARIZE(SDG,SDG[Geographic area],"_%",[%]) return COUNTX(FILTER(a,[_%]>0.25&&[_%]<=0.5),SDG[Geographic area])+0
Number of countries with %between 50 and 75 = var a =SUMMARIZE(SDG,SDG[Geographic area],"_%",[%]) return COUNTX(FILTER(a,[_%]>=0.5&&[_%]<0.75),SDG[Geographic area])+0
Number of countries with %between >75 = var a =SUMMARIZE(SDG,SDG[Geographic area],"_%",[%]) return COUNTX(FILTER(a,[_%]>=0.75),SDG[Geographic area])+0
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
Best Regards,
Dedmon Dai
Hey @Anonymous ,
as your measure always needs a filtercontext, you have to create that table internally in the measure and then count the rows with the desired criteria.
The following should work for the 25%:
025 =
-- Creates a table with Geographic area and the % measures
VAR vBaseTable =
ADDCOLUMNS (
VALUES ( SDG[Geographic area] ),
"@%", [%]
)
-- Then you filter that table to the rows where % < 0.25
VAR vFilterdTable = FILTER ( vBaseTable, [@%] < 0.25 )
RETURN
-- And then you sum the amount of rows that are left
SUMX ( vFilterdTable, 1 )
Then you have to add a second filer criteria for the amount 25-50%:
2550 =
VAR vBaseTable =
ADDCOLUMNS (
VALUES ( SDG[Geographic area] ),
"@%", [%]
)
VAR vFilterdTable = FILTER ( vBaseTable, [@%] >= 0.25 && [@%] < 0.5 )
RETURN
SUMX ( vFilterdTable, 1 )
And repeat the same for 50-75:
5075 =
VAR vBaseTable =
ADDCOLUMNS (
VALUES ( SDG[Geographic area] ),
"@%", [%]
)
VAR vFilterdTable = FILTER ( vBaseTable, [@%] >= 0.5 && [@%] < 0.75 )
RETURN
SUMX ( vFilterdTable, 1 )
And last but not least or > 75%:
75 =
VAR vBaseTable =
ADDCOLUMNS (
VALUES ( SDG[Geographic area] ),
"@%", [%]
)
VAR vFilterdTable = FILTER ( vBaseTable, [@%] >= 0.75)
RETURN
SUMX ( vFilterdTable, 1 )
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 |
---|---|
112 | |
100 | |
80 | |
64 | |
57 |
User | Count |
---|---|
146 | |
110 | |
93 | |
84 | |
67 |