使用 time_bucket 并在 timescaledb 中连接多个表

Using time_bucket and joining multiple tables in timescaledb

我有一个带有几个 table 的简单数据库模式 (Timescaledb)。每个用户都有一个具有多个指标的主传感器,每个指标都有自己的 table,带有 user_id 和时间戳。

架构

Table 1

| user_id |时间戳 | val1 |瓦尔... |:---- |:------:| -----:| -----: Table ...

user_id timestamp val1 val...

问题

我想知道如何将这些 table 合并到具有 time_bucket 功能的视图中。所以,如果我每 10 秒采样一次以显示类似 查看

user_id timestamp agg val from table 1 agg val from table 2 agg val from table X

是的!有可能!

你可以用正则试试SQL。这是一些例子:

select time_bucket('1m', a.time) as bucket_a,
          a.symbol || '/' || b.symbol as pair,
          LAST(a.price, a.time) as last_price_a,
          LAST(b.price, b.time) as last_price_b
          FROM ticks a
          LEFT JOIN ticks b
          ON time_bucket('1m', a.time) = time_bucket('1m', b.time)
            AND a.symbol = 'SYMBOL' and b.symbol = 'ANOTHER'
          GROUP BY 1, 2;

请注意,我加入了 table ticks 两次,您可以加入另一个 table 和其他指标。

另一个细节是,它不是在 where 子句上过滤 symbol,而是现在 JOIN 子句的一部分。