我试图在Power BI上显示一个图表,以按时间段显示活动会话的数量。
我有一组停车场数据,需要显示一天中不同时间在停车场的汽车数量。
数据集示例:
+----+------------+----------+
| ID | Start Time | End Time |
+====+============+==========+
| 1 | 1pm | 2pm |
| 2 | 1pm | 3pm |
| 3 | 2pm | 3pm |
| 4 | 3pm | 4pm |
| 5 | 3pm | 5pm |
| 6 | 3pm | 6pm |
| 7 | 5pm | 7pm |
| 8 | 5pm | 7pm |
| 9 | 6pm | 7pm |
| 10 | 6pm | 8pm |
+----+------------+----------+
我根据示例数据集Picture
绘制了一个我想在Power Point中创建的图表的示例。注意:我之前曾问过这个问题,但没有得到答复,然后我尝试再次询问,但在我需要的内容上(现在)更加详细
注2:我看到了类似的问题,但是DAX语句具有我没有的列名(并且给出的大多数示例都在处理日期,我仅使用时间):
( 'Calendar'[Date] )
在
Measure =
VAR d =
SELECTEDVALUE ( 'Calendar'[Date] )
RETURN
COUNTROWS (
FILTER (
Table1,
Table1[Start Date] <= d
&& (
ISBLANK ( Table1[End Date] )
|| Table1[End Date] > d
)
)
)
答案 0 :(得分:1)
您将需要一些DAX和几个额外的表。 表格:
不要在表之间建立任何关系。
添加以下措施:
Vehicles By Date And Time =
VAR MinTime = Min('Time'[Time])
VAR MaxTime = Max('Time'[Time])
VAR MinDate = Min('Date'[Date])
Var MaxDate = Max('Date'[Date])
RETURN
CALCULATE(DISTINCTCOUNT('Car Park'[Vehicle_No ]),
Filter('Car Park', TimeVALUE('Car Park'[Enter_Time]) <= MaxTime
&& TIMEVALUE('Car Park'[Leave_Time]) >= MinTime
&& TRUNC('Car Park'[Enter_Time]) <= MaxDate
&& TRUNC('Car Park'[Leave_Time]) >= MinDate))
注意:您必须检查此性能。对于较小的数据集,它对我来说效果很好。
此度量使您可以从日期表中选择日期范围,并从时间表中选择时间范围,然后将其用作参数来计算该时间段内存在的汽车数量。我看到了您关于仅使用时间和忽略日期的评论,但在此处添加了日期,以提供更好的解决方案。请注意,日期和时间是独立的,因此您可以说“给我所有在1月1日至4月16日期间停泊的汽车,仅在凌晨2点至上午11点之间的时间。”
相反,如果您想一起而不是分开使用日期和时间,则度量值应如下所示:
Vehicles By DateTime =
VAR MinTime = Min('Time'[Time])
VAR MaxTime = Max('Time'[Time])
VAR MinDate = Min('Date'[Date])
Var MaxDate = Max('Date'[Date])
Var MinDateTime = MinDate + MinTime
Var MaxDateTime = MaxDate + MaxTime
RETURN
CALCULATE(DISTINCTCOUNT('Car Park'[Vehicle_No ]),
Filter('Car Park', 'Car Park'[Enter_Time] <= MaxDateTime && 'Car Park'[Leave_Time] >= MinDateTime)
)
根据我的数据,我有6辆车。其中5个停在了4/4/2018,一个停在了4/10/2018。如果我选择的日期范围是1/10/2018-4/6/2018,并且小时范围是2am-11 am,那么我可以看到我的“按日期和时间划分的车辆”中有2辆汽车。这两辆车在选定日期范围内的某个日期的凌晨2点至11点之间停放。而如果我使用其他公式,我将计算5辆车,因为它正在寻找在1/10/2018 2:00:00 am和4/6/2018 11:59:00 am之间停放的汽车。
答案 1 :(得分:0)
您可以轻松地自己创建时间维度。由于只需要“整个”小时(而不是分钟),因此可以通过在主页选项卡上选择“输入数据”来进行此操作,然后可以手动创建小时数为0到23的表。 如果您需要包含分钟的“时间”维度,则可以使用DAX来实现,可以找到以下示例之一:here
之后,您只需要调整DAX并使用“时间”维度中的列即可。 希望这会有所帮助。