携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第11天,点击查看活动详情
strleft(VARCHAR str)
它返回具有指定长度的字符串的左边部分,长度的单位为utf8字符
| select strleft ( "Hello doris" , 5 **); |
|---|
strright(VARCHAR str)
它返回具有指定长度的字符串的右边部分, 长度的单位为utf8字符
| select strright ( "Hello doris" , 5 **); |
|---|
聚合函数
APPROX_COUNT_DISTINCT(expr)
返回类似于 COUNT(DISTINCT col) 结果的近似值聚合函数。
它比 COUNT 和 DISTINCT 组合的速度更快,并使用固定大小的内存,因此对于高基数的列可以使用更少的内存。
| select city , approx_count_distinct ( user_id ) from site_visit group by city **; |
|---|
AVG([DISTINCT] expr)
用于返回选中字段的平均值
可选字段DISTINCT参数可以用来返回去重平均值
| SELECT date , AVG ( cost ) FROM site_visit group by date ;**** |
|---|
| SELECT date , AVG ( distinct cost ) FROM site_visit group by date ; |
BITMAP_UNION
| 步骤 | 说明 |
|---|---|
| 1 | 创建表 |
CREATE TABLE pv_bitmap ( dt int ( 11 ) NULL COMMENT "" , page varchar ( 10 ) NULL COMMENT "" , user_id bitmap BITMAP_UNION NULL COMMENT "") ENGINE**=OLAPAGGREGATE** KEY ( dt , page **)**COMMENT "OLAP"DISTRIBUTED BY HASH ( dt ) BUCKETS 2 ; | |
| 注:当数据量很大时,最好为高频率的 bitmap_union 查询建立对应的 rollup 表 | |
| ALTER TABLE pv_bitmap ADD ROLLUP pv ( page , user_id ); | |
| 2 | 插入数据 |
| insert into pv_bitmap values ( 20191206 , 'xiaoxiang' , to_bitmap ( 101 )); insert into pv_bitmap values ( 20191206 , 'waimai' , to_bitmap ( 101 )); insert into pv_bitmap values ( 20191207 , 'xiaoxiang' , to_bitmap ( 101 )); insert into pv_bitmap values ( 20191207 , 'waimai' , to_bitmap ( 102 )); insert into pv_bitmap values ( 20191208 , 'xiaoxiang' , to_bitmap ( 101 )); insert into pv_bitmap values ( 20191208 , 'waimai' , to_bitmap ( 101 )); | |
| 3 | 查询数据 |
| BITMAP_UNION(expr) : 计算两个 Bitmap 的并集,返回值是序列化后的 Bitmap 值 | |
| select bitmap_count ( bitmap_union ( user_id )) from pv_bitmap ; | |
| BITMAP_COUNT(expr) : 计算 Bitmap 的基数值 | |
| select bitmap_union_count ( user_id ) from pv_bitmap ; | |
| BITMAP_UNION_COUNT(expr): 和 BITMAP_COUNT(BITMAP_UNION(expr)) 等价 | |
| BITMAP_UNION_INT(expr) : 和 COUNT(DISTINCT expr) 等价 (仅支持 TINYINT,SMALLINT 和 INT) | |
| select bitmap_union_int ( id ) from pv_bitmap ; |
COUNT([DISTINCT] expr)
用于返回满足要求的行的数目
| select count (*) from site_visit group by date **; |
|---|
| select count ( date ) from site_visit group by date ; |
| select count ( distinct date ) from site_visit group by date ; |
HLL_UNION_AGG(hll)
HLL是基于HyperLogLog算法的工程实现,用于保存HyperLogLog计算过程的中间结果
它只能作为表的value列类型、通过聚合来不断的减少数据量,以此来实现加快查询的目的
基于它得到的是一个估算结果,误差大概在1%左右,hll列是通过其它列或者导入数据里面的数据生成的
导入的时候通过hll_hash函数来指定数据中哪一列用于生成hll列,它常用于替代count distinct,通过结合rollup在业务上用于快速计算uv等
| select HLL_UNION_AGG ( uv_set ) from test_uv ;**** |
|---|