首页 > 解决方案 > 使用 time_bucket 并在 timescaledb 中加入多个表

问题描述

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

架构

Table 1

| 用户 ID | 时间戳 | val1 | 值... |:---- |:------:| -----:| - - -: 桌子 ...

用户身份 时间戳 val1 值...

问题

我想知道如何将这些表与该time_bucket函数合并到一个视图中。所以,如果我每 10 秒采样一次以显示类似 View

用户身份 时间戳 表 1 中的 agg val 表 2 中的 agg val 来自表 X 的 agg val

标签: timescaledb

解决方案


是的!这是可能的!

您可以使用常规 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;

请注意,我要加入该表ticks两次,您可以将另一个表与其他指标一起加入。

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


推荐阅读