You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL TimescaleDB按时间分桶并补全多src-dest组缺失数据

PostgreSQL TimescaleDB 查询需求

数据库表结构

现有一张大型TimescaleDB表,结构及示例数据如下:

srcdesttraffictimestamp (类型: timestamp)
ab2002022-12-11 00:23:51.000
ab2002022-12-11 00:32:01.000
ba2002022-12-11 00:49:01.000
ac2002022-12-11 11:39:01.000
ab2002022-12-11 11:57:01.000
ab202022-12-11 21:32:01.000

查询要求

需要实现以下查询逻辑:

  • 对指定的src-dest对的traffic字段求和,支持查询单个对(如a->b)或多个对(如a->b和a->c),每个src-dest对视为唯一(a->b与b->a是不同的对)
  • 将数据按指定时间范围(例如2022-12-11 00:25:00.000至2022-12-11 19:35:00.000)分成24个等宽时间桶(例如50分钟/桶),结果必须满足:
    1. 每个src-dest对应的所有24个时间桶都要出现在结果中(Timescale原生的time_bucket函数无法满足此要求)
    2. 第一个时间桶的起始时间必须是指定的查询起始时间(Timescale原生的time_bucket_gapfill函数无法满足此要求)
    3. 查询语句需要支持多src-dest对的筛选,例如使用WHERE ((src = 'a' and dest = 'b') or (src = 'a' and dest = 'c'))

示例输出(与上述示例输入无关)

以a->b对为例,查询结果需包含24个起始于00:25:00的时间桶,若某段时间无流量数据,对应桶的traffic值为NULL:

time_bucketsrcdesttraffic
2022-12-11 00:25:00.000 +0200ab48614
2022-12-11 01:15:00.000 +0200ab49228
2022-12-11 02:05:00.000 +0200ab49228
2022-12-11 02:55:00.000 +0200ab48614
2022-12-11 03:45:00.000 +0200ab49228
2022-12-11 04:35:00.000 +0200ab49119
2022-12-11 05:25:00.000 +0200ab27288
2022-12-11 06:15:00.000 +0200ab26054
2022-12-11 07:05:00.000 +0200ab25735
2022-12-11 07:55:00.000 +0200ab25360
2022-12-11 08:45:00.000 +0200ab26748
2022-12-11 09:35:00.000 +0200ab24787
2022-12-11 10:25:00.000 +0200ab23065
2022-12-11 11:15:00.000 +0200ab20629
2022-12-11 11:55:00.000 +0200abNULL
2022-12-11 12:45:00.000 +0200abNULL
....abNULL
2022-12-12 19:35:00.000abNULL

内容的提问来源于stack exchange,提问作者zerohedge

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 20:01:43