花开不停 花开不停
首页
  • 追忆杂谈
  • 书信往来
  • 旅行记录
  • 文定之喜
  • 黄金屋-颜如玉
  • 程序化广告
  • 禅茶一味
  • 随写编年
  • 家人物语
  • 追忆青春
  • 大千世界
  • Shell
  • Java
  • Spark
  • Hadoop
  • ClickHouse
  • MySQL
  • PostgreSQL
  • MongoDB
  • 调度器
  • Zookeeper
  • Kafka
  • Flume
  • 学习周刊
关于
  • 分类
  • 标签
  • 归档
开往 (opens new window)

花开不停

此心光明,亦复何言
首页
  • 追忆杂谈
  • 书信往来
  • 旅行记录
  • 文定之喜
  • 黄金屋-颜如玉
  • 程序化广告
  • 禅茶一味
  • 随写编年
  • 家人物语
  • 追忆青春
  • 大千世界
  • Shell
  • Java
  • Spark
  • Hadoop
  • ClickHouse
  • MySQL
  • PostgreSQL
  • MongoDB
  • 调度器
  • Zookeeper
  • Kafka
  • Flume
  • 学习周刊
关于
  • 分类
  • 标签
  • 归档
开往 (opens new window)
  • Shell编程

  • Java编程笔记

  • Spark

  • Hadoop

  • ClickHouse

    • clickhouse常用函数
      • 1. 表函数
        • 1.1. S3
        • 1.1.1. 读外部表
        • 1.1.2. 写外部表
        • 1.2. postgreSQL
        • 1.3. mysql
      • 2. 常用函数
        • 2.1. 时间函数
        • 2.2. json解析函数
        • 2.3. 数据类型转换函数
        • 2.4. 字符串函数
        • 2.5. Array函数
        • 2.6 条件函数
    • clickhouse拆分对应索引的数组
    • clickhouse 交集 并集 差集
    • clickhouse DDL DML
    • clickhouse表函数
    • clickhouse字符串函数
    • clickhouseJSON函数
    • clickhouse数组函数
    • clickhouse时间函数
    • clickhouse类型转换函数
    • clickhouse位图bitmap函数
    • clickhouse窗口函数
    • clickhouseMD5加密函数
    • clickhouse常用settings
    • clickhouse版本升级的语法变动21.8.9.1至23.8.9.1
  • MySQL

  • PostgreSQL

  • MongoDB

  • 调度器

  • Zookeeper

  • Kafka

  • Flume

  • 编程世界
  • ClickHouse
花开不停
2023-05-09
目录

clickhouse常用函数原创

# 1. 表函数

# 1.1. S3

clickhouse官网-使用文档 (opens new window)

语法:
select column1 , column2
from s3(path, [aws_access_key_id, aws_secret_access_key], format,structure, [compression]);
1
2
3
  • path — 带有文件路径的 Bucket url。在只读模式下支持以下通配符: *, ?, {abc,def} 和 {N..M} 其中 N, M 是数字, 'abc', 'def' 是字符串. 更多信息见下文.
  • format — 文件的格式.常用CSV、TSV、CustomSeparated
  • structure — 表的结构. 格式像这样 'column1_name column1_type, column2_name column2_type, ...'.
  • compression — 压缩类型. 支持的值: none, gzip/gz, brotli/br, xz/LZMA, zstd/zst. 参数是可选的. 默认情况下,通过文件扩展名自动检测压缩类型.

# 1.1.1. 读外部表

以cos为例

  1. 示例1(CSV默认分隔符 , )
select id, name
from s3('http://demo.cos.ap-shanghai.myqcloud.com/test.csv','CSV','id String, name String');
1
2
  1. 示例2(自定义输入CSV文件分隔符:format_csv_delimiter)
select id, name
from s3('http://demo.cos.ap-shanghai.myqcloud.com/test.csv','CSV','id String, name String')
settings format_csv_delimiter='|';
1
2
3
  1. 示例3(指定允许异常跳过: input_format_allow_errors_num,input_format_allow_errors_ratio )
select id, name
from s3('http://demo.cos.ap-shanghai.myqcloud.com/test.csv','CSV','id String, name String')
settings format_csv_delimiter='|',
         input_format_allow_errors_num=500;
1
2
3
4

# 1.1.2. 写外部表

以cos为例

  1. 示例1(CSV默认分隔符 , )
INSERT INTO FUNCTION
s3('http://demo.cos.ap-shanghai.myqcloud.com/out.csv','CSV','id String, name String')
select id, name
from s3('http://demo.cos.ap-shanghai.myqcloud.com/test.csv','CSV','id String, name String');
1
2
3
4
  1. 示例2(自定义输出文件分隔符:format_custom_field_delimiter)
INSERT INTO FUNCTION
s3('http://demo.cos.ap-shanghai.myqcloud.com/out.csv','CustomSeparated','id String, name String')
select id, name
from s3('http://demo.cos.ap-shanghai.myqcloud.com/test.csv','CSV','id String, name String')
settings format_csv_delimiter='|',
         format_custom_field_delimiter='|';
1
2
3
4
5
6

# 1.2. postgreSQL

clickhouse官网-使用文档 (opens new window)

