【发布时间】:2023-03-07 01:26:02
【问题描述】:
我有一个包含大量冗余信息的表,我想减少这些信息。从示例开始,我想从这个表中移出:
+-------------+--------+----------+----------+------------------+-----------+------+
| facility | device | location | property | name | data_type | rate |
+-------------+--------+----------+----------+------------------+-----------+------+
| Chicago | SVR2 | 501.1 | MAX_POW | Maximum Power | float | 10 |
| Chicago | SVR3 | 501.1 | MAX_POW | Maximum Power | float | 10 |
| ... | | | | | | |
| Chicago | SVR64 | 501.1 | MAX_POW | Maximum Power | float | 10 |
| Chicago | SVR1 | 501.1 | OS | Operating System | int | 0 |
| Minneapolis | SVR1 | 65 | MAX_POW | Maximum Power | float | 10 |
+-------------+--------+----------+----------+------------------+-----------+------+
到这张桌子
+----------+--------+----------+----------+------------------+-----------+------+
| facility | device | location | property | name | data_type | rate |
+----------+--------+----------+----------+------------------+-----------+------+
| .* | SVR\d+ | .* | MAX_POW | Maximum Power | float | 10 |
| Chicago | SVR\d+ | .* | OS | Operating System | int | 0 |
+----------+--------+----------+----------+------------------+-----------+------+
很可能通过这个中间表:
+---------------------+---------------------+----------+----------+---------------+-----------+------+
| facility | device | location | property | name | data_type | rate |
+---------------------+---------------------+----------+----------+---------------+-----------+------+
| Chicago,Minneapolis | SVR2,SVR3,...,SVR64 | 501.1,65 | MAX_POW | Maximum Power | float | 10 |
| Minneapolis | SVR1 | 65 | MAX_POW | Maximum Power | float | 10 |
+---------------------+---------------------+----------+----------+---------------+-----------+------+
所以,我在这里考虑前 3 列 facility、device、location“非关键”列和所有其他“关键”列,ms。我想合并具有相同键列值的行并生成一个正则表达式,该表达式与合并的行的所有现有非键列匹配。我知道最后一点并不容易,所以我想为相同键列的非键列获取所有值的联合集合。
我想在 SQLite 中执行此操作。我对如何获取具有相同键列的列有一个基本的想法,但我不知道如何获取非键列的联合值。如果做不到,我会写一个python脚本来做。
【问题讨论】:
-
请注意,表格有列,而不是字段。