ClickHouse 基本操作

本文主要介绍ClickHouse的基本操作,重点讲解建表的相关细节,包括ENGINE的选择如MergeTree,排序键ORDER BY,分区键PARTITION BY,以及主键PRIMARY KEY的设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.建表

CREATE TABLE tutorial.hits_v1
(
    `WatchID` UInt64,
    `JavaEnable` UInt8,
    `Title` String,
    `GoodEvent` Int16,
    `EventTime` DateTime,
    `EventDate` Date,
    `CounterID` UInt32,
    `ClientIP` UInt32,
    `ClientIP6` FixedString(16),
    `RegionID` UInt32,
    `UserID` UInt64,
)
ENGINE = MergeTree()
PARTITION BY toYYYYMM(EventDate)
ORDER BY (CounterID, EventDate, intHash32(UserID))
SAMPLE BY intHash32(UserID)
  • ENGINE - 引擎名和参数。 ENGINE = MergeTree(). MergeTree 引擎没有参数。

  • ORDER BY — 排序键。

      可以是一组列的元组或任意的表达式。 例如: ORDER BY (CounterID, EventDate) 。
      
      如果没有使用 PRIMARY KEY 显式指定的主键,ClickHouse 会使用排序键作为主键。
      
      如果不需要排序,可以使用 ORDER BY tuple(). 参考 选择主键
    
  • PARTITION BY — 分区键 ,可选项。

      要按月分区,可以使用表达式 toYYYYMM(date_column) ,这里的 date_column 是一个 Date 类型的列。分区名的格式会是 "YYYYMM" 。
    
  • PRIMARY KEY - 如果要 选择与排序键不同的主键,在这里指定,可选项。

      默认情况下主键跟排序键(由 ORDER BY 子句指定)相同。
      因此,大部分情况下不需要再专门指定一个 PRIMARY KEY 子句。
    
  • SAMPLE BY - 用于抽样的表达式,可选项。

      如果要用抽样表达式,主键中必须包含这个表达式。例如:
      SAMPLE BY intHash32(UserID) ORDER BY (CounterID, EventDate, intHash32(UserID)) 。
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值