总述 高阶函数给我的感受

Clickhouse高阶函数针对数组运算,结合行转列、列转行 操作(CK特性支持)可以方便的进行行与行之间的数据对比、筛选、排序 等运算,基本可以代替传统SQL中自联结Self Join关联子查询,以及两者结合后的奇技淫巧。也可以代替窗口函数(也许这就是CK始终不提供窗口函数的原因)。

关键在于,进行行列转化时,将数据关系通过Tuple保留并生成数组。

GroupArray 、ArrayJoin、ARRAY JOIN 实现行列互转

注:
数组的简易Index方法:[Array][index] 例如 exampleArray[2]
元组的简易Index方法:(Tuple).index 例如 exampleTuple.2

ArrayFilter、ArraySort、ArrayEnumerate

实现简单的相邻去重
查询XX之前最近一次XX行为

数据表如下表所示

Range、ArrayMap、ArrayFirstIndex

实现缺失日期的填补

GroupArray和ArrayEnumerate

实现所谓窗口函数

ArrayCumSum

实现分组累计求和

ArrayReverse

查询在XX之前最后进行和XX之后首次进行。

附件:CK中文文档和(几乎)全部函数示例

clickhouse_zh.pdfClickhouse中文文档
CK常用函数示例.sql Clickhouse(几乎)全部函数示例,均可直接运行,不依赖特定数据库