Forum Discussion
DAX Function for 'Customers also bought'
- 9 years ago
Hi JosephJC
A Basket Analysis pattern will work for this.
http://www.daxpatterns.com/basket-analysis/
Here's a dummy example pbix
First create a 'Filter Product' table with an inactive relationship with your Orders table:
You use the 'Filter Product' table to select the product(s) to be analysed.
Then, assuming you have created your base measures for Quantity/Price etc, you create 'basket analysis' measures with this pattern (taken from DAX Patterns):
Order Quantity for Customers who bought Filter Product = CALCULATE ( [Order Quantity], CALCULATETABLE ( SUMMARIZE ( Orders, Orders[Customer] ), ALL ( Orders[Product] ), USERELATIONSHIP ( Orders[Product], 'Filter Product'[Filter Product] ) ) )This measure will return the Order Quantity for any Products purchased by Customers who purchased the products selected in 'Filter Product'.
Hopefully this or something similar meets your needs.
Cheers,
Owen
Hi Owen, I know it's an old post but it was quite helpful.
Is there a way to filter out the product you choose in the filter? I want to see all OTHER products (assuming it should work on multiple selections too)
AlexaderMilland Glad to hear it 🙂
Just to clarify, since this is a Basket Analysis example, did you want the 'Filter Product' selection to be inverted?
For example, do you want to make the "primary" Product selection on one slicer, then make the 'Filter Product' selection on another slicer, and have a measure that returns Order Quantity for Customers that purchased the "primary" Product selection but not 'Filter Product' selection?
Regards,
Owen
- AlexaderMilland4 years ago
Helper III
I want the filter production selection that i make on the slicer to not show up on table that i return afterwards.
E.g. i want to see all OTHER products in the baskets that contain product X , but not show product X itself.
Right now when i click for example "pants", It might say
Pants : 5
Socks : 3
Shoes : 2
Hats : 1
I want it to just say
Socks : 3
Shoes : 2
Hats : 1
(Product X is actually going to be a long selection in my model, but should be similar solution)- OwenAuger4 years ago
Super User
Sure thing 🙂
I have updated my sample PBIX with an example - attached.
In this model, I have also created 'Product' and Customer dimensions to better represent a typical model, and adjusted the measures accordingly.
Here is one of the new measures, that returns Quantity for Customers who bought the selected "Filter Products", but only for products other than the selection:
Order Quantity for Customers who bought Filter Product (excl Filter Product) = CALCULATE ( [Order Quantity], CALCULATETABLE ( SUMMARIZE ( Orders, Customer[Customer] ), ALL ( 'Product' ), USERELATIONSHIP ( Orders[Product], 'Filter Product'[Filter Product] ) ), KEEPFILTERS ( EXCEPT ( VALUES ( 'Product'[Product] ), VALUES ( 'Filter Product'[Filter Product] ) ) ) )Regards,
Owen
- AlexaderMilland4 years ago
Helper III
Works like a charm!
- Ashish_Mathur4 years ago
Super User
Hi,
Just for my information, why do you not want to see Pants: 5? Also, i think the way to depict data is in the form of a matrix visual.
- AlexaderMilland4 years ago
Helper III
Hi Ashish,
2 reasons mainly.
- My actual model is not just a selection of brands, it's a selection of 100 products compared to the remaining 50.000, so it might clutter up.
- It's going to be a comparrison between 100 products and another 100 products, so it should be easier to compare if the selected products themselves do not appear.