You could generate a calculation in your cube using ParallelPeriod. Then you can use your Date dimension to slice and dice the data as you need. A simple example would be
SUM(
PARALLELPERIOD([Date].[<Hierarchy>].[Year], 1, [Date].[<Hierarchy>].CURRENTMEMBER)
, [Measures].[<Your Measure>])
)
for previous year comparison at any level of your date hierarchy.
For a more comprehensive date based MDX solution, check out Marco Russo's DateTool dimension here and adapt to your needs.
Hope that helps 🙂