日期类函数
时间或日期截取函数(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 | 合并参数中传递的所有数组 |