clickhouse之函数(一·)

时间与日期

SELECT
    toDateTime('2016-06-15 23:00:00') AS time,
    toDate(time) AS date_local,
    toDate(time, 'Asia/Yekaterinburg') AS date_yekat,
    toString(time, 'US/Samoa') AS time_samoa
┌────────────────time─┬─date_local─┬─date_yekat─┬─time_samoa──────────┐
│ 2016-06-15 23:00:00 │ 2016-06-15 │ 2016-06-16 │ 2016-06-15 09:00:00 │

toYear、toMonth、toDayOfMonth……原址虽然是英文挺理解的

timeSlot

    把时间调到半小时,这函数是Yandex特有的。Metrica,因为半小时是将一个会话分成两个会话的最小时间,如果跟踪标记显示单个用户的连续页面浏览量在时间上的差异严格大于这个数量。这意味着元组(标记ID、用户ID和时间槽)可以用于搜索包含在相应会话中的页面视图。

timeSlotss(startTime,duration,[size])

   对于从“StartTime”开始并持续“Duration”秒的时间间隔,它及时返回一个时间点数组,其中包含从该时间间隔四舍五入到以秒为单位的“Size”的点,size可选默认值为1800;用于搜索页面浏览量

 

String

   empty、notEmpty、length、lengthUTF8/lower/upper/lowerUTF8小写/upperUTF8大写/revverse/reverseUTF8/concat(s1,s2,…)连接、substring(s, offset, length)、substringUTF8(s, offset, length)截取、appendTrailingCharIfAbsent(s, c)追加、convertCharset(s, from, to)转编码、base64Encode(s)、base64Decode(s)解码、tryBase64Decode(s)解码 不报异常返空str

 

searching strings

   区分大小写,position(haystack, needle)在haystack中查needle返位置,从1开始,0标识未找到

   multiPosition(haystack, [needle_1, needle_2, ..., needle_n])返回array

   firstMatch(haystack, [needle_1, needle_2, ..., needle_n])

   multiSearch(haystack, [needle_1, needle_2, ..., needle_n])如果匹配则返1否则0

   match(haystack, pattern)检查字符串是否匹配re2正则表达式,0不匹配1匹,别含null

   extract(haystack, pattern)返回匹配pattern的str,否则返空strign

   extractAll(haystack, pattern)返回所有匹配项,数组

   like(haystack, pattern), haystack LIKE pattern operator检查字符串是否匹配正则,%任意_单字节

   notLike(haystack, pattern), haystack NOT LIKE pattern operator

 

replacing string

conditional functions

   if(cond, then, else), cond ? operator then : else返回如果cond != 0,或者cond = 0。cond类型必须是UInt8,然后和else类型必须是最小的公共类型;then and else can be NULL

multiIf

  multiIf(cond_1, then_1, cond_2, then_2...else)

┌─x─┬────y─┐
│ 1 │ ᴺᵁᴸᴸ │
│ 2 │    3 │
SELECT multiIf(isNull(y) x, y < 3, y, NULL) FROM t_null
┌─multiIf(isNull(y), x, less(y, 3), y, NULL)─┐
│                                          1 │
│                                       ᴺᵁᴸᴸ │

这个数学函数的支持也是强大了,近乎超过了宝宝的数学范畴

https://clickhouse.yandex/docs/zh/query_language/functions/array_functions/ 虽是英文但是可以自己看

ClickHouse中,可以使用排名函数来对数据进行排名。常见的排名函数包括row_number()、rank()和dense_rank()。其中,row_number()函数按照值的排序顺序为每一行生成一个自增编号,不会重复;rank()函数按照值的排序顺序为每一行生成一个自增编号,值相等时会重复;dense_rank()函数按照值的排序顺序为每一行生成一个自增编号,值相等时会重复,但不会产生空位。这些排名函数不需要任何参数。除了排名函数ClickHouse还提供了其他的分析函数,如sum() over()、count() over()、lead()/lag() over()和ntile(n) over()等。这些函数可以用于对数据进行聚合、计数、前后行的比较和分片等操作。需要注意的是,ClickHouse目前还没有提供标准SQL的分析函数,但计划在2020年第四季度的早期实现此功能。在此之前,可以使用ClickHouse提供的函数来实现相应的功能。\[1\]更多关于ClickHouse排名函数的信息可以参考相关的GitHub讨论和问题链接\[2\]\[3\]。 #### 引用[.reference_title] - *1* *2* *3* [Clickhouse 分析函数 window functions 窗口函数](https://blog.csdn.net/vkingnew/article/details/106781788)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值