日期类函数

时间或日期截取函数(to)—— 返回非日期

函数 用途 举例 结果
toYear() 取日期或时间日期的年份 toYear(toDateTime(‘2018-12-11 11:12:13’)
toYear(toDate(‘2018-12-11’))
2018
2018
toMonth() 取日期或时间日期的月份 toMonth(toDateTime(‘2018-12-11 11:12:13’))
toMonth(toDate(‘2018-12-11’))
12
12
toDayOfMonth() 取日期或时间日期的天(1-31 toMonth(toDayOfMonth(‘2018-12-11 11:12:13’))
toMonth(toDayOfMonth(‘2018-12-11’))
11
11
toDayOfWeek() 取日期或时间日期的星期(星期一为1,星期日为7) toDayOfWeek(toDateTime(‘2018-12-11 11:12:13’))
toDayOfWeek(toDate(‘2018-12-11’))
2
2
toHour() 取时间日期的小时 toHour(toDateTime(‘2018-12-11 11:12:13’)) 11
toMinute() 取时间日期的分钟 toMinute(toDateTime(‘2018-12-11 11:12:13’)) 12
toSecond() 取时间日期的秒 toSecond(toDateTime(‘2018-12-11 11:12:13’)) 13
toMonday() 取时间日期最近的周一(返回日期) toMonday(toDate(‘2018-12-11’))
toMonday(toDateTime(‘2018-12-11 11:12:13’))
2018-12-10
2018-12-10
toTime() 将时间日期的日期固定到某一天,保留原始时间 toTime(toDateTime(‘2018-12-11 11:12:13’)) 1970-01-02 11:12:13
toDateTime() 将时间戳转换为时间类型 toDateTime(at_timestamp/1000)

时间或日期截取函数(toStartOf)—— 返回日期

函数 用途 举例 结果
toStartOfMonth() 取日期或时间日期的月份的第一天 toStartOfMonth(toDateTime(‘2018-12-11 11:12:13’))
toStartOfMonth(toDate(‘2018-12-11’))
2018-12-01
2018-12-01
toStartOfQuarter() 取日期或时间日期的季度的第一天 toStartOfQuarter(toDateTime(‘2018-12-11 11:12:13’))
toStartOfQuarter(toDate(‘2018-12-11’))
2018-10-01
2018-10-01
toStartOfYear() 取日期或时间日期的年份的第一天 toStartOfYear(toDateTime(‘2018-12-11 11:12:13’))
toStartOfYear(toDate(‘2018-12-11’))
2018-01-01
2018-01-01
toStartOfMinute() 截取时间日期到分钟(之后归零) toStartOfMinute(toDateTime(‘2018-12-11 11:12:13’)) 2018-12-11 11:12:00
toStartOfFiveMinute() 截取时间日期到最近的5的倍数分钟(之后归零) toStartOfFiveMinute(toDateTime(‘2018-12-11 11:12:13’)) 2018-12-11 11:10:00
toStartOfFifteenMinutes() 截取时间日期到最近的15的倍数分钟(之后归零) toStartOfFifteenMinutes(toDateTime(‘2018-12-11 11:12:13’)) 2018-12-11 11:00:00
toStartOfHour() 截取时间日期到小时(之后归零) toStartOfHour(toDateTime(‘2018-12-11 11:12:13’)) 2018-12-11 11:00:00
toStartOfDay() 截取时间日期到天(之后归零) toStartOfDay(toDateTime(‘2018-12-11 11:12:13’)) 2018-12-11 00:00:00
timeSlot() 将时间日期中,分钟大于等于30的归于30,分钟数小于30的归为00 timeSlot(toDateTime(‘2018-12-11 11:33:13’))
timeSlot(toDateTime(‘2018-12-11 11:33:13’))
2018-12-11 11:00:00
2018-12-11 11:30:00

日期或时间日期生成函数

函数 用途 举例 结果
now() 生成当前时间日期 now() 2018-12-13 10:10:12
today() 生成今天的日期 today() 2018-12-13
yesterday() 生成昨天的日期 yesterday() 2018-12-12

类型转化类函数

精度保留(非四舍五入)

函数 用途 举例 结果
toDecimal32(‘whdwjfew’,8) 将数值型或者含有非数字的字符串进行精度保留 toDecimal32(23.12291, 3)
toDecimal32(‘_23.12291’, 3)
23.122
0.000
toDecimal64(‘whdwjfew’,8) 将数值型或者含有非数字的字符串进行精度保留 toDecimal64(23.12291, 3)
toDecimal64(‘_23.12291’, 3)
23.122
0.000
toDecimal128(‘whdwjfew’,8) 将数值型或者含有非数字的字符串进行精度保留 toDecimal128(23.12291, 3)
toDecimal128(‘_23.12291’, 3)
23.122
0.000

字符串转化为整数

函数 用途 举例 结果
toUInt8OrZero() 将无符号整数字符型转化为整数型,否则返回0 toUInt8OrZero(‘123’)
toUInt8OrZero(‘123.12’)
123
0
toInt8OrZero() 将整数字符型转化为整数型,否则返回0 toInt8OrZero(‘123’)
toInt8OrZero(‘-123’)
123
-123
toFloat32OrZero() 将数值字符串型转化为数值型,注意:从toFloat32OrZero开始,丢32的没有对应的函数 toFloat32OrZero(‘-123’)
toFloat32OrZero(‘123.123’)
-123
123.123
toFloat64OrZero string类型转化为数值型

日期与时间日期转化

字符串转化为整数

函数 用途 举例 结果
toDate() 将字符型日期转化为日期型 toDate(‘2018-12-24’) 2018-12-24
toDateTime() 将字符型时间日期转化为时间日期型 toDateTime(‘2018-12-24 10:10:00’) 2018-12-24 10:10:00

转化为字符型

函数 用途 举例 结果
toString() 将数值型、字符型、日期等转化为字符型 toString(‘2018-12-24’)
toString(‘123’)
2018-12-24
123

查看数据类型

函数 用途 举例 结果
toTypeName() 返回数据的类型 toTypeName(toString(‘123’))
toTypeName(toDate(‘2018-12-24’))
String
Date

字符串操作

基本字符串操作

函数 用途 举例 结果
empty() 判断字符串是空为1,否则为0 empty(‘’)
empty(‘123a’)
1
0
notEmpty() 判断字符串是非空为1,否则为0 notEmpty(‘’)
notEmpty(‘123a’)
0
1
length() 返回字符串的长度 length(‘’)
length(‘123a’)
0
4
lower() 将字符串转为小写 lower(‘aBc’) abc
upper() 将字符串转为大写 upper(‘aBc’) ABC
reverse() 将字符串反转 reverse(‘abc’) cba
substring(s, offset, length) 字符串截取 substring(‘123abcABC’, 2, 3) 23a
appendTrailingCharIfAbsent(s, c) 如果字符串s非空,则将s后追加一个字符c(s最后一个字符与c不同),否则不处理 appendTrailingCharIfAbsent(‘123abc’, ‘b’)
appendTrailingCharIfAbsent(‘123abc’, ‘c’)
123abcb
123abc

字符串查找

函数 用途 举例 结果
match(haystack,pattern) 字符串正则匹配,返回0或1 match(‘avhsca’,’vh’) 1
extract(haystack,pattern) 返回匹配到的第一个子串 extract(‘iioomAj12123124OOBJB’, ‘\d+’) 返回 12123124
extractAll(haystack,pattern) 返回匹配到的所有子串,输出列表 extractAll(‘iioomAj12123124OOBJ123B’, ‘\d+’) [12123124,123]
like(haystack,pattern) 匹配到的数据返回1,否则返回0 like(‘avhsca’,’%vh%’)
like(‘avhsca’,’%vabjh%’)
1
0
notLike(haystack, pattern) 与like()函数相反 notLike(‘avhsca’,’%vh%’)
notLike(‘avhsca’,’%vabjh%’)
0
1

字符串替换

函数 用途 举例 结果
replaceOne(haystack,pattern,replacement) 替换第一个匹配到的pattern replaceOne(‘asd123cbbj464sd’, ‘sd’, ‘-‘) a-123cbbj464sd
replaceAll(haystack,pattern,replacement) 替换所有匹配到的pattern replaceOne(‘asd123cbbj464sd’, ‘sd’, ‘-‘) a-123cbbj464-
replaceRegexpOne(haystack, pattern, replacement) 正则匹配替换第一个匹配到的pattern replaceRegexpOne(‘Hello, World!’, ‘o’, ‘- ‘) Hell- , World!
replaceRegexpAll(haystack,pattern,replacement) 正则匹配替换所有匹配到的pattern replaceRegexpAll(‘Hello, World!’, ‘^’, ‘here: ‘)
replaceRegexpAll(‘Hello, World!’, ‘o’, ‘— ‘)
here: Hello, World!
Hell— , W— rld!

字符串分割

函数 用途 举例 结果
splitByChar(separator, s) 以单个字符分割字符串 splitByChar(‘-‘, ‘qw-asaf-asfqw-2312-asd’) [‘qw’,’asaf’,’asfqw’,’2312’,’asd’]
splitByString(separator, s) 以单个或多个字符分割字符串 splitByString(‘-‘, ‘qw-asaf-asfqw-2312-asd’)
splitByString(‘-a’, ‘qw-asaf-asfqw-2312-asd’)
[‘qw’,’asaf’,’asfqw’,’2312’,’asd’]
[‘qw’,’saf’,’sfqw-2312’,’sd’]

字符串拼接

函数 用途 举例 结果
concat(s1,s2,…) 将字符串拼接 concat(‘123’, ‘abc’, ‘ABC’) 123abcABC

条件语句

函数 用途 举例 结果
if(cond,then,else) 条件输出 if(1 > 2, ‘正确’, ‘错误’) 错误
multiIf(cond_1, then_1, cond_2, then_2…else) 多条件输出 multiIf(1 > 2, ‘正确’, 2 < 0, ‘正确’, ‘错误’) 错误
case field when 1 then 11 when 2 then 22 else 33 end 多条件输出 case method when ‘GET’ then ‘GET1’ when ‘POST’ then ‘POST1’ else 0 end

数学函数

函数 用途 举例 结果
e() 返回e的值 e() 2.718281828459045
pi() 返回pi的值 pi() 3.141592653589793
exp(x) 返回e的x次方 exp(1) 2.718281828459045
exp2(x) 返回2的x次方 exp2(2) 4
exp10(x) 返回10的x次方 exp10(1) 10
log(x) 返回log以e为底的对数值 log(e()) 1
log2(x) 返回log以2为底的对数值 log2(2) 1
log10(x) 返回log以10为底的对数值 log10(100) 2
sqrt(x) 对x开平方 sqrt(4) 2
cbrt(x) 对x开立方 cbrt(8) 2
pow(x, y) 返回x的y次方 pow(2, 3) 8

舍入函数

函数 用途 举例 结果
floor(x[, N]) 向下取数 floor(123.883, 1)
floor(123.883, -1)
123.8
120
ceil(x[, N]) 向上取数 ceil(123.883, 1)
ceil(123.883, -1)
123.9
130
round(x[, N]) 四舍五入 round(123.883, 1)
round(123.883, -1)
123.9
120

LIMIT操作

函数 用途 举例 结果
LIMIT N 查询N条数据,一般跟ORDER BY 连用 ORDER BY hit DESC LIMIT 10 按照hit列降排取前10
LIMIT N BY Clause 按照Clause列查询N条数据,一般跟ORDER BY 连用 SELECT date, domain, count(1) AS hit from db.tb where…
GROUP BY date, domain,ORDER BY hit DESC LIMIT 10 BY date
取每天TOP10的域名

json数据处理

函数 用途 举例 结果
visitParamExtractUInt(params, name) 将名为“name”的字段的值解析成UInt64
visitParamExtractInt(params, name) 与visitParamExtractUInt相同,但返回Int64。
visitParamExtractFloat(params, name) 与visitParamExtractUInt相同,但返回Float64
visitParamExtractRaw(params, name) 返回字段的值,包含空格符
visitParamExtractString(params, name) 使用双引号解析字符串。这个值没有进行转义。如果转义失败,它将返回一个空白字符串 visitParamExtractString(‘{“abc”:”\n\u0000”}’, ‘abc’) = ‘\n\0’

url函数

函数 用途 举例 结果
protocol 返回URL的协议
domain 获取域名
domainWithoutWWW 返回域名并删除第一个’www.’
topLevelDomain 返回顶级域名。例如:.ru
path 返回URL路径
pathFull 返回URL路径,包括请求参数和fragment。例如:/top/news.html?page=2#comments
queryString 返回请求参数。例如:page=1&lr=213,请求参数不包含问号已经# 以及# 之后所有的内容
extractURLParameter(URL, name) 返回URL请求参数中名称为‘name’的参数。如果不存在则返回一个空字符串。如果存在多个匹配项则返回第一个相匹配的。
extractURLParameters(URL) 返回一个数组,其中以name=value的字符串形式返回url的所有请求参数。
decodeURLComponent(URL) 返回已经解码的URL

数组函数

函数 用途 举例 结果
arrayElement(arr, n), operator arr[n] 从数组arr中获取索引为“n”的元素
length 返回数组中的元素个数。 结果类型是UInt64
arrayConcat 合并参数中传递的所有数组