您有时间序列数据吗?如果您有并且已经尝试过 TimescaleDB,那么您就会知道我们已经解决了在 PostgreSQL 之上存储不断增加的时间序列或时间相关数据的存储问题。但存储只是硬币的一面。拥有数据后,真正重要的部分是分析它并开始预测未来。
TimescaleDB hyperfunctions 包含一组针对时间序列查询、聚合和分析而优化的函数、过程和数据类型。它们与 Timescale 的云产品和 PostgreSQL 数据库扩展 TimescaleDB 高度集成。某些函数默认包含,另一些则作为 Timescale Toolkit的一部分,包括一些高性能的数据库内 Rust 函数。
Hyperfunctions 分为多个类别,最基本的一类直接集成到 TimescaleDB 扩展中。
这包括使用 time_bucket
或 time_bucket_gapfill
进行时间分桶,以及一些标准函数,例如 first
和 last
。
这些函数构成了实时对数十亿条记录进行基于时间聚合的基础。如前所述,Timescale 提供了第二个扩展,即 Timescale Toolkit,它提供了更高级的、针对特定用例的函数类别。
· 近似计数 distinct 函数使用 hyperloglog++ 等算法为不同对象的个数提供估计器,并能够将较小的时间范围汇总到较大的时间范围。
· 计数器和量规函数使用 counter_agg
提供聚合函数来收集单调递增的值,以及量规(gauge_agg
,它可以随时间推移而增减),以及它们相应的函数来检索分析值,例如相关系数、增量、插值和斜率。它们还提供了将较小的时窗汇总到较大的时窗的功能。
· 财务分析函数 实现烛台聚合,直接访问 OHLC(开盘价、最高价、最低价、收盘价)值,从而为股票和加密货币交易用例中通常发现的快速分析提供了一种快速方法。同样,还提供了将较小的时窗汇总到较大的时窗的其他功能。
· 统计和回归分析函数能够快速访问统计分析方法,例如平均值、峰度、偏度、标准差、方差等等。与一些 vanilla PostgreSQL 变体(例如 stddev
、average
)不同的是,它们可以在将较小的时窗汇总到较大的时窗时使用,而无需专门存储中间值以防止错误的重新聚合结果。
· 百分位数近似函数提供 uddsketch
实现,能够在大量数据点上近似计算百分位数,以及同时检索一个或多个百分位数所需的函数。与前面的示例一样,还提供了汇总功能。|
· 状态跟踪函数提供聚合和跟踪函数,用于跟踪时间推移过程中离散状态的变化。这包括诸如状态机之类的系统,它们在不同状态之间切换(例如启动、运行、停止和已停止)。它们还能够访问每个状态所花费的时间或长时间内缺乏某些状态的情况。汇总功能也可用。
· 降采样函数允许您将大量数据点降采样为较少的点,同时保留原始结果集的总体形状。这可以用于快速可视化趋势。包含的算法是 lttb(最大三角形三桶)和 ASAP(自动平滑以进行关注优先级排序)。
相信我们,还有更多。
了解 Timescale hyperfunctions 如何增强您的数据分析的最佳方法是亲自动手。查看以下资源,并开始处理时间序列数据。