• ClickHouse常用函数统计


    ------------恢复内容开始------------

    1、统计类函数

    1.1 分位数

    90%分位数:

    quantile(0.9)()
    
    • 1

    在求(平均)响应时间时用到,quantile(0.9)(url_rt)

    1.2 中位数

    median()
    
    • 1

    还未使用到,median(url_rt)

    1.3 相关系数

    计算x与y的相关系数,计算公式:∑ ( x − x ‾ ) ( y − y ‾ ) ∑ ( x − x ‾ ) 2 ∑ ( y − y ‾ ) 2 dfrac{sum(x-overline{x})(y-overline{y})}{sqrt{sum(x-overline{x})^2sum(y-overline{y})^2}}(xx)2(yy)2(xx)(yy),取值范围[-1,1],其绝对值越大代表线性关系越强,当相关系数为0时,表示x与y之间没有线性相关关系(不代表没有非线性关系):
    corr(x,y)

    2、类型转换函数

    2.1 转换为字符串

    toString()
    
    • 1

    在Superset中应用较多,toString(date)

    3、时间日期函数

    3.1 截取年份

    toYear()
    
    • 1

    应用形式toYear(date)

    3.2 截取月份

    toMonth()
    
    • 1

    应用形式toMonth(date),例如date = ‘2018-07-25’,得到结果为7

    3.3 截取天

    toDayOfDay()
    
    • 1

    应用形式toDayOfDay(date),例如date = ‘2018-07-25’,得到结果为25

    3.4 截取计算星期

    toDayOfWeek()
    
    • 1

    应用形式toDayOfWeek(date),例如date = ‘2018-07-25’,得到结果为3
    上方

    3.5 截取计算小时

    toHour()
    
    • 1

    应用形式toHour(ts),例如date = ‘2018-07-25 08:10:20’,得到结果为8

    3.6 截取计算分钟

    toMinute()
    
    • 1

    与上方类似,用在物化视图中分钟级聚合

    3.7 截取计算秒

    toSecond()
    
    • 1

    与上方类似
    以下函数与上方函数极为类似。

    3.8 从小时开始截取

    toStartOfHour()
    
    • 1

    应用形式toStartOfHour(ts),例如date = ‘2018-07-25 08:01:21’,得到结果为2018-07-25 08:00:00

    3.9 从分钟开始截取(一分钟粒度)

    toStartOfMinute()
    
    • 1

    应用形式toStartOfMinute(ts),例如date = ‘2018-07-25 08:01:21’,得到结果为2018-07-25 08:01:00

    3.10 从分钟开始截取(五分钟粒度)

    toStartOfFiveMinute()
    
    • 1

    应用形式toStartOfFiveMinute(ts),随着时间的推移将日期缩短到五分钟间隔的开始。例如date = ‘2018-07-25 08:05:21’,得到结果为2018-07-25 08:00:21,当秒级/分钟级数据量较大时,考虑五分钟聚合可以使用该函数。

    4、字符串处理

    4.1 小写转换

    lower()
    
    • 1

    应用形式lower('aBcA')

    4.2 大写转换

    upper()
    
    • 1

    应用形式upper('aBcA')

    4.3 字符串拼接

    concat(s1,s2,...)
    
    • 1

    应用形式concat('adsa','121sf')

    4.4 字符串截取

    substring(s, offset, length)
    
    • 1

    应用形式substring('iioomAjOOBJB', 2, 3),从字符串的第2位起截取3个字符,得到ioo

    4.5 字符串拆分

    splitByString(separator , s)
    
    • 1

    SELECT splitByString(',','afffv,safe,efwee,htrjt' ) AS temp;,结果:[‘afffv’,‘safe’,‘efwee’,‘htrjt’]。
    length()结合使用,SELECT length(splitByString(',','afffv,safe,efwee,htrjt' )) AS temp_num;,结果:4。

    5、搜索函数

    5.1 正则匹配之match()

      match(haystack,pattern)
    
    • 1

    应用形式match('avhsca','vh),是否由匹配字段,字符串中由’vh’字符串,结果输出为1

    5.2 正则匹配之extract()

    返回匹配到的第一个子串:

    extract(haystack,pattern)
    
    • 1

    应用形式extract('iioomAj12123124OOBJB', '\d+'),匹配多个数字,并返回第一个子串,结果输出为’12123124’
    extract('iioomAj12123124OOBJB', '\[a-z]+'),匹配小写字母的子串,并返回第一个子串,结果输出为’iioom’

    5.3 正则匹配之extractAll()

    返回匹配到的所有子串:

       extractAll(haystack,pattern)
    
    • 1

    应用形式extract('iioomAj12123124OOBJB', '\[A-Z]+'),匹配大写字母的子串,并返回所有子串,结果输出为[‘A’,‘OOBJB’]

    5.4 正则匹配之like()

    返回匹配到的数据:

       like(haystack,pattern)
    
    • 1

    可以包含:%和_等字符
    一般应用于模糊查找URL

    5.5 正则匹配之notLike()

       notLike(haystack,pattern)
    
    • 1

    得到结果与like()相反。

    5.6 正则替换之replaceOne()

      replaceOne(haystack,pattern,replacement)
    
    • 1

    只替换第一个匹配到的pattern。

    5.7 正则替换之replaceAll()

      replaceAll(haystack,pattern,replacement)
    
    • 1

    替换匹配到的所有pattern。可以和length()函数搭配来统计某个字符的个数,SELECT (length(task_ids)-length(replaceAll(task_ids,',','')) + 1) AS task_num FROM dcm_mission_all ;统计任务的数量,task_ids可能取值为‘123,5325,564564,234’,执行后结果为:4。

    5.8 正则替换之replaceRegexpAll()

     replaceRegexpAll(haystack,pattern,replacement)
    
    • 1

    与replaceAll()类似,pattern可以用正则表示,SELECT replaceRegexpAll('Hello, World!', '^', 'here: ') AS res;,得到:here: Hello, World!

    6、条件语句

    6.1 if()

    if(cond,then,else)
    
    • 1

    条件cond为TRUE,返回then处的结果,否则,返回else处的结果。

    7、URL操作函数

    7.1 protocol()

    用法:

    SELECT  protocol('http://www.baidu.com.cn')
    
    • 1

    结果:http。

    7.2 domain()

    用法:

    SELECT  domain('http://www.baidu.com.cn')
    
    • 1

    结果:www.baidu.com.cn

    7.3 domainWithoutWWW()

    用法:

    SELECT  domainWithoutWWW('http://www.baidu.com.cn')
    
    • 1

    结果:baidu.com.cn

    7.4 topLevelDomain()

    用法:

    SELECT topLevelDomain('http://www.baidu.com.cn')
    
    • 1

    结果:cn。

    7.5 firstSignificantSubdomain()

    用法:

    SELECT  firstSignificantSubdomain('http://www.baidu.com.cn')`
    
    • 1

    结果:baidu。

    7.6 path()

    用法:

    SELECT path('https://www.baidu.com/s?wd=SQL%E4%B8%AD%E7%9A%84split&rsv_spt=1&rsv_iqid=0xb79d2a30000683c8&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&rqlang=cn&tn=baiduhome_pg&rsv_enter=0&oq=SQL%2520if()&rsv_t=c9ecC9JfyBAd%2Bobx3UmEq4ZivwZzO7M%2Bar6xjhU3caPXwxMwD76F9AUI%2FaX%2B6jUYE4Lb&inputT=7416&rsv_pq=c8d2f6750000cc4e&rsv_sug3=35&rsv_sug1=35&rsv_sug7=100&rsv_sug2=0&rsv_sug4=8521')
    
    • 1

    结果:/s。

    7.7 cutQueryString()

    用法:

    SELECT  cutQueryString('https://www.baidu.com/s?wd=SQL%E4%B8%AD%E7%9A%84split&rsv_spt=1&rsv_iqid=0xb79d2a30000683c8&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&rqlang=cn&tn=baiduhome_pg&rsv_enter=0&oq=SQL%2520if()&rsv_t=c9ecC9JfyBAd%2Bobx3UmEq4ZivwZzO7M%2Bar6xjhU3caPXwxMwD76F9AUI%2FaX%2B6jUYE4Lb&inputT=7416&rsv_pq=c8d2f6750000cc4e&rsv_sug3=35&rsv_sug1=35&rsv_sug7=100&rsv_sug2=0&rsv_sug4=8521')
    
    • 1

    结果:https://www.baidu.com/s。

    8、字典函数

    8.1 dictGetString()

    用法:

    SELECT dictGetString('ck_abc_dic', 'ck_value', tuple(_abc)) AS abc
    FROM DB.TABL
    WHERE date=today()
    LIMIT 10;

    ------------恢复内容结束------------

  • 相关阅读:
    0:一种过滤机制的MobileMenuList
    MobileMenuImage
    (转)How To Kill runaway processes After Terminating Concurrent Request
    fnd_profile.value('AFLOG_ENABLED')的取值 和配置文件相关SQL
    供应商 银行 SQL (转自ITPUB)
    重启并发管理器
    定义并发请求时 业务实体值集显示没有值数据
    Oracle EBS环境下查找数据源(OAF篇)
    查看在线EBS用户的相关信息
    转,Oracle中关于处理小数点位数的几个函数,取小数位数,Oracle查询函数
  • 原文地址:https://www.cnblogs.com/no-nick/p/13827503.html
Copyright © 2020-2023  润新知