当前位置: 首页> 文旅> 文化 > clickhouse日常使用

clickhouse日常使用

时间:2025/7/27 19:46:38来源:https://blog.csdn.net/f_h_h/article/details/139753766 浏览次数:2次

ck高阶函数运用

数组函数

对数据中的特殊字符串进行替换,并根据分隔符进行切割,过滤掉为空的数组数据,对数据元素进行排序,在用分隔符拼接。

arrayStringConcat(  arraySort(   arrayDistinct(  arrayFilter(o -> o != '' , splitByChar(';',   assumeNotNull(REPLACE(POOR_APP_CATEGORY, ',', ';'))) )   )  ) , '; ' ) as "质差应用"

arraySort支持自定义排序

参数 1:lambda表达式,- 表示!asc排序方式参数 2:数组参数 3:权值顺序select arraySort((x, y) -> y, arrayDistinct(  arrayFilter(o -> o != '' , splitByChar(';', '优;中;差'))), [0, 1, 2]);
['优','中','差']
select arraySort((x, y) -> - y, arrayDistinct(  arrayFilter(o -> o != '' , splitByChar(';', '优;中;差'))), [0, 1, 2]);
['差','中','优']

argMax、argMin函数:获取某个列维度,对应的那一行数据。

获取时间最新的预警数据:

    select PREWARN_ID,max(CREATE_DATE),argMax(END_DATE, CREATE_DATE) as END_DATE,argMax(CHECK_DATE, CREATE_DATE) as CHECK_DATE,argMax(STATUS, CREATE_DATE) as STATUS,argMax(MODIFY_USER, CREATE_DATE) as MODIFY_USER,argMax(WARN_TIMES, CREATE_DATE) as WARN_TIMES,MAX(RANK) as RANK, MAX(CITY) as CITYfrom ADO_SA_OVERSEA_BUSINESS.T_PRE_WARNING_STATUSgroup by PREWARN_ID HAVING STATUS = 0ORDER BY WARN_TIMES, CHECK_DATE, PREWARN_ID;

注意点:
该函数取不到null,会根据列维度排序,取最大(小)的不为空数据,所以请考虑数据中是否有null数据。
如果有,建议使用 如下判断数据的形式进行规避

select argMax(if(STATUS is null, '', STATUS), CREATE_DATE) as STATUS

问题

左连接取右表有默认值

select l.*, r.* from
( select 'a' as a ) l
left join
( select '1' as a, 1 as b ) r
on l.a = r.a;

配置:

select l.*, r.* from
( select 'a' as a ) l
left join
( select '1' as a, 1 as b ) r
on l.a = r.a SETTINGS join_use_nulls = 1;
关键字:clickhouse日常使用

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: