Join us at FabCon Atlanta from March 16 - 20, 2026, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.
Register now!To celebrate FabCon Vienna, we are offering 50% off select exams. Ends October 3rd. Request your discount now.
Imagine this:
Picture for illustration, not actually my datamodel.
I want to create a measure that counts the number of Holding Companies, a dimension with lower granularity than the customer_key dimension.
Here are the problems:
Under these restrictions, is it possible to write the Holding Company Count measure that will slice the correctly on the product dimensions?
Solved! Go to Solution.
I have tried the CROSSFILTER() function, and the performance doesn't seem as bad as I feared, so I will consider this problem solved for now.
I used it in the same way the bi-directional relationship guide illustrates:
Count of Holding Companies =
CALCULATE(
DISTINCTCOUNT(Customer[Holding Company]),
CROSSFILTER(
Customer[CustomerId],
Sales[CustomerId],
BOTH
)
)
This way, when the Product table filters the Sales table, it will also filter the Customer table in the measure.
It would be interesting to compare the "related distinct count" pattern here.
It should be logically equivalent to your measure, but I would be interested in how performance compares.
In this case it would be:
Count of Holding Companies =
VAR HoldingCompaniesFromSales =
SUMMARIZE ( Sales, Customer[Holding Company] )
VAR Result =
SUMX ( HoldingCompaniesFromSales, 1 )
RETURN
Result
It would be interesting to compare the "related distinct count" pattern here.
It should be logically equivalent to your measure, but I would be interested in how performance compares.
In this case it would be:
Count of Holding Companies =
VAR HoldingCompaniesFromSales =
SUMMARIZE ( Sales, Customer[Holding Company] )
VAR Result =
SUMX ( HoldingCompaniesFromSales, 1 )
RETURN
Result
I did some testing, and it seems like the 'related pattern' performed twice as good in my senario!
After clearing cashe in the desktop file, I ran the performance analyser and got these two results:
The 'Related pattern' uses your sugestion of SUMMARIZE alongside SUMX:
Count of Holding Companies =
VAR HoldingCompaniesFromSales =
SUMMARIZE ( Sales, Customer[Holding Company] )
VAR Result =
SUMX ( HoldingCompaniesFromSales, 1 )
RETURN
Result
While the 'Crossfilter' uses the CROSSFILTER function:
Count of Holding Companies =
CALCULATE(
DISTINCTCOUNT(Customer[Holding Company]),
CROSSFILTER(
Customer[CustomerId],
Sales[CustomerId],
BOTH
)
)
I have marked your suggestion as the a solution.
I have tried the CROSSFILTER() function, and the performance doesn't seem as bad as I feared, so I will consider this problem solved for now.
I used it in the same way the bi-directional relationship guide illustrates:
Count of Holding Companies =
CALCULATE(
DISTINCTCOUNT(Customer[Holding Company]),
CROSSFILTER(
Customer[CustomerId],
Sales[CustomerId],
BOTH
)
)
This way, when the Product table filters the Sales table, it will also filter the Customer table in the measure.
User | Count |
---|---|
98 | |
75 | |
74 | |
49 | |
26 |