maybe one solution to create this 4 week average field in the load statement could be:
LOAD ..., If(Seller=Previous(Previous(Previous(Seller))) and product=Previous(Previous(Previous(product))), RangeAvg(UnitSales, Previous(UnitSales), Previous(Previous(UnitSales)), Previous(Previous(Previous(UnitSales))))) as UnitSales4WeekAvg From Your Source Order By Seller, product, week;
Instead of the nested Previous() functions you might as well use Peek(UnitSales), Peek(UnitSales,-2), Peek(UnitSales,-3) ...
Despite your performance doubts you should try to implement a front end solution first as it should deliver a more dynamic experience than this precalculated aggregation.
hope this helps