Clickhouse - 在数组中移动总和

Posted

技术标签:

【中文标题】Clickhouse - 在数组中移动总和【英文标题】:Clickhouse - Moving Sum in Arrays 【发布时间】:2021-03-18 14:14:33 【问题描述】:

我正在寻找一种对数组中(n 个前瞻性数组元素)求和的有效方法。

例如

Input -> [1,2,3,4,5,6,7,8]
Expected Result (for n = 2) -> [3,5,7,9,11,13,15,8]

Similarly if the n=3 then Expected Result -> [6,9,12,15,18,21,15,8]

有没有办法,这可以在 CH 中以超高效的方式完成。谢谢!

编辑:我想知道这是否可以在不使用的情况下完成 arrayReduceInRanges(agg_func,范围,arr1 ...)。 我们使用的 CH 版本(版本 19.15.1)没有 arrayReduceInRanges

【问题讨论】:

【参考方案1】:

试试这个:

WITH 2 AS n
SELECT
    range(1, 9, 1) AS arr,
    arrayMap((x, index) -> arraySum(arraySlice(arr, index, n)), arr, arrayEnumerate(arr)) AS result

┌─arr───────────────┬─result───────────────┐
│ [1,2,3,4,5,6,7,8] │ [3,5,7,9,11,13,15,8] │
└───────────────────┴──────────────────────┘

【讨论】:

非常感谢弗拉基米尔...非常有帮助!!

以上是关于Clickhouse - 在数组中移动总和的主要内容,如果未能解决你的问题,请参考以下文章

Clickhouse - 矩阵逐项加法:如何对二维数组求和?

Clickhouse 如何计算间隔总和 PAUSE -> UNPAUSE?

ClickHouse SQL 极简教程ClickHouse SQL 之数据控制语言 DCL

错误:无法初始化类 ru.yandex.clickhouse.ClickHouseUtil

ClickHouse 创建用户/角色/行权限策略/配额 Quota 限流等

Flink SQL实战演练之自定义Clickhouse Connector