Timescale Cloud:性能、规模、企业级
自托管产品
MST
Timescale 超函数是一组专门的功能,可为时序数据和事件提供实时分析能力。物联网设备、IT 系统、营销分析、用户行为、财务指标、加密货币——这些只是超函数能够发挥巨大作用的领域中的几个例子。超函数能为您提供有意义的、可操作的实时洞察。
Timescale Cloud 默认包含所有超函数,而自托管的 TimescaleDB 则包含其中的一部分。要使用更多超函数,请安装 Timescale Toolkit PostgreSQL 扩展。
以下是 Timescale 提供的所有超函数列表。在 Toolkit
列带有勾选的超函数需要在自托管部署中安装 Timescale Toolkit。在 Experimental
列带有勾选的超函数仍在开发中。
警告
实验性功能可能存在错误。它们可能不向后兼容,并可能在未来的版本中移除。使用这些功能需自担风险,并且不要在生产环境中使用任何实验性功能。
重要
升级 timescaledb
扩展时,实验性模式默认会被移除。升级后要使用实验性功能,您需要再次添加实验性模式。
近似计数去重函数
超函数类型 | 超函数名称 | Toolkit | 实验性 | |
---|---|---|---|---|
hyperloglog() 函数 | ||||
聚合 | hyperloglog() | ✅ | ||
替代聚合 | approx_count_distinct() | ✅ | ||
访问器 | distinct_count() | ✅ | ||
stderror() | ✅ | |||
汇总 | rollup() | ✅ |
计数器和测量器函数
下采样函数
超函数类型 | 超函数名称 | Toolkit | 实验性 |
---|---|---|---|
函数 | asap_smooth() | ✅ | |
gp_lttb() | ✅ | ✅ | |
lttb() | ✅ |
财务分析函数
超函数类型 | 超函数名称 | Toolkit | 实验性 | |
---|---|---|---|---|
candlestick_agg() 函数 | ||||
聚合 | candlestick_agg() | ✅ | ||
伪聚合 | candlestick() | ✅ | ||
访问器 | close() | ✅ | ||
close_time() | ✅ | |||
high() | ✅ | |||
high_time() | ✅ | |||
low() | ✅ | |||
low_time() | ✅ | |||
open() | ✅ | |||
open_time() | ✅ | |||
volume() | ✅ | |||
vwap() | ✅ | |||
汇总 | rollup() | ✅ |
频率分析函数
超函数类型 | 超函数名称 | Toolkit | 实验性 | |
---|---|---|---|---|
count_min_sketch() 函数 | ||||
聚合 | count_min_sketch() | ✅ | ✅ | |
访问器 | approx_count() | ✅ | ✅ | |
freq_agg() 函数 | ||||
聚合 | freq_agg() | ✅ | ✅ | |
访问器 | into_values() | ✅ | ||
max_frequency() | ✅ | |||
min_frequency() | ✅ | |||
topn() | ✅ | |||
替代聚合 | mcv_agg() | ✅ | ||
汇总 | rollup() | ✅ |
填充缺失值函数
超函数类型 | 超函数名称 | Toolkit | 实验性 |
---|---|---|---|
桶 | time_bucket_gapfill() | ||
插值器 | interpolate() | ||
locf() |
最小值和最大值函数
超函数类型 | 超函数名称 | Toolkit | 实验性 | |
---|---|---|---|---|
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() | ✅ |
百分位数近似函数
超函数类型 | 超函数名称 | Toolkit | 实验性 | |
---|---|---|---|---|
tdigest() 函数 | ||||
聚合 | tdigest() | ✅ | ||
访问器 | approx_percentile() | ✅ | ||
approx_percentile_rank() | ✅ | |||
mean() | ✅ | |||
num_vals() | ✅ | |||
汇总 | rollup() | ✅ | ||
uddsketch() 函数 | ||||
聚合 | uddsketch() | ✅ | ||
访问器 | approx_percentile() | ✅ | ||
approx_percentile_array() | ✅ | |||
approx_percentile_rank() | ✅ | |||
error() | ✅ | |||
num_vals() | ✅ | |||
mean() | ✅ | |||
替代聚合 | percentile_agg() | ✅ | ||
汇总 | rollup() | ✅ |
状态跟踪函数
超函数类型 | 超函数名称 | Toolkit | 实验性 | |
---|---|---|---|---|
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_timeline() | ✅ | |||
state_periods() | ✅ | |||
汇总 | rollup() | ✅ |
统计和回归分析函数
超函数类型 | 超函数名称 | Toolkit | 实验性 | |
---|---|---|---|---|
stats_agg()(单变量)函数 | ||||
聚合 | stats_agg()(单变量) | ✅ | ||
访问器 | average() | ✅ | ||
kurtosis() | ✅ | |||
num_vals() | ✅ | |||
skewness() | ✅ | |||
stddev() | ✅ | |||
variance() | ✅ | |||
sum() | ✅ | |||
汇总 | rolling() | ✅ | ||
rollup() | ✅ | |||
stats_agg()(双变量)函数 | ||||
聚合 | stats_agg()(双变量) | ✅ | ||
访问器 | corr() | ✅ | ||
covariance() | ✅ | |||
determination_coeff() | ✅ | |||
average_y() , average_x() | ✅ | |||
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() | ✅ |
时间加权计算函数
超函数类型 | 超函数名称 | Toolkit | 实验性 | |
---|---|---|---|---|
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 表中获取最后一天的数据,按时间列对数据进行排序,计算值之间的增量,获取增量的绝对值,然后对前几步的结果求和。
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 Toolkit 功能是开源开发的。随着功能的开发,它们被分为实验性、测试版、稳定版或已弃用。本文档涵盖稳定功能,但有关正在开发的实验性功能的更多信息可在 Toolkit 存储库。
我们希望并需要您的反馈!时序数据分析中哪些部分最令人沮丧?哪些操作需要比您认为的更多的代码?哪些操作运行缓慢,或者只有在多次重写后才能快速运行?我们希望解决社区范围的问题,并尽可能多地吸纳反馈。