I think the tables Product, Customer and Time has a 1:n relationship to table Sales.
So I would load in the first step the whole table Sales and LEFT JOIN the missing information from the other 3 tables, which are need for filter, into this Sales table. In the next step I filter this Sales table, remove the base table with all records. So that I have a Sales table only with the records I want have. Maybe remove the fields I Joined before into the table.
In the las step I load the 3 tables Product, Customer and Time, If I don’t want have all Products, Customer,.. I will reduce the data amount during load with the EXIST condition.
This is the way I want do it, but maybe an easier way exist.