In those cases, you can create dates at the most granular level for each record in your fact table, and then use those dates to create relationships to your Date table. In your case, that would be month start date and month end date. Once you have those relationships established, you can use the standard time intelligence functions down to the month level (or make some assumptions to allocate your monthly data down to the day level).
Here’s an example with quarters as the highest level of granularity (PBIX posted at bottom), applying the DATEADD function to calculate YoY% change in sales.
Hope this is helpful.
Total Sales LY =
CALCULATE ( [Total Sales], DATEADD ( Dates[Date], -1, YEAR ) )
YoY % Change =
VAR DeltaSales = [Total Sales] - [Total Sales LY]
[Total Sales] <> BLANK ()
&& [Total Sales LY] <> BLANK (),
DIVIDE ( DeltaSales, [Total Sales LY], 0 ),
eDNA Forum - Time Intelligence with Year and Q.pbix (568.2 KB)