For a large data request 2-3 hrs is good for Datawarehouse.
Some things you could try. If its sales data I would guess monthly totals are key. Try breaking the request into smaller chunks.
weekly for example.
Also make sure you dont have any waste columns(data you ultimately do not use) this can speed things up.
Worst case you get weekly within tens of minutes then start your build into what ever master you have adding others as they arrive.
GLTU