功能
SHOW PARTITIONS
是一个在 SQL 中用于显示指定表的分区信息的命令。分区表是一种在数据仓库中常见的数据组织方式,它通过将数据分散存储在不同的分区中来优化查询性能和管理效率。使用 SHOW PARTITIONS
可以快速查看表的分区结构和每个分区的详细信息
使用限制
- 目前使用实时sdk写入的的分区无法立即查看,需要等待实时写入的数据提交可以查看分区大小
语法
SHOW PARTITIONS [EXTENDED] table_name [ PARTITION ( partition_col_name = partition_col_val [ , ... ] ) ]
[WHERE <expr>]
参数说明
- EXTENDED:添加该关键字可以查看分区的文件数量、分区大小、分区条数和修改时间
- table_name: 需要查询分区信息的表名,支持表、动态表、物化视图。
- PARTITION ( partition_col_name = partition_col_val [ , ... ] ): 可选参数,用于指定要查看的分区的特定条件。通过指定分区键的值,可以过滤出特定的分区信息。
- where <expr>:可选可以根据显示的字段进行过滤。支持根据total_rows、bytes、total_files、created_time进行过滤。expr支持=、!=、>、< 、>= 、<=、 is null 、is not null、 between ...and、or、not 、<> 、in。
使用场景
- 查看分区结构:了解表的分区策略和当前的分区情况。查看分区大小和修改时间
- 数据管理:在进行数据导入、导出或维护时,了解分区信息有助于更高效地管理数据。
示例
查看所有分区
DROP TABLE IF EXISTS pt_table;
CREATE TABLE pt_table (order_id INT, customer_id INT, amount DOUBLE) PARTITIONED BY (pt1 string,pt2 string);
INSERT INTO pt_table
VALUES (1, 101, 100.0, '2023','01'),
(2, 102, 200.0, '2023','02'),
(3, 103, 300.0, '2023','03'),
(4, 104, 400.0, '2023','04');
SHOW PARTITIONS pt_table;
+-----------------+
| partitions |
+-----------------+
| pt1=2023/pt2=01 |
| pt1=2023/pt2=02 |
| pt1=2023/pt2=03 |
| pt1=2023/pt2=04 |
+-----------------+
SHOW PARTITIONS EXTENDED pt_table;
+-----------------+------------+-------+-------------+-------------------------+
| partitions | total_rows | bytes | total_files | created_time |
+-----------------+------------+-------+-------------+-------------------------+
| pt1=2023/pt2=01 | 1 | 3101 | 1 | 2024-12-20 14:25:34.99 |
| pt1=2023/pt2=02 | 1 | 3102 | 1 | 2024-12-20 14:25:34.99 |
| pt1=2023/pt2=03 | 1 | 3102 | 1 | 2024-12-20 14:25:34.99 |
| pt1=2023/pt2=04 | 2 | 3119 | 1 | 2024-12-20 14:25:34.99 |
+-----------------+------------+-------+-------------+-------------------------+
上述命令将返回 sales_data
表的所有分区信息。
查看特定分区
SHOW PARTITIONS pt_table PARTITION (pt1 = '2023');
+-----------------+
| partitions |
+-----------------+
| pt1=2023/pt2=01 |
| pt1=2023/pt2=02 |
| pt1=2023/pt2=03 |
| pt1=2023/pt2=04 |
+-----------------+
SHOW PARTITIONS pt_table PARTITION (pt1 = '2023',pt2='01');
+-----------------+
| partitions |
+-----------------+
| pt1=2023/pt2=01 |
+-----------------+
使用where根据显示的字段过滤过滤
--过滤条数大于1得分区
SHOW PARTITIONS EXTENDED pt_table WHERE total_rows>1;
+-----------------+------------+-------+-------------+-------------------------+
| partitions | total_rows | bytes | total_files | created_time |
+-----------------+------------+-------+-------------+-------------------------+
| pt1=2023/pt2=04 | 2 | 3119 | 1 | 2024-12-20 14:25:34.99 |
+-----------------+------------+-------+-------------+-------------------------+