ios10升级-pdf缩小打印
![videoengine log](/uploads/image/0046.jpg)
2023年4月4日发(作者:微信 连接失败)
clickhouse函数
聚合函数
常⽤函数
count
返回记录条数。
如
SELECTcount()FROMtable
注:如果求COUNT(DISTINCTx),则使⽤uniq函数
any(x)
返回遇到的第⼀个值
备注:待补充
anyHeavy(x)
通过算法,得到⼀个经常出现的值.
⽰例
SELECTanyHeavy(AirlineID)ASresFROMontime
anyLast(x)
返回最后遇到的值
min(x)
返回最⼩值
max(x)
返回最⼤值
argMin(arg,val)
TBD
argMax(arg,val)
TBD
sum(x)
求和
仅对数值有效
sumWithOverflow(x)
求和
如果超过上限,则报错
sumMap(key,value)
对于相同的key,对其value求和
⽰例
输⼊
CREATETABLEsum_map(
dateDate,
timeslotDateTime,
statusMapNested(
statusUInt16,
requestsUInt64
)
)ENGINE=Log;
INSERTINTOsum_mapVALUES
('2000-01-01','2000-01-0100:00:00',[1,2,3],[10,10,10]),
('2000-01-01','2000-01-0100:00:00',[3,4,5],[10,10,10]),
('2000-01-01','2000-01-0100:01:00',[4,5,6],[10,10,10]),
('2000-01-01','2000-01-0100:01:00',[6,7,8],[10,10,10]);
SELECT
timeslot,
sumMap(,ts)
FROMsum_map
GROUPBYtimeslot
查询
┌────────────timeslot─┬─sumMap(,ts)─┐
│2000-01-0100:00:00│([1,2,3,4,5],[10,10,20,10,10])│
│2000-01-0100:01:00│([4,5,6,7,8],[10,10,20,10,10])│
└─────────────────────┴──────────────────────────────────────────────┘
avg(x)
平均值
uniq(x)
求近似的排重值,适⽤于数值,字符串,⽇期,⽇期时间,以及multiple和tuple参数
使⽤了⾃适合抽样算法:在65535下⾮常准确和⾼效。
uniqCombined(x)
求近似的排重值,适⽤于数值,字符串,⽇期,⽇期时间,以及multiple和tuple参数
使⽤了组合的三个算法:数组,hash表和表。
内存消耗⽐uniq要⼩⼏倍,同时精度⾼⼏倍,但是性能⼀般⽐uniq慢,虽然有时也会快。最⼤⽀持到96KiB个状态.
uniqHLL12(x)
使⽤HyperLogLog算法来做排重值的近似计算,⽀持2.5KB个状态.
uniqExact(x)
计算精确的排重值.
groupArray(x),groupArray(max_size)(x)
创建⼀个数组值
我⾃⼰的⽰例
:)selectstr_chema_nested;
SELECTstr_nest.y
FROMschema_nested
┌─str_nest.y───────────────┐
│['search','mock1@']│
│['image','mock1@']│
│['video','mock2@']│
│['image','mock2@']│
└──────────────────────────┘
┌─str_nest.y──────────────────────────────┐
│['search','mock1@','news']│
│['image','mock1@','search','news']│
└─────────────────────────────────────────┘
┌─str_nest.y─────────────────────────────┐
│['video','mock2@']│
│['image','mock2@','music','news']│
└────────────────────────────────────────┘
d:0.003sec.
:)selectgroupArray(str_nest.y)fromschema_nested
SELECTgroupArray(str_nest.y)
FROMschema_nested
┌─groupArray(str_nest.y)────────────────────────────────────────────────────────────────────────────────────────────────────────────
│[['search','mock1@'],['image','mock1@'],['video','mock2@'],['image','mock2@'],['search','mock1@','news'],['image','mock1@
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
d:0.003sec.
:)selectgroupArray(3)(str_nest.y)fromschema_nested
SELECTgroupArray(3)(str_nest.y)
FROMschema_nested
┌─groupArray(3)(str_nest.y)──────────────────────────────────────────────────┐
│[['search','mock1@'],['image','mock1@'],['video','mock2@']]│
└────────────────────────────────────────────────────────────────────────────┘
d:0.002sec.
groupArrayInsertAt
TBD
groupUniqArray(x)
⽣成排重的数组,内存消耗与uniqExact⽅法相同
:)selectgroupUniqArray(str_nest.y)fromschema_nested
SELECTgroupUniqArray(str_nest.y)
FROMschema_nested
──────groupUniqArray(str_nest.y)───────────────
[['image','mock2@','music','news'],['image','mock1@'],['image','mock2@'],['video','mock2@'],['image','mock1@','search','news'],['se
────────────────────────────────────────────────
d:0.004sec.
quantile(level)(x)
估算百分位点值.
level是⼀个0⾄1之间的常数,但是不要为0或者1.0或者1时,使⽤min,max⽅法最合适.
quantileDeterministic(level)(x,determinator)
TBD
quantileTiming(level)(x)
TBD
quantileTimingWeighted(level)(x,weight)
TBD
quantileExact(level)(x)
TBD
quantileExactWeighted(level)(x,weight)
TBD
quantileTDigest(level)(x)
TBD
median
求中位数
每⼀个百分位点⽅法,都对应着⼀个求中位数的⽅法,如
median,medianDeterministic,medianTiming,medianTimingWeighted,medianExact,medianExactWeighted,medianTDigest
quantiles(level1,level2,...)(x)
求多个百分位点
也对应着⼀系列的⽅法quantiles,quantilesDeterministic,quantilesTiming,quantilesTimingWeighted,quantilesExact,
quantilesExactWeighted,quantilesTDigest
varSamp(x)
求⽅差,结果是随机变量的⽅差的⽆偏估计
varPop(x)
求总体⽅差
stddevSamp(x)
为varSamp(x)的平均根
stddevPop(x)
为varPop(x)的平均根
topK
使⽤了算法来计算topK
同时使⽤了算法来进⾏reduceandcombine.
topK(N)(column)
:)selecttopK(3)(str_nest.y)fromschema_nested
SELECTtopK(3)(str_nest.y)
FROMschema_nested
┌─topK(3)(str_nest.y)────────────────────────────────────────────────────────┐
│[['video','mock2@'],['search','mock1@'],['image','mock1@']]│
└────────────────────────────────────────────────────────────────────────────┘
d:0.004sec.
covarSamp(x,y)
计算协⽅差
covarPop(x,y)
计算总体协⽅差
corr(x,y)
计算Pearson相关系数
含参聚合函数
学习⾃
sequenceMatch(pattern)(time,cond1,cond2,...)
按顺利先后匹配事件
pattern:类似正则表达式的匹配规则
time:事件发⽣时间
cond1,cond2:最多32个,来标识条件是否满⾜
返回值
0:不匹配
1:匹配
⽰例
sequenceMatch('(?1).*(?2)')(EventTime,URLLIKE'%company%',URLLIKE'%cart%')
是否存在事件链,即先访问了company的事件,再访问了cart的事件
也可以通过别的聚合⽅法来表⽰
minIf(EventTime,URLLIKE'%company%')
sequenceCount(pattern)(time,cond1,cond2,...)
逻辑与sequenceMatch函数⼀样,但是返回值为chain的编号.
TBD
uniqUpTo(N)(x)
返回N个排重值数⽬,如果实际值⼤于N,则返回N+1
聚合函数后缀
-If
任何聚合函数都可以通过增加后缀If,来增加⼀个外部参数条件.聚合函数仅处理满⾜条件的记录⾏.如果条件⼀次也没有触发,则返回默认
值(通常是0或者是空字符串)
这样可以⼀次处理多个聚合条件,⽽不需要转换为⼦查询或者JOIN来计算.
⽰例
sumIf(column,cond),countIf(cond),avgIf(x,cond),quantilesTimingIf(level1,level2)(x,cond),argMinIf(arg,val,cond)
-Array
任何聚合函数都可以通过增加后缀Array,来使原来的参数类型T变为新的参数类型Array(T)。
在处理时,原来的聚合函数会依次处理Array中的每⼀项.
⽰例
sumArray(arr):对Arrays中的所有元素进⾏求和,即sum(arraySum(arr))
uniqArray(arr):对Arrays中的所有元素进⾏排重值,即uniq(arrayJoin(arr))
-If和-Array可以组合使⽤,但是Array必须在前,If在后。例如
uniqArrayIf(arr,cond)
quantilesTimingArrayIf(level1,level2)(arr,cond)
-State
返回的不是结果值,返回的是中间状态.这个是与AggregatingMergeTree来配合使⽤的.
-Merge
聚合函数会把中间状态会为参数,进⾏Merge,来完成聚合,返回最终的结果值.
-MergeState
与-Merge类似,但是返回的不是结果值,⽽是类似于-State的中间状态.
-ForEach
将对table使⽤的聚合函数,转换为对数组的聚合函数。对数组的每⼀项进⾏处理,返回⼀个结果数组。
如:
sumForEach([1,2],[3,4,5],[6,7])
结果为
[10,13,5]
这个⽹站挺多clickhouse相关的,可以参考下
更多推荐
videoengine log
发布评论