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

Level up your Power BI skills this month - build one visual each week and tell better stories with data! Get started

Reply
ys034
Helper I
Helper I

Calculating market shares across year and country

Dear all,

I have 2 big problems with my market share dashboard and I am sure many market analysts faced this problem before, so I am really hoping for any advice.

 

I created a sample file to keep things simple.

We have sales data of:

3 Brands (a, b, c) in 2 Countries (Germany, France),  across 2 sales channels (online, offline), 2 Product Categories (1, 2) & from 2 years (2020, 2021).

 

So for example, sales for Germany in 2021 looked like this:

ys034_0-1641893283117.png

 

Now we want to see the market shares of each of the 3 brands across different market splits:

Our measures so far are:

 

Total Sales = SUM('DataTable'[Sales])

Grand Total Sales = CALCULATE(SUMX(VALUES('DataTable'),'DataTable'[Sales]),ALLSELECTED('DataTable'))

MarketShare = CALCULATE([Total Sales]/[Grand Total Sales])

 

Now we have a matrix table and some slicers to control the other dimensions:

ys034_1-1641893282587.png

 

This gives us the correct market shares for each brand in Germany in 2021 (Brand A has 37% market share in 2021). This works also fine if we want only the offline or online market shares (or respective Product Group shares).

 

Problem No.1:

 

But...when we choose both years to compare the market shares over time or when we want to see both countries, the market shares become all false:

ys034_2-1641893282584.png

 

 

ys034_3-1641893282601.png

 

The reason is that Power BI wrongly now takes both years together (or in the 2nd example both countries) as the respective total market and does not distinguish between the years and/or countries.

Can you please help?

 

Problem No.2:

 

Another issue for our final market share dashboard is the following. Suppose we are brand a, and we want to see our market shares only.

With the current setting it would just show 100% market share for each Country/Year because Power BI does not know that it needs to take all brand sales into account:

ys034_4-1641893282629.png

 

 

Thank you all very much in advance for your help!

 

The sample data can be downloaded here:

https://www.dropbox.com/s/l6rc3jqph1uwdf2/Market%20Share%20Test%20Data.pbix?dl=0

3 REPLIES 3
amitchandak
Super User
Super User

@ys034 , when you want year wise

Grand Total Sales = CALCULATE(SUMX(VALUES('DataTable'),'DataTable'[Sales]),filter(ALLSELECTED('DataTable'), 'DataTable'[Year] = max('DataTable'[Year])))

 

 

Year and brand wise (Brand in context/ visual), filter should work in above too


Grand Total Sales = CALCULATE(SUMX(VALUES('DataTable'),'DataTable'[Sales]),filter(ALLSELECTED('DataTable'), 'DataTable'[Year] = max('DataTable'[Year]))
,filter(ALLSELECTED('Item'), 'Item'[Brand] = max('Item'[Brand])) )

 

 

Share with Power BI Enthusiasts: Full Power BI Video (20 Hours) YouTube
Microsoft Fabric Series 60+ Videos YouTube
Microsoft Fabric Hindi End to End YouTube

Thank you for your help on year level and country level it works like it is now when I want to include it on brands

As you can see in the screenshot, the market share goes to 100 percent as soon as I select a brand.

 

ys034_0-1641905175806.pngys034_1-1641905288248.png

 

My Measure:
Grand Total Sales Brand = CALCULATE(SUMX(VALUES('DataTable'),'DataTable'[Sales]),filter(ALLSELECTED('DataTable'), 'DataTable'[Date].[Year] = max('DataTable'[Date].[Year])),FILTER(ALLSELECTED('DataTable'),'DataTable'[Brand] = MAX('DataTable'[Brand])))

 

 

Thank you all very much in advance for your help!

 

The sample data can be downloaded here:

https://www.dropbox.com/s/l6rc3jqph1uwdf2/Market%20Share%20Test%20Data.pbix?dl=0

 

@ys034 , if you add more levels or remove then use isinscope and make sure you include level above than that one

example

 

if(ISINSCOPE('DataTable'[Country]) ,  CALCULATE(SUMX(VALUES('DataTable'),'DataTable'[Sales]),filter(ALLSELECTED('DataTable'),'DataTable'[Country] =max('DataTable'[Country])   && year([Date]) = year(max([Date]))) ) , CALCULATE(SUMX(VALUES('DataTable'),'DataTable'[Sales]),filter(ALLSELECTED('DataTable'), year([Date]) = year(max([Date]))) ))

 

 

or

 

Grand Total Sales = if(ISINSCOPE('DataTable'[Country]) ,  CALCULATE(SUMX(VALUES('DataTable'),'DataTable'[Sales]),filter(ALLSELECTED('DataTable'),'DataTable'[Country] =max('DataTable'[Country])   && year([Date]) = year(max([Date]))) ) , CALCULATE(SUMX(VALUES('DataTable'),'DataTable'[Sales]),ALLSELECTED('DataTable'))) 

refer

https://www.kasperonbi.com/use-isinscope-to-get-the-right-hierarchy-level-in-dax/

Share with Power BI Enthusiasts: Full Power BI Video (20 Hours) YouTube
Microsoft Fabric Series 60+ Videos YouTube
Microsoft Fabric Hindi End to End YouTube

Helpful resources

Announcements
April Power BI Update Carousel

Power BI Monthly Update - April 2026

Check out the April 2026 Power BI update to learn about new features.

Fabric SQL PBI Data Days

Data Days 2026 coming soon!

Sign up to receive a private message when registration opens and key events begin.

New to Fabric survey Carousel

New to Fabric Survey

If you have recently started exploring Fabric, we'd love to hear how it's going. Your feedback can help with product improvements.

Power BI DataViz World Championships carousel

Power BI DataViz World Championships - June 2026

A new Power BI DataViz World Championship is coming this June! Don't miss out on submitting your entry.