window-functions - 分区之间的 clickhouse 移动平均线
问题描述
如何计算clickhouse中分区之间的移动平均值。
对于 window_functions
设置allow_experimental_window_functions = 1;
1、建表
CREATE TABLE IF NOT EXISTS tb (t DateTime, v Float32) ENGINE=MergeTree()
PARTITION BY toYYYYMM(t) ORDER BY t;
(需要按月分区)
2、插入数值
INSERT INTO tb (t, v) VALUES ('2021-07-31 23:00:00', 5.0),
('2021-07-31 22:00:00', 4.0), ('2021-07-31 21:00:00', 3.0),
('2021-07-31 20:00:00', 2.0), ('2021-07-31 19:00:00', 1.0);
3、物化视图计算移动平均线
CREATE MATERIALIZED VIEW IF NOT EXISTS mv_tb ENGINE=MergeTree()
PARTITION BY toYYYYMM(t)
ORDER BY t
POPULATE
AS SELECT t, v, avg(v) OVER w AS ma
FROM tb
WINDOW w AS (ORDER BY t ASC ROWS BETWEEN 2 PRECEDING AND CURRENT ROW);
4、查询物化视图(一切正常)
select * from mv_tb;
5、插入新数据
INSERT INTO tb (t, v) VALUES ('2021-08-01 01:00:00', 7.0),
('2021-08-01 00:00:00', 6.0);
6、查询物化视图(!!!错误!!!)
select * from mv_tb;
解决方案
推荐阅读
- javascript - 如何使用 Javascript 在地图中删除这种元素?
- vbscript - 将 VBS 脚本和 mp3/其他扩展组合成可执行文件
- windows - Windows 10 上的 PostgreSQL。语言环境已损坏
- javascript - Selenium Python 使用 Chromedriver 获取 PDF 的高度
- c++ - 有没有办法在 C++ 中使用 Armadillo 来提高对称矩阵的性能?
- android - 如何在下拉列表中显示项目数量有限的微调器?
- mongodb - mongoose 聚合和求和嵌套的 OBJECT (NOT ARRAY ) 字段
- angular - 选择不工作的默认选项(反应形式)
- wordpress - Qode 主题 - 加载过大的图像。我怎样才能防止这种情况?
- command-line-interface - 命令行工具分别截图多台显示器