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()

饱和运算函数

超级函数类型超级函数名称工具包实验性
函数saturating_add()
saturating_add_pos()
saturating_mul()
saturating_sub()
saturating_sub_pos()

状态跟踪函数

超级函数类型超级函数名称工具包实验性
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()

通用函数

超级函数类型超级函数名称工具包实验性
time_bucket()
timescaledb_experimental.time_bucket_ng()
一步聚合approximate_row_count()
first()
histogram()
last()
一步操作days_in_month()
month_normalize()

有关此表中列出的每个 API 调用的更多信息,请参阅 超级函数 API 文档

函数管道是一项实验性功能,旨在通过应用函数式编程原理和 Python 的 Pandas 以及 PromQL 等流行工具,从根本上改善在 PostgreSQL 和 SQL 中分析数据的开发者人体工程学。

SQL 是数据分析的最佳语言,但它并非完美,有时会变得相当笨拙。 例如,此查询从 measurements 表中获取最近一天的数据,按 time 列对数据进行排序,计算值之间的增量,取增量的绝对值,然后对先前步骤的结果求和

SELECT device id,
sum(abs_delta) as volatility
FROM (
SELECT device_id,
abs(val - lag(val) OVER last_day) as abs_delta
FROM measurements
WHERE ts >= now()-'1 day'::interval) calc_delta
GROUP BY device_id;

您可以使用如下函数管道表达相同的查询

SELECT device_id,
timevector(ts, val) -> sort() -> delta() -> abs() -> sum() as volatility
FROM measurements
WHERE ts >= now()-'1 day'::interval
GROUP BY device_id;

函数管道完全兼容 SQL,这意味着任何使用 SQL 的工具都能够支持使用函数管道进行数据分析。

有关函数管道如何工作的更多信息,请阅读我们的博客文章

Timescale 工具包功能是开放开发的。 随着功能的开发,它们被分类为实验性、beta 版、稳定版或已弃用。 本文档涵盖了稳定版功能,但有关我们正在开发的实验性功能的更多信息,请参见工具包存储库

我们想要并需要您的反馈! 分析时序数据时,哪些部分令人沮丧? 哪些需要编写的代码远超您认为应该的量? 哪些运行缓慢,或者只有在多次重写后才能快速运行? 我们希望解决社区范围的问题,并尽可能多地采纳反馈。

关键词

在此页面上发现问题?报告问题 或 在 GitHub 上编辑此页面