- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

Top product combinations sold - DAX measure
I need to create a Measure that shows which Two-Product Combinations are most common.
For example, here A,B is most common, because 3 customers have it.
Although D is the most common product with 4 customers, but I don't want to see it in my measure, because it is sold alone, not as a combination.
So I need my measure to return "A,B"
Thanks!
Customer | Product |
111 | A |
111 | B |
111 | C |
222 | X |
222 | Y |
222 | Z |
333 | D |
444 | D |
555 | D |
666 | D |
777 | A |
777 | B |
888 | A |
888 | B |
999 | X |
999 | Y |
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

Basket analysis is probably the best way (didn't confirm), but here is another approach. Put this measure in a card to get "A,B" as the result.
Highest Combo =
VAR cj1 =
DISTINCT ( SELECTCOLUMNS ( Products, "Product1", Products[Product] ) )
VAR cj2 =
DISTINCT ( SELECTCOLUMNS ( Products, "Product2", Products[Product] ) )
VAR cj =
FILTER ( CROSSJOIN ( cj1, cj2 ), [Product1] <> [Product2] )
VAR summary =
ADDCOLUMNS (
cj,
"@total",
VAR prod1 = [Product1]
VAR prod2 = [Product2]
RETURN
COUNTROWS (
FILTER (
ALL ( Products[Customer] ),
AND (
NOT ( ISBLANK ( CALCULATE ( COUNTROWS ( Products ), Products[Product] = prod1 ) ) ),
NOT ( ISBLANK ( CALCULATE ( COUNTROWS ( Products ), Products[Product] = prod2 ) ) )
)
)
)
)
VAR productslist =
CONCATENATEX (
TOPN ( 1, summary, [@total], DESC, [Product1], ASC ),
[Product1] & ", " & [Product2]
)
RETURN
productslist
If this works for you, please mark it as the solution. Kudos are appreciated too. Please let me know if not.
Regards,
Pat
Did I answer your question? Mark my post as a solution! Kudos are also appreciated!
To learn more about Power BI, follow me on Twitter or subscribe on YouTube.
@mahoneypa HoosierBI on YouTube
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

Hi,
You may download my PBI file from here. With some more effort, i may be able to get A&B but you may take it forward from here.
Hope this helps.
Regards,
Ashish Mathur
http://www.ashishmathur.com
https://www.linkedin.com/in/excelenthusiasts/
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

Hi,
You may download my PBI file from here. With some more effort, i may be able to get A&B but you may take it forward from here.
Hope this helps.
Regards,
Ashish Mathur
http://www.ashishmathur.com
https://www.linkedin.com/in/excelenthusiasts/
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

@michaelsh , I think this has to do with market basket analysis
https://finance-bi.com/power-bi-basket-analysis/
https://businessintelligist.com/2017/03/27/market-basket-analysis-using-power-bi/
https://www.daxpatterns.com/usecases/market-basket-analysis/
https://www.mssqltips.com/sqlservertip/5428/market-basket-analysis-in-r-and-power-bi/
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

Yes, this is a Basket Analysis question.
I have researched all these links before I posted. All these topics are similar but they are not answering my case.
I am looking for a specific solution for my case, please.
Thank you
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

Basket analysis is probably the best way (didn't confirm), but here is another approach. Put this measure in a card to get "A,B" as the result.
Highest Combo =
VAR cj1 =
DISTINCT ( SELECTCOLUMNS ( Products, "Product1", Products[Product] ) )
VAR cj2 =
DISTINCT ( SELECTCOLUMNS ( Products, "Product2", Products[Product] ) )
VAR cj =
FILTER ( CROSSJOIN ( cj1, cj2 ), [Product1] <> [Product2] )
VAR summary =
ADDCOLUMNS (
cj,
"@total",
VAR prod1 = [Product1]
VAR prod2 = [Product2]
RETURN
COUNTROWS (
FILTER (
ALL ( Products[Customer] ),
AND (
NOT ( ISBLANK ( CALCULATE ( COUNTROWS ( Products ), Products[Product] = prod1 ) ) ),
NOT ( ISBLANK ( CALCULATE ( COUNTROWS ( Products ), Products[Product] = prod2 ) ) )
)
)
)
)
VAR productslist =
CONCATENATEX (
TOPN ( 1, summary, [@total], DESC, [Product1], ASC ),
[Product1] & ", " & [Product2]
)
RETURN
productslist
If this works for you, please mark it as the solution. Kudos are appreciated too. Please let me know if not.
Regards,
Pat
Did I answer your question? Mark my post as a solution! Kudos are also appreciated!
To learn more about Power BI, follow me on Twitter or subscribe on YouTube.
@mahoneypa HoosierBI on YouTube
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

Hi Pat, @mahoneypat
Do you hve any tips I could do the same but with combination of 3 products?
Best Regards,
Anita
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

Or how can I retrieve the table with eg. top 10 product combos within certain date frame selected on slicer?
Is that possible?

Helpful resources
Join us at the Microsoft Fabric Community Conference
March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!
Power BI Monthly Update - February 2025
Check out the February 2025 Power BI update to learn about new features.

Subject | Author | Posted | |
---|---|---|---|
05-22-2024 06:05 PM | |||
05-20-2024 06:04 AM | |||
12-12-2023 08:42 PM | |||
06-21-2024 07:23 AM | |||
05-29-2024 06:15 PM |
User | Count |
---|---|
87 | |
81 | |
53 | |
38 | |
35 |