【ClickHouse-Sql】ClickHouse 常用 Sql(创建集群表、删除分区、条件删除、随机分群、修改表名、计算数据存储量等)

【ClickHouse-Sql】ClickHouse 常用 Sql(创建集群表、删除分区、条件删除、随机分群、修改表名、计算数据存储量等)

1)建库

create database bigdata_user on cluster perftest_3shards_1replicas;

2)建表

ClickHouse 有本地表,集群表的概念,本地表就是每台节点的表(存储整个集群数据的一部分),集群表可以看成是一个视图。

(1)本地表(local)

create table ods_visit_user_local on cluster perftest_3shards_1replicas(
    start_time DateTime,
    username String,
    user_agent String,
    user_ip String,
    visit_url String
) ENGINE = MergeTree() PARTITION BY toYYYYMMDD(start_time) order by start_time;

(2)集群表(cluster)

create table ods_visit_user on cluster perftest_3shards_1replicas(
    start_time DateTime,
    username String,
    user_agent String,
    user_ip String,
    visit_url String
) ENGINE = Distributed(perftest_3shards_1replicas, 'bigdata_user', ods_visit_user_local, rand());

(3)分区表

create table ods_visit_user_local on cluster perftest_3shards_1replicas(
    start_time DateTime,
    username String,
    user_agent String,
    user_ip String,
    visit_url String
) ENGINE = MergeTree() PARTITION BY toYYYYMMDD(start_time) 
partition by start_time 
order by start_time;

3)删除表、清空表

drop table if exists ods_visit_user_local on cluster perftest_3shards_1replicas;
drop table if exists ods_visit_user on cluster perftest_3shards_1replicas;
truncate table ods_visit_user_local on cluster perftest_3shards_1replicas;

4)删除数据

(1)删分区

alter table ods_visit_user.ods_visit_user_local  on cluster perftest_3shards_1replicas  drop partition '***';

(2)条件删除

alter table ods_visit_user.ods_visit_user_local on cluster perftest_3shards_1replicas
delete where length(event_st_dt)>19 
and event_id ='***';

5)随机分群

SELECT 
    userID,
    rand() % 5 AS dataset
FROM 
    userTable
ORDER BY 
    dataset;

6)改表名

RENAME TABLE  ods_visit_user.ods_visit_user_local to ods_visit_user.ods_visit_user_local2;

7)计算数据存储量

SELECT 
    sum(rows) AS `总行数`,
    formatReadableSize(sum(data_uncompressed_bytes)) AS `原始大小`,
    formatReadableSize(sum(data_compressed_bytes)) AS `压缩大小`,
    round((sum(data_compressed_bytes) / sum(data_uncompressed_bytes)) * 100, 0) AS `压缩率`
FROM system.parts
WHERE database = 'ods_visit_user';
  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值