在 Power BI 中按每个设备的最大和最小电压对充电周期进行分组

问题描述 投票:0回答:1

我有一个大型数据表,其中包含数百个远程设备的电压信息。这些设备每十分钟报告一次电压,并且每天充电。充电可以从前一天开始,一直持续到第二天午夜,然后才停止充电。

我想知道每个设备的电压和电压开始下降之前最高电压的时间戳(因为这表明它已停止充电)。

我还想知道最低时相对于上次最高时的电压和时间戳。

目标是确定每个电池每次充电后可以持续多长时间,然后停止工作/报告并需要再次充电。

我的许多糟糕的 DAX/PowerBI 尝试不值得发表评论。谁能帮助我实现这一目标?

期望的结果

+--------+------------------+------------------+--------------+-------------+
| device |  timestamp_high  |  timestamp_low   | voltage_high | voltage_low |
+--------+------------------+------------------+--------------+-------------+
|      1 | 03/12/2023 09:36 | 03/12/2023 22:11 | 27.73        | 23.77       |
|      2 | 03/12/2023 05:06 | 03/12/2023 17:41 | 27.75        | 23.44       |
|      3 | 03/12/2023 06:06 | 03/12/2023 22:11 | 27.63        | 26.38       |
|      4 | 03/12/2023 06:36 | 03/12/2023 23:02 | 27.45        | 23.45       |
|      1 | 03/12/2023 23:00 | 04/12/2023 23:11 | 28.73        | 23          |
+--------+------------------+------------------+--------------+-------------+

示例数据

+--------+---------------------+---------+------------+----------+
| device |      timestamp      | voltage |    date    |   time   |
+--------+---------------------+---------+------------+----------+
|      1 | 03/12/2023 09:36:00 | 27.73   | 03/12/2023 | 09:36:00 |
|      1 | 03/12/2023 10:36:00 | 27.09   | 03/12/2023 | 10:36:00 |
|      1 | 03/12/2023 18:18:00 | 25.09   | 03/12/2023 | 18:18:00 |
|      1 | 03/12/2023 21:12:00 | 23.99   | 03/12/2023 | 21:12:00 |
|      1 | 03/12/2023 22:11:00 | 23.77   | 03/12/2023 | 22:11:00 |
|      2 | 03/12/2023 05:06:00 | 27.75   | 03/12/2023 | 05:06:00 |
|      2 | 03/12/2023 08:42:00 | 27.03   | 03/12/2023 | 08:42:00 |
|      2 | 03/12/2023 16:13:00 | 23.66   | 03/12/2023 | 16:13:00 |
|      2 | 03/12/2023 17:12:00 | 23.55   | 03/12/2023 | 17:12:00 |
|      2 | 03/12/2023 17:41:00 | 23.44   | 03/12/2023 | 17:41:00 |
|      3 | 03/12/2023 06:06:00 | 27.63   | 03/12/2023 | 06:06:00 |
|      3 | 03/12/2023 10:46:00 | 27.32   | 03/12/2023 | 10:46:00 |
|      3 | 03/12/2023 12:26:00 | 26.99   | 03/12/2023 | 12:26:00 |
|      3 | 03/12/2023 20:02:00 | 26.6    | 03/12/2023 | 20:02:00 |
|      3 | 03/12/2023 21:22:00 | 26.55   | 03/12/2023 | 21:22:00 |
|      3 | 03/12/2023 22:11:00 | 26.38   | 03/12/2023 | 22:11:00 |
|      4 | 03/12/2023 06:36:00 | 27.45   | 03/12/2023 | 06:36:00 |
|      4 | 03/12/2023 09:26:00 | 26.45   | 03/12/2023 | 09:26:00 |
|      4 | 03/12/2023 11:26:00 | 25.45   | 03/12/2023 | 11:26:00 |
|      4 | 03/12/2023 15:16:00 | 24.45   | 03/12/2023 | 15:16:00 |
|      4 | 03/12/2023 23:02:00 | 23.45   | 03/12/2023 | 23:02:00 |
|      1 | 03/12/2023 23:00:00 | 28.73   | 03/12/2023 | 23:00:00 |
|      1 | 04/12/2023 10:36:00 | 27.09   | 04/12/2023 | 10:36:00 |
|      1 | 04/12/2023 18:18:00 | 25.09   | 04/12/2023 | 18:18:00 |
|      1 | 04/12/2023 21:12:00 | 23.99   | 04/12/2023 | 21:12:00 |
|      1 | 04/12/2023 23:11:00 | 23      | 04/12/2023 | 23:11:00 |
+--------+---------------------+---------+------------+----------+
group-by powerbi dax powerbi-desktop measure
1个回答
0
投票

创建日历表如下:

Calendar = CALENDAR(DATE(YEAR(MIN('Table'[timestamp])),1,1), DATE(YEAR(MAX('Table'[timestamp])),12,31))

创建与表的一对多关系:

创建一个表格视觉对象并放入calendar.date和您的ID:

增加以下措施:

voltage_high = MAX('Table'[voltage])

voltage_low = MIN('Table'[voltage])

timestamp_high = 
VAR x = [voltage_high]
RETURN
CALCULATE(MAX('Table'[timestamp]),  FILTER('Table', 'Table'[voltage] = x))

timestamp_low = 
VAR x = [voltage_low]
RETURN
CALCULATE(MAX('Table'[timestamp]),  FILTER('Table', 'Table'[voltage] = x))

© www.soinside.com 2019 - 2024. All rights reserved.