假设您将数据放在一个名为“Rentals”的表中
租金表包含以下信息(但不限于):
[地点] | [Rent_Start] | [Rent_End]
第一步:
创建日历表:
SELECTCOLUMNS(
GENERATESERIES(
MIN(Rentals[Rent_Start]);
MAX(Rentals[Rent_End])
);
"Date"; [Value]
)
将两个计算列添加到日历表 [Month Name] 和 [Month Number]
第 2 步:将出租表与新表中的日历交叉连接,添加一个标志列,指示该位置是否在使用中。在不使用位置时过滤行并选择您实际需要的列:
RunningTime =
SELECTCOLUMNS(
FILTER(
ADDCOLUMNS(
CROSSJOIN(Rentals; Calendar);
"In_Use";
IF([Date] >= [Rent_Start] && [Date] <= [Rent_End]; 1; blank() )
);
[In_Use] = 1
);
"Location"; [Location];
"Start"; [Rent_Start];
"End"; [Rent_End];
"Date"; [Date]
)
第 3 步:在 Calendar[Date] 和 RunningTime[Date] 列之间创建 1:* 关系。现在,您可以使用月份名称和带有运行时间的视觉表中的日历创建一个切片机[位置],您无法查看选择某个月份时使用的位置。
(需要月份数字才能按“正确”顺序而不是字母顺序对 [月份名称] 进行排序)
编辑1:让我们看看,据我所知,我认为我的代码可以满足您的需求。如果以下说明对您不起作用,请通过上传您的模型(或其示例)与我联系。此外,不知道您所说的不同房屋使用量和总入住率是什么意思。
据我从您的图像和文字中可以看出,我的 [Rent_Start] 和 [Rent_End] 对应于您的列 [start_date] 和 [end_date],两者均采用日期时间格式。所以我不明白问题是什么?
如果您只想知道有多少房屋在使用中,那么您需要此措施:
Houses in use =
DISTINCTCOUNT('RunningTime'[Location])
我的解决方案中需要这三列,尽管您可以拥有更多。
然后我最终得到一个如下所示的新表:
这个新表像这样链接到日历:
然后在可视表中,我使用“RunningTime”表中的 [Location]、[Start] 和 [End] 列。然后我根据 Calendar 表中的 Month_Name 创建了一个切片器,如下所示(注意:这张图片中没有选择月份):
如果我现在选择一月,我会得到以下信息:
如果我选择三月,我会得到以下信息: