时间序列分析函数
在 ClickHouse 中,时间序列分析可以使用标准 SQL 聚合和窗口函数进行。 在处理时间序列数据时,您通常会遇到三种主要类型的指标:
- 持续单调增加的计数器指标(如页面浏览量或总事件数)
- 表示时点测量值的测量指标,这些值可以上升或下降(如 CPU 使用率或温度)
- 采样观察值并将其计入桶中的直方图(如请求持续时间或响应大小)
这些指标的常见分析模式包括比较不同时期之间的值、计算累积总额、确定变化率和分析分布。
所有这些都可以通过聚合、窗口函数(如 sum() OVER
)和专用函数(如 histogram()
)的组合来实现。
逐期变化分析
在分析时间序列数据时,我们常常需要了解值在不同时间段之间如何变化。
这对测量指标和计数器指标都是至关重要的。
lagInFrame
窗口函数可以让我们访问上一个周期的值,以计算这些变化。
以下查询通过计算“奇怪的阿尔”扬科维奇 Wikipedia 页面每日视图的日变化来演示这一点。 趋势列显示与前一天相比,流量是增加(正值)还是减少(负值),帮助识别活动中的异常高峰或下降。
累计值
计数器指标自然随时间累积。 为了分析这种累积增长,我们可以使用窗口函数计算运行总额。
以下查询通过使用 sum() OVER
子句创建运行总额,而 bar()
函数提供增长的可视化表示。
比率计算
在分析时间序列数据时,了解单位时间内的事件发生率通常是有用的。 该查询通过将每小时的总数除以一小时内的秒数(3600)来计算每秒的页面浏览量比率。 可视化条形图有助于识别活动的高峰时段。
直方图
时间序列数据的一个流行用例是根据追踪事件构建直方图。
假设我们想了解根据总点击数对页面的分布,仅包含超过 10,000 次点击的页面。
我们可以使用 histogram()
函数基于箱的数量自动生成自适应直方图:
然后我们可以使用 arrayJoin()
来处理数据,并使用 bar()
来可视化它: