Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Microsoft is giving away 50,000 FREE Microsoft Certification exam vouchers. Get Fabric certified for FREE! Learn more

Reply
JadeM
Frequent Visitor

Help with aggregated target performance measures, blank values and incorrect results

Hi all,

 

I have a problem with making a summary table for a power BI report I have.

 

 

I want to make a summary table that looks similar to this:

 

Target DescriptionTargetPerformance
Reduce fossil fuels-50%-44%

Reduce heating

-40%-43%
Reduce paper-10%-20%
Reduce waste-60%-50%
Recycle 80% of waste80%55%
Reduce landfill to 5% of waste5%15%
50% of cars to be electric50%49%

 

The issue is that the types of targets that need to be in this table are different. For the first four, it is a simple reduction from year one. For this I have a measure [Performance] which works correctly in all charts.

 

For the recycling and landfill targets I have had to calculate what percentage recycling/landfill is of all waste, I have used this measure (landfill measure has the same set up):

 

 

 

 

 

Recycling =
VAR Recycling = CALCULATE(SUM('Fact'[Actual], 'Fact'[Value] = "Total recycling"
VAR TotalWaste = CALCULATE(SUM('Fact'[Actual], 'Fact'[Value] IN {"Total recycling", "Total landfill", "Total incinerated"})

RETURN
IF(TotalWaste > 0, Recycling / TotalWaste, BLANK())

 

 

 

 


For the car target I have had to calculate the % based on all types of cars, as below:

 

 

 

 

eCars =
VAR eCar = CALCULATE(SUM('Fact'[Actual], 'Fact'[Sub Target] IN {"Small electric car", "Large electric car"}
VAR TotalCars = CALCULATE(SUM('Fact'[Actual], 'Fact'[Sub Target] IN {"Small electric car", "Large electric car", "Small petrol car", "Large electric car", "Small diesel car"}

RETURN
IF(TotalCars > 0, eCar / TotalCars, BLANK()

 

 

 

 

 

 

So to combine all my measure to show performance in one column in my table (as above) I have made this measure:

 

 

 

 

Overall Performance =
VAR TargetName = SELECTEDVALUE('Overview'[Target Description])
VAR eCar = [eCar]
VAR Recycling = [Recycling]
VAR Landfill = [Landfill]
VAR OtherTarget = [Performance]

RETURN
SWITCH(
TRUE(),
TargetName = "50% of cars to be electric", eCar,
TargetName = "Recycle 80% of waste", Recycling,
TargetName = "Reduce landfill to 5% of waste", Landfill,
OtherTarget)

 

 

 

 

 

 

The issue I am having is that in the matrix the values of the cars, landfill and recycling rows are blank.

 

I think this is because of a lack of relationship! But I cannot figure out how to make a relationship given the fact that these targets are calculated using numerous rows!

 

Here is a basic view of the model:

Screenshot 2025-03-06 at 20.41.40.png

Many to one relationship on the Fact[Value] and Overview[Short target] columns.

Note! There is not a matching value in Fact[Value] for the cars, landfill and recycling targets as they are calculated using many columns (eg small electric car, large electric car etc)

 

Here is sample data:

Fact:

ValueSub TargetActualBaseline
HeatingElectricty4001000
HeatingGas500900
Electric carSmall electric car10020
Electric CarLarge electric car452
CarSmall petrol car5550
CarLarge petrol car660900
WasteTotal recycling450300
WasteTotal landfill5099
WasteTotal incinerated11025

 

 

Then the overview table:

Short targetTarget descriptionTarget
GHGReduce fossil fuels-50%
Heating

Reduce heating

-40%
PaperReduce paper-10%
WasteReduce waste-60%
RecyclingRecycle 80% of waste80%
LandfillReduce landfill to 5% of waste5%
Cars50% of cars to be electric50%

 

So you can see that there is not a matching value for recycling, landfill and cars in the 'Fact' table. I believe this is causing the blank value - as PBI cannot match everythign together.

 

 

Is there any way of making the table in the design I would like? adding a new column, changing the Overall Performance measure? any help appriciated. Thanks!

1 ACCEPTED SOLUTION
v-jingzhan-msft
Community Support
Community Support

Hi   @JadeM 

 

Yes, the lack of matching values is indeed the cause of blanks. To solve this problem, there are two ways.

 

The first is to add a new column to the Fact table to group categories without matching values into matching value categories, such as classifying small electric car, large electric car as Cars. In this way, the values in the new column and the [Short target] values in the Overview table can exactly match, and then the relationship is based on the new column and the [Short target] column. For example, 

vjingzhanmsft_0-1741315888514.png

 

Another way is to modify the measures. Remove the filtering of existing relationship from the measures, and then filter the matching values by expressions. For example, 

Recycling = 
VAR Recycling = CALCULATE(SUM('Fact'[Actual]), REMOVEFILTERS('Fact'[Value]), 'Fact'[Value] = "Total recycling" )
VAR TotalWaste = CALCULATE(SUM('Fact'[Actual]), REMOVEFILTERS('Fact'[Value]), 'Fact'[Value] IN {"Total recycling", "Total landfill", "Total incinerated"}) 
RETURN 
IF(TotalWaste > 0, Recycling / TotalWaste, BLANK())

Modify [Recycling], [Landfill] and [eCar] measures similarly. 

 

Hope this would be helpful. 

 

Best Regards,
Jing
If this post helps, please Accept it as Solution to help other members find it. Appreciate your Kudos!

 

 

View solution in original post

1 REPLY 1
v-jingzhan-msft
Community Support
Community Support

Hi   @JadeM 

 

Yes, the lack of matching values is indeed the cause of blanks. To solve this problem, there are two ways.

 

The first is to add a new column to the Fact table to group categories without matching values into matching value categories, such as classifying small electric car, large electric car as Cars. In this way, the values in the new column and the [Short target] values in the Overview table can exactly match, and then the relationship is based on the new column and the [Short target] column. For example, 

vjingzhanmsft_0-1741315888514.png

 

Another way is to modify the measures. Remove the filtering of existing relationship from the measures, and then filter the matching values by expressions. For example, 

Recycling = 
VAR Recycling = CALCULATE(SUM('Fact'[Actual]), REMOVEFILTERS('Fact'[Value]), 'Fact'[Value] = "Total recycling" )
VAR TotalWaste = CALCULATE(SUM('Fact'[Actual]), REMOVEFILTERS('Fact'[Value]), 'Fact'[Value] IN {"Total recycling", "Total landfill", "Total incinerated"}) 
RETURN 
IF(TotalWaste > 0, Recycling / TotalWaste, BLANK())

Modify [Recycling], [Landfill] and [eCar] measures similarly. 

 

Hope this would be helpful. 

 

Best Regards,
Jing
If this post helps, please Accept it as Solution to help other members find it. Appreciate your Kudos!

 

 

Helpful resources

Announcements
March PBI video - carousel

Power BI Monthly Update - March 2025

Check out the March 2025 Power BI update to learn about new features.

March2025 Carousel

Fabric Community Update - March 2025

Find out what's new and trending in the Fabric community.

"); $(".slidesjs-pagination" ).prependTo(".pagination_sec"); $(".slidesjs-pagination" ).append("
"); $(".slidesjs-play.slidesjs-navigation").appendTo(".playpause_sec"); $(".slidesjs-stop.slidesjs-navigation").appendTo(".playpause_sec"); $(".slidesjs-pagination" ).append(""); $(".slidesjs-pagination" ).append(""); } catch(e){ } /* End: This code is added by iTalent as part of iTrack COMPL-455 */ $(".slidesjs-previous.slidesjs-navigation").attr('tabindex', '0'); $(".slidesjs-next.slidesjs-navigation").attr('tabindex', '0'); /* start: This code is added by iTalent as part of iTrack 1859082 */ $('.slidesjs-play.slidesjs-navigation').attr('id','playtitle'); $('.slidesjs-stop.slidesjs-navigation').attr('id','stoptitle'); $('.slidesjs-play.slidesjs-navigation').attr('role','tab'); $('.slidesjs-stop.slidesjs-navigation').attr('role','tab'); $('.slidesjs-play.slidesjs-navigation').attr('aria-describedby','tip1'); $('.slidesjs-stop.slidesjs-navigation').attr('aria-describedby','tip2'); /* End: This code is added by iTalent as part of iTrack 1859082 */ }); $(document).ready(function() { if($("#slides .item").length < 2 ) { /* Fixing Single Slide click issue (commented following code)*/ // $(".item").css("left","0px"); $(".item.slidesjs-slide").attr('style', 'left:0px !important'); $(".slidesjs-stop.slidesjs-navigation").trigger('click'); $(".slidesjs-previous").css("display", "none"); $(".slidesjs-next").css("display", "none"); } var items_length = $(".item.slidesjs-slide").length; $(".slidesjs-pagination-item > button").attr("aria-setsize",items_length); $(".slidesjs-next, .slidesjs-pagination-item button").attr("tabindex","-1"); $(".slidesjs-pagination-item button").attr("role", "tab"); $(".slidesjs-previous").attr("tabindex","-1"); $(".slidesjs-next").attr("aria-hidden","true"); $(".slidesjs-previous").attr("aria-hidden","true"); $(".slidesjs-next").attr("aria-label","Next"); $(".slidesjs-previous").attr("aria-label","Previous"); //$(".slidesjs-stop.slidesjs-navigation").attr("role","button"); //$(".slidesjs-play.slidesjs-navigation").attr("role","button"); $(".slidesjs-pagination").attr("role","tablist").attr("aria-busy","true"); $("li.slidesjs-pagination-item").attr("role","list"); $(".item.slidesjs-slide").attr("tabindex","-1"); $(".item.slidesjs-slide").attr("aria-label","item"); /*$(".slidesjs-stop.slidesjs-navigation").on('click', function() { var itemNumber = parseInt($('.slidesjs-pagination-item > a.active').attr('data-slidesjs-item')); $($('.item.slidesjs-slide')[itemNumber]).find('.c-call-to-action').attr('tabindex', '0'); });*/ $(".slidesjs-stop.slidesjs-navigation, .slidesjs-pagination-item > button").on('click keydown', function() { $.each($('.item.slidesjs-slide'),function(i,el){ $(el).find('.c-call-to-action').attr('tabindex', '-1'); }); var itemNumber = parseInt($('.slidesjs-pagination-item > button.active').attr('data-slidesjs-item')); $($('.item.slidesjs-slide')[itemNumber]).find('.c-call-to-action').attr('tabindex', '0'); }); $(".slidesjs-play.slidesjs-navigation").on('click', function() { $.each($('.item.slidesjs-slide'),function(i,el){ $(el).find('.c-call-to-action').attr('tabindex', '-1'); }); }); $(".slidesjs-pagination-item button").keyup(function(e){ var keyCode = e.keyCode || e.which; if (keyCode == 9) { e.preventDefault(); $(".slidesjs-stop.slidesjs-navigation").trigger('click').blur(); $("button.active").focus(); } }); $(".slidesjs-play").on("click",function (event) { if (event.handleObj.type === "click") { $(".slidesjs-stop").focus(); } else if(event.handleObj.type === "keydown"){ if (event.which === 13 && $(event.target).hasClass("slidesjs-play")) { $(".slidesjs-stop").focus(); } } }); $(".slidesjs-stop").on("click",function (event) { if (event.handleObj.type === "click") { $(".slidesjs-play").focus(); } else if(event.handleObj.type === "keydown"){ if (event.which === 13 && $(event.target).hasClass("slidesjs-stop")) { $(".slidesjs-play").focus(); } } }); $(".slidesjs-pagination-item").keydown(function(e){ switch (e.which){ case 37: //left arrow key $(".slidesjs-previous.slidesjs-navigation").trigger('click'); e.preventDefault(); break; case 39: //right arrow key $(".slidesjs-next.slidesjs-navigation").trigger('click'); e.preventDefault(); break; default: return; } $(".slidesjs-pagination-item button.active").focus(); }); }); // Start This code is added by iTalent as part of iTrack 1859082 $(document).ready(function(){ $("#tip1").attr("aria-hidden","true").addClass("hidden"); $("#tip2").attr("aria-hidden","true").addClass("hidden"); $(".slidesjs-stop.slidesjs-navigation, .slidesjs-play.slidesjs-navigation").attr('title', ''); $("a#playtitle").focus(function(){ $("#tip1").attr("aria-hidden","false").removeClass("hidden"); }); $("a#playtitle").mouseover(function(){ $("#tip1").attr("aria-hidden","false").removeClass("hidden"); }); $("a#playtitle").blur(function(){ $("#tip1").attr("aria-hidden","true").addClass("hidden"); }); $("a#playtitle").mouseleave(function(){ $("#tip1").attr("aria-hidden","true").addClass("hidden"); }); $("a#play").keydown(function(ev){ if (ev.which ==27) { $("#tip1").attr("aria-hidden","true").addClass("hidden"); ev.preventDefault(); return false; } }); $("a#stoptitle").focus(function(){ $("#tip2").attr("aria-hidden","false").removeClass("hidden"); }); $("a#stoptitle").mouseover(function(){ $("#tip2").attr("aria-hidden","false").removeClass("hidden"); }); $("a#stoptitle").blur(function(){ $("#tip2").attr("aria-hidden","true").addClass("hidden"); }); $("a#stoptitle").mouseleave(function(){ $("#tip2").attr("aria-hidden","true").addClass("hidden"); }); $("a#stoptitle").keydown(function(ev){ if (ev.which ==27) { $("#tip2").attr("aria-hidden","true").addClass("hidden"); ev.preventDefault(); return false; } }); }); // End This code is added by iTalent as part of iTrack 1859082
Top Solution Authors