当前位置: 首页 > news >正文

关于ClickHouse的一些小技巧

关于ClickHouse的一些小技巧

设置变量

set param_name='Alex';
select {name:String};

projection的使用

基于projection(投影)的优化需要打开开关optimize_use_projections。ClickHouse里的projection是物化的,也就是说数据会复制存一份。
Projection对于不同的排序的查询的效率提升很有帮助,特别是行数很大的表。因为如果有一个projection的order by的设定跟查询的order by一样,则可以直接读取projection而不用排序数据。

在2亿行数据的大宽表variant_simulate._joined_events上做实验。

按照_Dimension1_T1排序,查询语句为:

select _Dimension1_T1 from  _joined_events order by _Dimension1_T1 format Null

时间是4秒。

Query id: 056df638-72b4-486f-b18a-94507ef2ecf7Ok.0 rows in set. Elapsed: 4.218 sec. Peak memory: 3.38 GiB. Processed 200.00 million rows, 1.80 GB (47.42 million rows/s., 426.78 MB/s.)
Peak memory usage: 1.70 GiB.

添加projection投影,命名为_dimension1_t1_proj,并物化它,再执行同一个查询。

alter table _joined_events
add projection _dimension1_t1_proj (select _Dimension1_T1from _joined_eventsorder by _Dimension1_T1);alter table _joined_events materialize projection _dimension1_t1_proj;

查询及执行结果为:

select _Dimension1_T1 from  _joined_events order by _Dimension1_T1 format Null0 rows in set. Elapsed: 1.874 sec. Peak memory: 3.38 GiB. Processed 200.00 million rows, 1.80 GB (106.73 million rows/s., 960.61 MB/s.)
Peak memory usage: 14.95 MiB.

时间是1.8秒。快了2倍不止。

Regexp

用过正则表达式的方式解析数据。

示例

从原始文本数据文件中解析并提取数据,并存为TSV文件。

得到原始数据文件:

wget http://noaa-ghcn-pds.s3.amazonaws.com/ghcnd-stations.txt

执行SQL查询解析JSON数据,正则表达式为'^(.{11})\s+(\-?\d{1,2}\.\d{4})\s+(\-?\d{1,3}\.\d{1,4})\s+(\-?\d*\.\d*)\s+(.*?)\s{2,}.*$'

clickhouse-local --query "WITH stations AS (SELECT id, lat, lon, elevation, name FROM file('ghcnd-stations.txt', Regexp, 'id String, lat Float64, lon Float64, elevation Float32, name String'))
SELECT station_id,date,tempAvg,tempMax,tempMin,precipitation,snowfall,snowDepth,percentDailySun,averageWindSpeed,maxWindSpeed,weatherType,tuple(lon, lat) as location,elevation,name
FROM file('noaa.tsv', TSV,'station_id String, date Date32, tempAvg Int32, tempMax Int32, tempMin Int32, precipitation Int32, snowfall Int32, snowDepth Int32, percentDailySun Int8, averageWindSpeed Int32, maxWindSpeed Int32, weatherType UInt8') as noaa LEFT OUTERJOIN stations ON noaa.station_id = stations.id FORMAT TSV SETTINGS format_regexp='^(.{11})\s+(\-?\d{1,2}\.\d{4})\s+(\-?\d{1,3}\.\d{1,4})\s+(\-?\d*\.\d*)\s+(.*?)\s{2,}.*$'" > noaa_enriched.tsv
http://www.lryc.cn/news/319910.html

相关文章:

  • 有来团队后台项目-解析7
  • 用户数据的FLASH存储与应用(FPGA架构)
  • Chrome的V8引擎 和操作系统交互介绍
  • Redis:持久化、线程模型、大 key
  • Linux 16个常用脚本(初级)练习
  • 接口测试及接口测试工具【Postman】相关的面试题
  • android 怎么自定义view
  • JavaScript的事件
  • android 简单快速 自定义dialog(简单好用,不需要设置样式)
  • JAVA代理模式梳理
  • 推荐几个线上兼职,每天两小时收入几十到一百
  • excel封装和ddt D17
  • PHP8编译安装
  • 3D Gaussian Splatting for Real-Time Radiance Field Rendering(慢慢啃,还是挺复杂的)
  • 二叉树<II>:二叉树的四种遍历方式代码实现Python3
  • vite ts vue 项目提示 . Projects must list all files or use an include pattern.
  • 鲸鱼优化算法改进风储机组一次调频出力分配系数,以频率偏差最小为目标优化函数,结合鲸鱼算法WOA捕食过程,改进风储出力分配系数simulink与matlab联合
  • C语言经典面试题目(七)
  • 2024华为春招Django面试题大全,最全知识点揭秘,面试必备!
  • 搜维尔科技:使用SenseGlove Nova手套操纵其“CAVE”投影室中的虚拟对象
  • 独立服务器的优势
  • 前端框架vue的样式操作,以及vue提供的属性功能应用实战
  • 【自动化测试】如何在jenkins中搭建allure
  • 2.域控如何强制转移操作主机角色?使用命令如何强制转移域控的操作角色?
  • C# event的使用
  • 外包干了9天,技术退步明显。。。。。
  • Android Framework 之 Python
  • 【Fitten Code】“吊打“Github Copilot的国内免费代码辅助插件
  • Git中的换行符CRLF和LF问题
  • go语言文件操作