美文网首页
clickhouse常用函数

clickhouse常用函数

作者: 二十赶朝暮__ | 来源:发表于2020-11-29 20:41 被阅读0次
    • grouparray 将分组的内的多个值,合成一个数组
    测试数据表test02:
    ca,cb,cc
    A,W,1
    A,W,2
    B,X,1
    B,Z,2
    B,Z,4
    需求:分组取top1
    select ca,cb,groupArray(1)(cc) from test02 group by ca,cb
    输出结果:
    B,Z,[2]
    A,W,[1]
    B,X,[1]
    
    • 开窗函数
    with (select [100,200,300,200,400,500]) as arr
    select arrayEnumerate(arr) as row_number,   
        arrayEnumerateDense(arr) as dense_rank,   
        arrayEnumerateUniq(arr) as uniqu_rank;
    
    输出结果   
    row_number     dense_number   unique_number"
    [1,2,3,4,5,6]",  "[1,2,3,2,4,5]",   "[1,1,1,2,1,1]"
    
    • arraydifference(arr) 数组相邻位相减
    with (select [100,200,300,200,400,500]) as arr
    select arrayDifference(arr)
    输出结果
    [0,100,100,-100,200,100]
    
    • neighbor(arr,index) 获取某一些前后相邻的数据
    SELECT a, neighbor( a,-1 ) from 
    (SELECT arrayJoin( [1,2,3,6,34,3,11] ) as a,'u' as  b)
    输出结果
    a neighbor(a,-1)
    1,0
    2,1
    3,2
    6,3
    34,6
    3,34
    11,3
    
    • arrayStringConcat 将数组中的元素按指定连接符连接
    注:非字符串数组不能拼接
    SELECT arrayStringConcat( ['1','2','3','6','34','3','11'] , '-')
    输出结果:
    1-2-3-6-34-3-11
    
    • hasAny 判断数组中是否包含某些值,包含其一返回1,否则返回0
    SELECT hasAny( [1,2,3,6,34,3,11] , [3,1])
    输出结果:1
    
    • arrayDistinct 数组去重
    SELECT arrayDistinct([1,2,3,6,34,3,11])
    输出结果:[1,2,3,6,34,11]
    
    
    • 时间转换函数
      • toDate() 字符型日期转日期型
      • toDateTime() 字符型日期带时分秒 转 日期型
      • parseDateTimeBestEffort 更复杂的日期解析函数
    parseDateTimeBestEffort(toString(20191201000407)) as wet
    输出结果:2019-12-01 00:04:07
    
    • parseDateTimeBestEffortOrNull 遇到无法解析的字符串返回null

    • 条件函数

      • if(cond,then,else) 单条件输入输出
      • multiif(cond1,then1,cond2,then2,..else) 多条件输入输出

    相关文章

      网友评论

          本文标题:clickhouse常用函数

          本文链接:https://www.haomeiwen.com/subject/zbakwktx.html