数据湖探索 DLI-删除分区:示例

时间:2024-07-01 21:07:17

示例

为了便于理解删除分区语句的使用方法,本节示例为您提供源数据,基于源数据提供删除分区的操作示例。

  1. 使用DataSource语法创建一个OBS表分区表。

    创建了一个名为student的OBS分区表,表中有学生学号(id),学生姓名(name),学生院系编号(facultyNo)和学生班级编号(classNo),该表使用学生院系编号(facultyNo)和学生班级编号(classNo)进行分区。

    1
    2
    3
    4
    5
    6
    7
    8
    create table if not exists student (
    id int,
    name STRING,
    facultyNo int,
    classNo INT)
    using csv
    options (path 'obs://bucketName/filePath')
    partitioned by (faculytNo, classNo);
    

  2. 在表格中插入分区数据。

    利用插入数据中的内容,可以插入以下数据

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    INSERT into student
    partition (facultyNo = 10, classNo = 101)
    values (1010101, "student01"), (1010102, "student02");
    
    INSERT into student
    partition (facultyNo = 10, classNo = 102)
    values (1010203, "student03"), (1010204, "student04");
    
    INSERT into student
    partition (facultyNo = 20, classNo = 101)
    values (2010105, "student05"), (2010106, "student06");
    
    INSERT into student
    partition (facultyNo = 20, classNo = 102)
    values (2010207, "student07"), (2010208, "student08");
    
    INSERT into student
    partition (facultyNo = 20, classNo = 103)
    values (2010309, "student09"), (2010310, "student10");
    
    INSERT into student
    partition (facultyNo = 30, classNo = 101)
    values (3010111, "student11"), (3010112, "student12");
    
    INSERT into student
    partition (facultyNo = 30, classNo = 102)
    values (3010213, "student13"), (3010214, "student14");
    

  3. 查看分区。

    利用查看指定表所有分区中的内容,可以查看相关的分区内容。

    示例代码如下:

    SHOW partitions student;

    表2 表数据示例

    facultyNo

    classNo

    facultyNo=10

    classNo=101

    facultyNo=10

    classNo=102

    facultyNo=20

    classNo=101

    facultyNo=20

    classNo=102

    facultyNo=20

    classNo=103

    facultyNo=30

    classNo=101

    facultyNo=30

    classNo=102

  4. 删除分区。

    • 示例1:指定多个筛选条件删除分区

      本示例删除facultyNo为20,classNo为103的分区;

      如需按指定筛选条件删除分区请参考指定筛选条件删除分区(只支持OBS表)

      示例代码如下:

      ALTER TABLE student
      DROP IF EXISTS
      PARTITION (facultyNo=20, classNo=103);

      重新利用第三步中的方法查看表中的分区,可以看到该分区被删除:

      SHOW partitions student;
    • 示例2:指定单个筛选条件删除分区

      本示例删除facultyNo为30的分区;在插入数据的过程中可以了解到,facultyNo为30的分区有两个。

      如需按指定筛选条件删除分区请参考指定筛选条件删除分区(只支持OBS表)

      示例代码如下:

      ALTER TABLE student
      DROP IF EXISTS
      PARTITION (facultyNo = 30);

      执行后结果:

      表3 表数据示例

      facultyNo

      classNo

      facultyNo=10

      classNo=101

      facultyNo=10

      classNo=102

      facultyNo=20

      classNo=101

      facultyNo=20

      classNo=102

      facultyNo=20

      classNo=103

support.huaweicloud.com/sqlreference-dli/dli_08_0083.html