gpt4 book ai didi

powerbi - 随时间计算一系列事件并提取持续时间的百分比

转载 作者:行者123 更新时间:2023-12-05 05:46:39 24 4
gpt4 key购买 nike

我有一个数据集,用于存储有关房间可用性状态的事件。

例如,如果有人在早上 8:30 进入房间,我的表中会出现以下行:

 #   room  status    date 
--- ---- -------- -------------------
0 A1 OCCUPIED 2022-01-01 08:30:00

当此人离开房间时,会创建一个类似的事件。我的 table 看起来像这样:

 #   room  status     date 
--- ---- --------- -------------------
0 A1 OCCUPIED 2022-01-01 08:30:00
1 A1 AVAILABLE 2022-01-01 09:15:00

实际上,表中的条目更多,数据交织在一起。

 #   room  status     date 
--- ---- --------- -------------------
0 A1 OCCUPIED 2022-01-01 08:30:00 <--
1 B4 OCCUPIED 2022-01-01 08:32:00
2 C2 OCCUPIED 2022-01-01 08:41:00
3 A1 AVAILABLE 2022-01-01 09:15:00 <--
4 C2 AVAILABLE 2022-01-01 09:20:00
5 A1 OCCUPIED 2022-01-01 09:30:00 <--
6 B4 AVAILABLE 2022-01-01 10:00:00
7 A1 AVAILABLE 2022-01-01 12:00:00 <--

我目前正在寻找一种方法来从我的每个房间中提取可用性的百分比/持续时间,但我不知道如何继续。

我已经创建了一些措施:

// A measure to count the total of status
Count status = COUNT(myTable[status])

// A calculated measure for available ones
Total available = CALCULATE([count status], myTable[status]=="AVAILABLE")
// A calculated measure for occupied ones
Total occupied = CALCULATE([count status], myTable[status]=="OCCUPIED")

我已经有了一个日期层次结构,这意味着我可以更改粒度,从年到月,到工作日,到一天中的小时。我还可以应用过滤器来选择时间范围,例如 8:00 到 18:00。

问题是,我创建的度量只是计算给定时间段内发生的变化次数(下表中为小时数),但它们并未反射(reflect)每个事件的实际持续时间,这意味着我的图表实际上是错误的。

Current chart

如果我以我的房间A1为例,在实际配置中,我的图表是这样的:

            ___ ___ ___ ___ ___ ___ ___ ___
| 0 | | | | | | | |
available | | 50| | |100| | | |
| |___| | | | | | |
|100| | | | | | | |
occupied | | 50| | | 0 | | | |
|___|___|___|___|___|___|___|___|
8 9 10 11 12 13 14 15

  • 在第 8 列中,100% 被占用,因为数据集中有 1 个条目表示此状态,而 0 个条目表示“可用”。
  • 在第 9 列中,50-50 因为每个状态有 1 个条目(一个在 09:15,另一个在 09:30)
  • ...

我要找的结果是这个:

            ___ ___ ___ ___ ___ ___ ___ ___
| | 25| 0 | 0 | | | | |
available | 50|___| | |100|100|100|100|
|___| | | | | | | |
| | 75|100|100| | | | |
occupied | 50| | | | 0 | 0 | 0 | 0 |
|___|___|___|___|___|___|___|___|
8 9 10 11 12 13 14 15

  • 在第 8 列中,我会得到 50-50,因为房间在 08:00 到 08:30 之间可用,但后来有人住
  • 在第 9 列中,我会得到 75% 的占用率,因为房间仅在 09:15 到 09:30 之间可用
  • 在第 10 列中,我将 100% 占用
  • ...

是否有可能通过 DAX 度量获得它,或者我是否需要重组我的一些数据?

最佳答案

您的问题的解决方案是将计算列添加到您的源表中,该表具有同一房间中下一个事件的时间。这里的 Room_No 是您的类别列。

首先,按类别(按房间)添加索引

Event_asc = 
VAR Current_Category = Table[Category]
RETURN
RANKX (
FILTER (
Table,
Table[Category] = Current_Category
),
Table[DateTime], , ASC, Dense
)

然后添加这一列:

Event_Next_Time =
VAR Current_Category = Table[Category]
VAR CurIndex = Table[Event_asc]
VAR Result =
CALCULATE(
MAX( Table[DateTime] ),
Table[Category] = Current_Category
&& Table[Event_asc] = CurIndex + 1,
REMOVEFILTERS()
)
RETURN
Result

一旦你有了它,只需添加第三列来计算两个日期时间(Event 和 NextEvent)之间的差异。

Lapse = DATEDIFF( Table[DateTime], Table[TimeOfNextEvent], SECOND )

剩下的对你来说应该很容易:-)

关于powerbi - 随时间计算一系列事件并提取持续时间的百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71129551/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com