文章目录

  • 1. 概述

1. 概述

转载:Clickhouse查询语句 sample

注意:

sample子句只能用于MergeTree系列引擎的数据表,并且在create table的时候就声明sample by 抽样表达式。

sample子句提供了近似计算的功能,能够实现数据采样的功能,使查询仅仅返回采样数据而不是全部数据,从而有效减少查询负载。

sample子句的采样设计是一种幂等设计,即在数据发生变化的时候使用相同的采样规则能返回相同的数据。这种特性非常适合那些可以接受近似查询结果的场景。

官方提供了如下的使用场景:

  1. When you have strict timing requirements (like <100ms) but you can’t justify the cost of additional hardware
    resources to meet them.
  2. When your raw data is not accurate, so approximation doesn’t noticeably degrade the quality.
  3. Business requirements target approximate results (for cost-effectiveness, or to market exact results to
    premium users).
Clickhouse> create table clicks(CounterID UInt64,EventDate DATE, UserID UInt64) engine=MergeTree()
order by (CounterID,intHash32(UserID)) sample by intHash32(UserID);CREATE TABLE clicks
(`CounterID` UInt64,`EventDate` DATE,`UserID` UInt64
)
ENGINE = MergeTree()
ORDER BY (CounterID, intHash32(UserID))
SAMPLE BY intHash32(UserID)

插入测试数据:

Clickhouse> insert into clicks select CounterID,EventDate,UserID from hits_v1;INSERT INTO clicks SELECT CounterID,EventDate,UserID
FROM hits_v1Ok.0 rows in set. Elapsed: 1.003 sec. Processed 8.87 million rows, 124.23 MB (8.85 million rows/s., 123.88 MB/s.) 

clicks表的定义按照intHash32(UserID) 分布后的结果采样查询。
声明Sample KEY的时候有两点需要注意:

  1. sample by 所声明的表达式必须同时包含在主键的声明内
  2. sample key必须UInt类型,若不是可以定义但是查询的时候会抛出异常

SAMPLE 子句支持三种格式:

1.sample k
k表示因子系数,采样因子,取值范围【0,1】,若在0–1之间的小数则表示采样,若为0或者1则等同于不采样。

select CounterID from clicks sample 0.1
等同于:
select CounterID from clicks sample 1/10

查询获取近似结果:

Clickhouse> select count() from clicks;SELECT count()
FROM clicks┌─count()─┐
│ 8873898 │
└─────────┘1 rows in set. Elapsed: 0.003 sec. Clickhouse> select count() from clicks sample 0.1;SELECT count()
FROM clicks
SAMPLE 1 / 10┌─count()─┐
│  839889 │
└─────────┘1 rows in set. Elapsed: 0.029 sec. Processed 5.89 million rows, 94.27 MB (201.86 million rows/s., 3.23 GB/s.) Clickhouse> select CounterID,_sample_factor from clicks sample 0.1 limit 2;SELECT CounterID,_sample_factor
FROM clicks
SAMPLE 1 / 10
LIMIT 2┌─CounterID─┬─_sample_factor─┐
│        57 │             10 │
│        57 │             10 │
└───────────┴────────────────┘2 rows in set. Elapsed: 0.012 sec.

可以通过虚拟字段_sample_factor 查询采样系数。

2.sample n
n表示采样的样本数量。n表示至少采样多少行数据。n=1表示不使用采样,n的范围从2到表的总行数。

Clickhouse> select count() from clicks sample 10000;SELECT count()
FROM clicks
SAMPLE 10000┌─count()─┐
│    9251 │
└─────────┘1 rows in set. Elapsed: 0.025 sec. Processed 5.48 million rows, 87.72 MB (223.47 million rows/s., 3.58 GB/s.) Clickhouse> select count()*any(_sample_factor) from clicks sample 10000;SELECT count() * any(_sample_factor)
FROM clicks
SAMPLE 10000┌─multiply(count(), any(_sample_factor))─┐
│                      8154379.059200001 │
└────────────────────────────────────────┘1 rows in set. Elapsed: 0.024 sec. Processed 5.48 million rows, 54.82 MB (229.44 million rows/s., 2.29 GB/s.) Clickhouse> select CounterID,_sample_factor from clicks sample 10000 limit 2;SELECT CounterID,_sample_factor
FROM clicks
SAMPLE 10000
LIMIT 2┌─CounterID─┬────_sample_factor─┐
│      1294 │ 881.4592000000001 │
└───────────┴───────────────────┘
┌─CounterID─┬────_sample_factor─┐
│      1366 │ 881.4592000000001 │
└───────────┴───────────────────┘2 rows in set. Elapsed: 0.041 sec. Processed 7.69 thousand rows, 123.01 KB (187.84 thousand rows/s., 3.01 MB/s.) 

数据采样的范围是一个近似值,采样数据的最小粒度有index_granularity 索引粒度决定的。
若设置一个小于索引粒度或者较小的n值没有意义。

3. sample k offset n
表示按照因子系数和偏移量采样。

Clickhouse> select CounterID,_sample_factor from clicks sample 0.4 offset 0.5 limit 1;SELECT CounterID,_sample_factor
FROM clicks
SAMPLE 4 / 10 OFFSET 5 / 10
LIMIT 1┌─CounterID─┬─_sample_factor─┐
│        57 │            2.5 │
└───────────┴────────────────┘1 rows in set. Elapsed: 0.017 sec. Clickhouse> select CounterID,_sample_factor from clicks sample 0.6 offset 0.5 limit 1;SELECT CounterID,_sample_factor
FROM clicks
SAMPLE 6 / 10 OFFSET 5 / 10
LIMIT 1┌─CounterID─┬─────_sample_factor─┐
│        57 │ 1.6666666666666667 │
└───────────┴────────────────────┘1 rows in set. Elapsed: 0.007 sec. 

