我有一个名为 Legal 的表,其中包含餐厅 ID、开业日期和结束日期列。该表通过 Calendar[Date] 与 Calendar 有两个非活动关系。
我正在尝试计算某个日期范围内打开的 ID 数量。如果 ID 有 Opening 但没有 Closing 或如果 Closed 小于分析时间,则认为 ID 是开放的;如果截止日期晚于分析日期,则关闭。
到目前为止我是这样计算的:
Opening =
CALCULATE(
COUNT(Legal[Restaurant ID]),
Legal[Opening date]<>BLANK(),
USERELATIONSHIP('Calendar'[Date],Legal[Opening date]),
FILTER('Calendar','Calendar'[Date]<=TODAY()),
FILTER(ALL(Legal),Legal[Opening date] = PREVIOUSMONTH('Calendar'[Date]))
)
Closing =
CALCULATE(
COUNT(Legal[Restaurant ID]),
USERELATIONSHIP('Calendar'[Date],Legal[Closing]),
FILTER('Calendar','Calendar'[Date]<=TODAY())
)
Net = [Opening] - [Closing]
TotalOpen =
VAR MaxCalendar = MAX(Calendar[Date])
VAR MaxSalesMonth = CALCULATE(MAX('Calendar'[Month]), ALL('Calendar'), 'Calendar'[Date] = MaxCalendar)
VAR MinCalendar = CALCULATE(MIN(Legal[Opening date]), REMOVEFILTERS('Calendar'))
VAR Restaurants =
CALCULATE([Net],
DATESBETWEEN('Calendar'[Date], MinCalendar, MaxCalendar),
USERELATIONSHIP(Legal[Restaurant ID], 'Restaurants Dim'[Restaurant ID])
)
RETURN
IF(MAX('Calendar'[Month]) = MaxSalesMonth, Restaurants, BLANK())
我尝试使用
FILTER(ALL(Legal), Legal[Opening date] = PREVIOUS(Legal[Opening date])
来计算上个月打开的ID数量。
这个想法是,当我在表中分析这个时,我想检索上个月我打开的 ID 总数,如下所示:
月 | 全部开放 | 上个月开放总数 |
---|---|---|
一月 | 100 | 99 |
二月 | 103 | 100 |
三月 | 105 | 103 |
四月 | 102 | 105 |
用这个解决了
Total Open Previous Month =
VAR MaxCalendar = MAX(Calendar[Date])
VAR MinCalendarPreviousMonth = CALCULATE(MIN(Calendar[Date]), PREVIOUSMONTH(Calendar[Date]))
VAR MaxCalendarPreviousMonth = CALCULATE(MAX(Calendar[Date]), PREVIOUSMONTH(Calendar[Date]))
VAR RestaurantsPreviousMonth =
CALCULATE(
[Net],
DATESBETWEEN(Calendar[Date], MinCalendarPreviousMonth, MaxCalendarPreviousMonth),
USERELATIONSHIP(Legal[Opening date], Calendar[Date])
)
RETURN
RestaurantsPreviousMonth
该度量将根据 Legal 表的打开日期和 Calendar 表之间的关系来计算上个月打开的 ID 的数量。确保您的日历表包含完整的日期范围,包括上个月的日期,以便准确计算。
然后,您可以在表中使用此度量值以及当月的总开放计数。您的表格应显示所需的输出,其中显示每个月的开放 ID 总数以及上个月的开放 ID 总数。