You will most likely need to change your source data or use blending to generate a master list of products, then join the customers / sales to that.
What type of data source are you pulling from?
My concern to do this option is the size of the database, that is already too heavy. We use SQL Server.
Thank you for your help.
The problem with using the 'show empty columns' approach is that all of your products need to be contained within the data in your Tableau report. As soon as you look to exclude the products which have been sold, you're going to lose the ability to see those products for the customers who haven't purchased them and the entire show empty columns thing won't work.
This is a pretty straight forward query to write in the database. I'd push this to the database and render it in Tableau. I'm not sure there are any tricks in Tableau which will make this easier to process versus the database itself.