SuperAPI AI 工具集

timescaledb-hyperfunctions

通用与其它

查看项目

更新于 10-16 05:45

技能介绍

用途:Hyperfunctions 是 timescaledb_toolkit 扩展提供的 SQL 聚合与取值函数,用于处理普通 PostgreSQL 聚合难以应对的时序分析:可重新聚合的百分位、计数器重置后的速率、不规则采样平均、在线时长、状态持续时间等。

主要能力:百分位(percentile_agg、uddsketch、tdigest,支持 approx_percentile、approx_percentile_array、approx_percentile_rank);统计摘要(stats_agg 一维/二维,支持 average、stddev、variance、skewness、kurtosis、slope、intercept、corr 等);时间加权平均 time_weight(Linear/LOCF,average、integral、interpolated_average);计数器 counter_agg(delta、rate、extrapolated_rate、irate_right、num_resets);计量器 gauge_agg(delta、rate、slope、num_changes 等,需 toolkit 1.25+);心跳在线时长 heartbeat_agg(uptime、downtime、live_ranges);状态跟踪 state_agg(duration_in、state_timeline、state_at、into_values);K线 candlestick_agg/candlestick(open、high、low、close、volume、vwap);近似去重 hyperloglog/approx_count_distinct;Top-N max_n/min_n/max_n_by/min_n_by;最常见值 mcv_agg;降采样 lttb、asap_smooth。

使用方式:几乎所有超函数采用两步模式——先聚合生成紧凑摘要(如 percentile_agg(val)→uddsketch、time_weight(...)→timeweightsummary),再用取值函数从摘要取结果。支持函数调用风格 approx_percentile(0.95, percentile_agg(latency_ms)) 与箭头风格 percentile_agg(latency_ms) -> approx_percentile(0.95)。摘要可存储于连续聚合中,用 rollup(summary) 合并后再在查询时用取值函数计算。安装:CREATE EXTENSION IF NOT EXISTS timescaledb_toolkit; 并可用 ALTER EXTENSION timescaledb_toolkit UPDATE 升级。time_bucket、time_bucket_gapfill、locf、interpolate 等由 TimescaleDB 核心提供,可与超函数自由组合。

限制:持久化对象只应使用默认 schema 中的函数,toolkit_experimental schema 内容可能随版本变化,且 ALTER EXTENSION ... UPDATE 会删除依赖它的视图、连续聚合和函数。分布类摘要可跨实体合并,时序类摘要只能在同一实体的连续非重叠时间范围上合并,跨主机的重叠摘要合并会报错。不要对平均值、百分位或速率再取平均,应使用 rollup 后取百分位。百分位结果近似,小数据且需精确值时用 PERCENTILE_CONT。gauge 不提供 num_resets 和 first_val/last_val。lttb 与 asap_smooth 仅用于可视化,不应继续用于统计。volume、vwap 无箭头形式,需函数调用。其余细节(如具体价格、平台覆盖)暂未提供。