通过这个SELECT partitionFROM system. parts WHERE (database IN ('default’)) AND ( table IN (test_sjgc_part_I')) ORDER BY partition ASC命令可以查询clickhouse的分区信息
clickhouse如何查询到的分区数据类型类似于hive的show partitions tablename 命令返回的信息。返回带有分区字段的分区数据。
试一试这个:
SELECT distinct database, table, partition, name FROM system.parts
WHERE database = 'default' AND table = 'test_sjgc_part_I'
ORDER BY database, table, partition, name ASC
在ClickHouse中,可以通过以下SQL语句查询分区信息:
sql
SELECT * FROM system.parts
WHERE table = 'table_name'
AND database = 'database_name'
这将返回表的所有分区信息,包括:
- partition: 分区名称,格式为"{partition_expr_name}={partition_expr_value}"
- name: 分区表达式名称,如et、at等
- value: 分区表达式的值,如20221212
- count: 分区中的行数
- marks: 分区中的标记(标记分区概念,忽略)
- files: 分区文件数量
- min_block_number: 最小数据块号
- max_block_number: 最大数据块号
- level: 分区层级(仅适用于分区元素的嵌套)
所以,如果et和at are 是表的两个分区表达式,查询结果可能如下:
partition | name | value | count
et=20221212 | et | 20221212 | 100
at=2022121210 | at | 2022121210 | 50
这表示: - et分区表达式的值是20221212,该分区包含100行数据
- at分区表达式的值是2022121210,该分区包含50行数据
如果分区是多级分区,查询结果会显示分区的层级关系。
除此之外,ClickHouse还提供一些其他分区相关的系统表,比如: - system.parts_columns - 显示分区键的列信息
- system.detached_parts - 显示已分离的分区信息(用于分区裁剪)
- 等等
所以通过这些系统表,可以比较全面地查询ClickHouse的分区信息,包括分区表达式、分区值、分区数据量等信息。