语法:
postgresql('host:port', 'database', 'table', 'user', 'password'[, `schema`])
1
2
  • host:port — PostgreSQL 服务器地址.
  • database — 远程数据库名称.
  • table — 远程表名称.
  • user — PostgreSQL 用户.
  • password — 用户密码.
  • schema — 非默认的表结构. 可选.
示例
SELECT * FROM postgresql('localhost:5432', 'test', 'test', 'postgresql_user', 'password') WHERE str IN ('test');
1
2

# 1.3. mysql

clickhouse官网-使用文档 (opens new window)

语法:
mysql('host:port', 'database', 'table', 'user', 'password'[, replace_query, 'on_duplicate_clause']);
1
2
  • host:port — MySQL服务器地址.
  • database — 远程数据库名称.
  • table — 远程表名称.
  • user — MySQL用户.
  • password — 用户密码.
示例
SELECT * FROM mysql('localhost:3306', 'test', 'test', 'bayonet', '123')
1
2

# 2. 常用函数

# 2.1. 时间函数

UTC转北京时间:

###字符串转时间###
toDateTime();

###时间截取###
select toTimeZone(toDateTime(substring('2023-06-01 11:02:00.000', 1, 19), 'UTC'), 'Asia/Shanghai');

###时间补位###
select toTimeZone(toDateTime(rightPad('2023-06-01 11:02', 19, ':00'), 'UTC'), 'Asia/Shanghai');
1
2
3
4
5
6
7
8

格式化时间:

toYYYYMMDD();
formatDateTime(datetime, '%Y-%m-%d');
formatDateTime(datetime, '%Y-%m-%d %H:%M:%S');
formatDateTime(date_add(hour, -4, now('UTC')), '%Y/%m/%d/%H');
1
2
3
4

# 2.2. json解析函数

--数可以随意的在多层嵌套结构下查找字段。如果存在多个匹配字段,则返回第一个匹配字段

--提取json   : 
	visitParamExtractRaw(参数,'名称')
--提取String : 
	visitParamExtractString(参数,'名称')
--提取Int    : 
	visitParamExtractInt(参数,'名称')
--提取Float  : 
	visitParamExtractFloat(参数,'名称')
--提取Bool   : 
	visitParamExtractBool(参数,'名称')

--逐层解析函数:
--提取json   : 
	JSONExtractRaw(参数,'名称')
--提取String : 
	JSONExtractString(参数,'名称')
--提取Int    : 
	JSONExtractInt(参数,'名称')
--提取Float  : 
	JSONExtractFloat(参数,'名称')
--提取Bool   : 
	JSONExtractBool(参数,'名称')
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

# 2.3. 数据类型转换函数

toString()
toInt32()     toInt64()     toUInt64()
toFloat32()   toFloat64()   
1
2
3

# 2.4. 字符串函数

select splitByChar(',',str)
select splitByString('asdf',str)
select subString(str,index_start,index_end)
select toStartOfDay(today() -1) ,  toStartOfDay(today())
select fromUnixTimestamp(toUInt64(1698537596000/1000), '%Y-%m-%d %R:%S')
select toTimeZone(toDateTime(substring('2023-06-01 11:02:00.000', 1, 19), 'UTC'), 'Asia/Shanghai');

-- MD5 加密
lower(hex(MD5())
1
2
3
4
5
6
7
8
9

--保留小数位数 select floor(10000/4648,5)

# 2.5. Array函数

-- 创建数组
	array(x1, ...)
-- arrayJoin()
	例:SELECT arrayJoin([1, 2, 3] AS src) AS dst, 'Hello', src

-- groupArray()
-- groupUniqArray()

-- has(arr,elem)
	例:SELECT has([1, 2, NULL], NULL)
-- hasAny(array1, array2)
	--array1 – 具有一组元素的任何类型的数组。
	--array2 – 具有一组元素的任何类型的数组。
	SELECT hasAny([-128, 1., 512], [1])       --返回 1.
	SELECT hasAny([[1, 2, 3, 4]], ['a', 'c']) --返回 0.
	
-- 子集 hasAll(set, subset):检查一个数组是否是另一个数组的子集
	--set – 具有一组元素的任何类型的数组。
	--subset – 任何类型的数组,其元素应该被测试为set的子集。
	SELECT hasAll([1.0, 2, 3, 4], [1, 3]) --返回1
	SELECT hasAll([1], ['a'])             --返回0
	
-- 排序 arraySort() --升序      arrayReverseSort() 降序
	SELECT arraySort([1, 3, 3, 0]);
	
-- 去重 arrayDistinct() 
	SELECT arrayDistinct([1, 2, 2, 3, 1]);
-- 求和 arraySum(arr)
	SELECT arraySum([2, 3]) AS res;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

# 2.6 条件函数

	if(cond, then, else)

	multiIf(cond_1, then_1, cond_2, then_2, ..., else)   --CASE的紧凑写法
	
	CASE [x] WHEN a THEN b [WHEN ... THEN ...] [ELSE c] END
1
2
3
4
5
#ClickHouse
上次更新: 2024/06/28, 14:46:16

← MapReduce启动时输入文件不存在报错的校验 clickhouse拆分对应索引的数组→

最近更新
01
clickhouse版本升级的语法变动21.8.9.1至23.8.9.1 原创
04-22
02
2025-03-28拍婚纱照 原创
04-02
03
2024-04-05的晚上 原创
04-01
更多文章>
Theme by Vdoing | Copyright © 2023-2025 | 京ICP备2023013437号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式