当采样因子溢出(offset 的值+sample的值大于1)则溢出的数据则自动阶段。

【clickhouse】clickhouse查询语句之simple相关推荐

  1. clickhouse SQL查询语句 【译自Github 英文文档】

    内容有缩减,原文请点击这里 创建数据库 CREATE DATABASE [IF NOT EXISTS] db_name 创建表 CREATE TABLE可以有几种形式. 创建一张表,最好指定引擎结构 ...

  2. ClickHouse查询语句详解

    ​ClickHouse查询语句兼容大部分SQL语法,并且进行了更加丰富的扩展,查询语句模板如下: [WITH expr_list|(subquery)] SELECT [DISTINCT [ON (c ...

  3. TPCH ClickHouse查询语句修改

    TPC-H 压CK的时候,22条query语句需要进行修改,使语法满足CK:在此记录,供参考 clickhouse查询语句-- query-1select l_returnflag, l_linest ...

  4. ClickHouse数据查询

    1.查询语法 [WITH expr_list|(subquery)] SELECT [DISTINCT] expr_list [FROM [db.]table | (subquery) | table ...

  5. 【clickhouse】 clickhouse配置查询记录query_log

    1.概述 转载:clickhouse配置查询记录query_log 最近在使用clickhouse中,看到官方文档上可以配置query_log,但是文档上写的配置比较模糊,特此记录一下具体配置方法,以 ...

  6. clickhouse 复杂查询时嵌套连接join可能存在的异常解决(xjl456852原创)

    clickhouse 复杂查询时嵌套连接join可能存在的异常解决(xjl456852原创) 参考文章: (1)clickhouse 复杂查询时嵌套连接join可能存在的异常解决(xjl456852原 ...

  7. mysql构架,索引,视图,查询语句

    mysql构架: connection pool:因为单进程多线程,所以需要一个线程池接收请求提供并发,线程重用,还能完成认证 SQL interface:接收并分析SQL语句 Parser:分析器, ...

  8. 15个初学者必看的基础SQL查询语句

    1.创建表和数据插入SQL 我们在开始创建数据表和向表中插入演示数据之前,我想给大家解释一下实时数据表的设计理念,这样也许能帮助大家能更好的理解SQL查询. 在数据库设计中,有一条非常重要的规则就是要 ...

  9. mysql能用case嵌套sql吗,关于sqlserver中查询语句中嵌套case语句使用方法

    ryxxlong的博客 Sql server 中的 CASE 语句文章, 链接 http://ryxxlong.iteye.com/blog/531221 写的比较详细,具体内容如下,主要用于自己以后 ...

最新文章

  1. 第一次上传代码到gitee
  2. Java NIO之Selector(选择器)
  3. Redis从入门到放弃系列(一) String
  4. async function_Electron IPC 通信如何使用 async/await 调用?
  5. 记录使用 Cake 进行构建并制作 nuget 包
  6. Linux使用locate命令查找,Linux如何使用locate命令查找数据(2)
  7. 【总结记录】《MySQL必知必会》读后笔记,结合 leetcode 例题理解
  8. web html分块加载,javascript – 使用webpack代码拆分,如何加载块和HTML布局?
  9. python面向对象难学_学不下去了!?详解Python面向对象核心概念,简历没跑了
  10. 互联网晚报 | 10月22日 星期五 | 火花思维澄清破产传闻;珠海万达商管赴港提交招股书;特斯拉Q3营收净利均创新高...
  11. golang六个常用的web 框架
  12. CRC校验关键点说明(内附C语言CRC校验库)
  13. JS监听安卓软键盘删除键
  14. 线程池引发的故障到底该怎么排查?
  15. 生活随记 - 国庆假期怎么过才有意义呢
  16. 使用Excle做数据分析与时间序列季节指数预测
  17. 帝国时代之罗马复兴玩法技巧
  18. 面对流氓HR,新人该注意什么
  19. ORA_HASH函数
  20. 贵州大学计算机历年收分,贵州大学历年分数线 2021贵州大学录取分数线

热门文章

  1. 爱奇艺深夜就“倒奶视频”致歉:《青你3》成团夜停止录制和直播......
  2. 微信在朋友圈强行置顶视频号直播分享,引网友疯狂吐槽:又丑又烦!
  3. 饿了么“多等5分钟”后,美团外卖宣布给骑手留出8分钟...
  4. 腾讯再回应被骗,悬赏1000瓶老干妈求线索!老干妈:腾讯从来没有催收过
  5. 苹果发明超薄触摸显示技术:iPhone 12系列有望首发搭载
  6. 蔚来宣布再次完成1亿美元可转债融资
  7. 知名插画师描绘nova6“5G”潮乐园 十城nova6自拍互动装置即将引爆
  8. iOS 13.2“杀后台”严重 被用户狂喷:专业“杀微信”
  9. 尴尬了!“中国版ins”绿洲 logo涉嫌抄袭,确认已下架
  10. 央视曝光!朋友圈八大骗局正在瞄准你的个人信息 看看你中招没?