我有一个相当常见的时间序列设置:
- TimescaleDB Hypertable ( data ) 随着时间的推移跟踪一些指标。这些列是:时间戳、标识符、指标。
- Hypertable 有一个连续的聚合表(aggregated_data),它通过存储几个统计值(avg、min、max)按小时聚合指标。
- 只有汇总的指标才会显示给用户
我想介绍手动合并指标的可能性(例如编辑异常值、填补空白……)。这些合并后的值将与测量的指标一起显示给用户。
TimescaleDB 实现这一目标的方法是什么?
这是我想出的:
- 为手动合并的数据创建一个常规表 ( solidated_data )
- 此表将具有与aggregated_data视图相同的列
- 然后我会联合这两个表并添加一些 SQL 以避免重复,识别合并的数据,...
然后,UNION 操作将与此类似(我实际上并没有运行/测试此语句):
SELECT DISTINCT timestamp, identifier FROM (
SELECT timestamp, identifier, metric, true as consolidated FROM consolidated_data WHERE timestamp > NOW() - interval '7 days'
UNION ALL
SELECT timestamp, identifier, metric, false as consolidated FROM aggregated_data WHERE timestamp > NOW() - interval '7 days'
)
ORDER BY timestamp;
我希望这种方法能够奏效,但仍有很多未知数:
- 合并表应该是 Hypertable 吗?这会加快 UNION 操作吗?
- 我应该更喜欢合并吗?
- 有没有更聪明的方法来使用我还不知道的工具和实用程序?