我有一个大型数据表,其中包含数百个远程设备的电压信息。这些设备每十分钟报告一次电压,并且每天充电。充电可以从前一天开始,一直持续到第二天午夜,然后才停止充电。
我想知道每个设备的电压和电压开始下降之前最高电压的时间戳(因为这表明它已停止充电)。
我还想知道最低时相对于上次最高时的电压和时间戳。
目标是确定每个电池每次充电后可以持续多长时间,然后停止工作/报告并需要再次充电。
我的许多糟糕的 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 |
+--------+---------------------+---------+------------+----------+
创建日历表如下:
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))