Good evening @sgillmer
Please receive hereby a workout to calculate the occupation rate.
The used calculation is actual bookings [Room nights] divided by available capacity in room-days. Capacity is selected by (multiple) periods and multiplied by (multiple) selected rooms and sites.
PBIX attached:
Occupancy v4.pbix (1.6 MB)
Work out explained:
1. Adjusted the data model, adding a Lookup table with Rooms per Site with an unique key to connect to the fact table “Site Occupation”

-
Note 1 In my opinion, only three tables are needed to calculate the occupation, as presented below.
-
Note 2 The new lookup table should NOT be a calculated table out of the Site-Occupation table, (as I did): if rooms of a site or a complete site are not booked, those will not be in the lookup table, and those capacity would be missing, better manually import this lookup table.
-
Note 3: better NOT make Many to Many table relations, as was between Site_Inv and Site_Occ, unless you know exactly what it will be doing.
The data model used for occupation rate calculation:
2. Set up the measures to calculate the occupation rate
Actual bookings
Used capacity (booked nights) = SUM(Site_Occupation[Room Nights])
Capacity calculation
Capacity in Room-Days = countrows(SUMMARIZE(DatesLT,DatesLT[Date])) --count the selected dates from the date table, count also for a combi of DayOfMonth and Year (eg 31 and 2021 gives a count of 7 only)
* COUNTROWS( 'LT Rooms per Site') --multiplied by the available unique rooms of selected sites
Occupation rate:
Occupation % = DIVIDE( [Used capacity (booked nights)], [Capacity in Room-Days], 0)`
3. A possible report with two selections, looks as follows:
First: Limited selection on room code 5, DayOfMonth is 31, the year is 2021, and the Site is Krüger Gate, with a used capacity of 3 versus a capacity of 7 (from 7 days per year with month end day 31)
Second: selection on Site Krüger Gate, year 2021 with a Used capacity of 2.353 vs a capacity of 10.950 room days
=========
I hope this answers your question, please let me know if you have further questions or remarks.
Kind regards,
Jan van der Wind