Timescale 超级函数是一组专门的函数,可让您分析时序数据。您可以使用超级函数来分析您存储为时序数据的任何内容,包括 IoT 设备、IT 系统、营销分析、用户行为、财务指标和加密货币。
超级函数允许您快速执行关键时序查询、分析时序数据和提取有意义的信息。 它们的目的是识别、构建和组合 SQL 执行时序分析所需的所有功能到一个扩展中。
一些超级函数包含在默认的 TimescaleDB 产品中。 对于其他超级函数,您需要安装 Timescale 工具包 PostgreSQL 扩展。
以下是 Timescale 提供的所有超级函数的列表。 标有“工具包”的超级函数需要安装 Timescale 工具包。 标有“实验性”的超级函数仍在开发中。
警告
实验性功能可能存在错误。 它们可能不向后兼容,并且可能会在未来的版本中删除。 使用这些功能需自行承担风险,请勿在生产环境中使用任何实验性功能。
重要提示
当您升级 timescaledb
扩展时,默认情况下会删除实验性模式。 要在升级后使用实验性功能,您需要再次添加实验性模式。
近似去重计数函数
超级函数类型 | 超级函数名称 | 工具包 | 实验性 | |
---|---|---|---|---|
hyperloglog() 函数 | ||||
聚合 | hyperloglog() | ✅ | ||
备选聚合 | approx_count_distinct() | ✅ | ||
访问器 | distinct_count() | ✅ | ||
stderror() | ✅ | |||
汇总 | rollup() | ✅ |
计数器和仪表函数
降采样函数
超级函数类型 | 超级函数名称 | 工具包 | 实验性 |
---|---|---|---|
函数 | asap_smooth() | ✅ | |
gp_lttb() | ✅ | ✅ | |
lttb() | ✅ |
金融分析函数
超级函数类型 | 超级函数名称 | 工具包 | 实验性 | |
---|---|---|---|---|
candlestick_agg() 函数 | ||||
聚合 | candlestick_agg() | ✅ | ||
访问器 | close() | ✅ | ||
close_time() | ✅ | |||
high() | ✅ | |||
high_time() | ✅ | |||
low() | ✅ | |||
open() | ✅ | |||
low_time() | ✅ | |||
open_time() | ✅ | |||
volume() | ✅ | |||
vwap() | ✅ | |||
伪聚合 | candlestick() | ✅ | ||
汇总 | rollup() | ✅ |
频率分析函数
超级函数类型 | 超级函数名称 | 工具包 | 实验性 | |
---|---|---|---|---|
count_min_sketch() 函数 | ||||
聚合 | count_min_sketch() | ✅ | ✅ | |
访问器 | approx_count() | ✅ | ✅ | |
freq_agg() 函数 | ||||
聚合 | freq_agg() | ✅ | ✅ | |
访问器 | into_values() | ✅ | ||
max_frequency() | ✅ | |||
min_frequency() | ✅ | |||
topn() | ✅ | |||
备选聚合 | mcv_agg() | ✅ | ||
汇总 | rollup() | ✅ |
填充函数
超级函数类型 | 超级函数名称 | 工具包 | 实验性 |
---|---|---|---|
桶 | time_bucket_gapfill() | ||
插值器 | interpolate() | ||
locf() |
最小值和最大值函数
超级函数类型 | 超级函数名称 | 工具包 | 实验性 | |
---|---|---|---|---|
max_n() 函数 | ||||
聚合 | max_n() | ✅ | ||
访问器 | into_array() | ✅ | ||
into_values() | ✅ | |||
汇总 | rollup() | ✅ | ||
max_n_by() 函数 | ||||
聚合 | max_n_by() | ✅ | ||
访问器 | into_values() | ✅ | ||
汇总 | rollup() | ✅ | ||
min_n() 函数 | ||||
聚合 | min_n() | ✅ | ||
访问器 | into_array() | ✅ | ||
into_values() | ✅ | |||
汇总 | rollup() | ✅ | ||
min_n_by() 函数 | ||||
聚合 | min_n_by() | ✅ | ||
访问器 | into_values() | ✅ | ||
汇总 | rollup() | ✅ |
百分位数近似值函数
超级函数类型 | 超级函数名称 | 工具包 | 实验性 | |
---|---|---|---|---|
tdigest() 函数 | ||||
聚合 | tdigest() | ✅ | ||
访问器 | approx_percentile() | ✅ | ||
approx_percentile_rank() | ✅ | |||
mean() | ✅ | |||
num_vals() | ✅ | |||
汇总 | rollup() | ✅ | ||
uddsketch() 函数 | ||||
聚合 | uddsketch() | ✅ | ||
访问器 | approx_percentile() | ✅ | ||
approx_percentile_array() | ✅ | |||
approx_percentile_rank() | ✅ | |||
error() | ✅ | |||
mean() | ✅ | |||
num_vals() | ✅ | |||
备选聚合 | percentile_agg() | ✅ | ||
汇总 | rollup() | ✅ |
状态跟踪函数
超级函数类型 | 超级函数名称 | 工具包 | 实验性 | |
---|---|---|---|---|
compact_state_agg() 函数 | ||||
聚合 | compact_state_agg() | ✅ | ✅ | |
访问器 | duration_in() | ✅ | ✅ | |
interpolated_duration_in() | ✅ | ✅ | ||
into_values() | ✅ | ✅ | ||
汇总 | rollup() | ✅ | ✅ | |
heartbeat_agg() 函数 | ||||
聚合 | heartbeat_agg() | ✅ | ||
访问器 | dead_ranges() | ✅ | ||
downtime() | ✅ | |||
interpolate() | ✅ | |||
interpolated_downtime() | ✅ | |||
interpolated_uptime() | ✅ | |||
live_at() | ✅ | |||
live_ranges() | ✅ | |||
num_gaps() | ✅ | |||
num_live_ranges() | ✅ | |||
trim_to() | ✅ | |||
uptime() | ✅ | |||
汇总 | rollup() | ✅ | ||
state_agg() 函数 | ||||
聚合 | state_agg() | ✅ | ||
访问器 | duration_in() | ✅ | ||
interpolated_duration_in() | ✅ | |||
interpolated_state_periods() | ✅ | |||
interpolated_state_timeline() | ✅ | |||
into_values() | ✅ | |||
state_at() | ✅ | |||
state_periods() | ✅ | |||
state_timeline() | ✅ | |||
汇总 | rollup() | ✅ |
统计和回归分析函数
超级函数类型 | 超级函数名称 | 工具包 | 实验性 | |
---|---|---|---|---|
stats_agg() (单变量) 函数 | ||||
聚合 | stats_agg() (单变量) | ✅ | ||
访问器 | average() | ✅ | ||
kurtosis() | ✅ | |||
num_vals() | ✅ | |||
skewness() | ✅ | |||
stddev() | ✅ | |||
sum() | ✅ | |||
variance() | ✅ | |||
汇总 | rollup() | ✅ | ||
rolling() | ✅ | |||
stats_agg() (双变量) 函数 | ||||
聚合 | stats_agg() (双变量) | ✅ | ||
访问器 | average_y() , average_x() | ✅ | ||
corr() | ✅ | |||
covariance() | ✅ | |||
determination_coeff() | ✅ | |||
intercept() | ✅ | |||
kurtosis_y() , kurtosis_x() | ✅ | |||
num_vals() | ✅ | |||
skewness_y() , skewness_x() | ✅ | |||
slope() | ✅ | |||
stddev_y() , stddev_x() | ✅ | |||
sum_y() , sum_x() | ✅ | |||
variance_y() , variance_x() | ✅ | |||
x_intercept() | ✅ | |||
汇总 | rolling() | ✅ | ||
rollup() | ✅ |
时间加权计算函数
超级函数类型 | 超级函数名称 | 工具包 | 实验性 | |
---|---|---|---|---|
time_weight() 函数 | ||||
聚合 | time_weight() | ✅ | ||
访问器 | average() | ✅ | ||
first_time() | ✅ | |||
first_val() | ✅ | |||
integral() | ✅ | |||
interpolated_average() | ✅ | |||
interpolated_integral() | ✅ | |||
last_time() | ✅ | |||
last_val() | ✅ | |||
汇总 | rollup() | ✅ |
通用函数
有关此表中列出的每个 API 调用的更多信息,请参阅 超级函数 API 文档。
函数管道是一项实验性功能,旨在通过应用函数式编程原理和 Python 的 Pandas 以及 PromQL 等流行工具,从根本上改善在 PostgreSQL 和 SQL 中分析数据的开发者人体工程学。
SQL 是数据分析的最佳语言,但它并非完美,有时会变得相当笨拙。 例如,此查询从 measurements 表中获取最近一天的数据,按 time 列对数据进行排序,计算值之间的增量,取增量的绝对值,然后对先前步骤的结果求和
SELECT device id,sum(abs_delta) as volatilityFROM (SELECT device_id,abs(val - lag(val) OVER last_day) as abs_deltaFROM measurementsWHERE ts >= now()-'1 day'::interval) calc_deltaGROUP BY device_id;
您可以使用如下函数管道表达相同的查询
SELECT device_id,timevector(ts, val) -> sort() -> delta() -> abs() -> sum() as volatilityFROM measurementsWHERE ts >= now()-'1 day'::intervalGROUP BY device_id;
函数管道完全兼容 SQL,这意味着任何使用 SQL 的工具都能够支持使用函数管道进行数据分析。
有关函数管道如何工作的更多信息,请阅读我们的博客文章。
Timescale 工具包功能是开放开发的。 随着功能的开发,它们被分类为实验性、beta 版、稳定版或已弃用。 本文档涵盖了稳定版功能,但有关我们正在开发的实验性功能的更多信息,请参见工具包存储库。
我们想要并需要您的反馈! 分析时序数据时,哪些部分令人沮丧? 哪些需要编写的代码远超您认为应该的量? 哪些运行缓慢,或者只有在多次重写后才能快速运行? 我们希望解决社区范围的问题,并尽可能多地采纳反馈。
关键词
在此页面上发现问题?报告问题 或 在 GitHub 上编辑此页面。