功能

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  |
+-----------------+------------+-------+-------------+-------------------------+

联系我们
预约咨询
微信咨询
电话咨询