すべてのプロダクト
Search
ドキュメントセンター

MaxCompute:パーティション操作

最終更新日:Jan 20, 2025

MaxComputeでは、既存のテーブルのパーティションに対して操作を実行できます。 たとえば、ビジネス要件に基づいて、パーティションを追加したり、パーティションを削除したり、パーティションキー列の値を変更したりできます。

次の表に、MaxComputeテーブルのパーティションに対する操作を示します。

操作

説明

承認済みユーザー

操作プラットフォーム

パーティションの追加

既存のパーティション分割テーブルにパーティションを追加します。

テーブルに対するAlter権限を持つユーザー

このトピックで説明されているステートメントは、次のプラットフォームで実行できます。

パーティションのLastModifiedTimeの値を変更する

パーティションテーブルのパーティションのLastModifiedTimeの値を変更します。

パーティションキー列の値の変更

パーティションキー列の値を変更します。

マージパーティション

パーティションテーブルの複数のパーティションを1つのパーティションにマージします。 この操作は、マージされたパーティションに関するディメンション情報を削除し、指定されたパーティションにパーティションデータを転送します。

リストパーティション

テーブルのすべてのパーティションを一覧表示します。

パーティション情報の表示

パーティションテーブルに関するパーティション情報を表示します。

パーティションの削除

既存のパーティションテーブルからパーティションを削除します。

パーティションからのデータの消去

指定されたパーティションからデータをクリアします。

制限事項

  • MaxComputeテーブルのパーティションキー列として構成できるのは、TINYINT、SMALLINT、INT、BIGINT、CHAR、VARCHAR、およびSTRINGデータ型の列のみです。

  • MaxComputeテーブルには、最大6レベルのパーティションを含めることができます。

  • MaxComputeテーブルには、最大60,000個のパーティションを含めることができます。

  • MaxComputeでは、一度に最大10,000個のパーティションのデータをクエリできます。

  • パーティション分割トランザクションテーブルのパーティションをマージすることはできません。

  • パーティション分割されていないDeltaテーブルのデータをクリアしたり、Deltaテーブルのwrite.bucket.numプロパティを変更したりすることはできません。

パーティションの追加

既存のパーティション分割テーブルにパーティションを追加します。

  • 制限事項

    • マルチレベルパーティションを持つテーブルにパーティションキー列の値を追加するには、すべてのパーティションを指定する必要があります。

    • この操作では、パーティションキー列の値のみを追加できます。 パーティションキー列の名前は追加できません。

  • 構文

    ALTER TABLE <table_name> ADD [IF NOT EXISTS] PARTITION <pt_spec> [PARTITION <pt_spec> PARTITION <pt_spec>...];
  • パラメーター

    パラメーター

    必須 / 任意

    説明

    table_name

    対象

    パーティションを追加するパーティション分割テーブルの名前。

    存在しない場合

    非対象

    [If not EXISTS] を指定せず、同じ名前のパーティションがすでに存在する場合、この操作は失敗し、エラーが返されます。

    pt_spec

    対象

    追加するパーティション。The partition that you want to add. このパラメーターの値は、(partition_col1 = partition_col_value1, partition_col2 = partition_col_value2, ...) 形式です。 partition_colは、パーティションキー列の名前を示します。 partition_col_valueは、パーティションキー列の値を示します。 パーティションキー列の名前は大文字と小文字を区別しませんが、値は大文字と小文字を区別します。

  • sale_detailテーブルはこのセクションで使用されます。 このテーブルのCREATE TABLEステートメントの詳細については、「sale_detailという名前のテーブルの作成」をご参照ください。

    • 例1: sale_detailテーブルにパーティションを追加します。 パーティションは、2013年12月に中国 (杭州) リージョンに販売レコードを格納します。

      ALTER TABLE sale_detail ADD IF NOT EXISTS PARTITION (sale_date='201312', region='hangzhou');
    • 例2: sale_detailテーブルに2つのパーティションを追加します。 パーティションは、2013年12月の中国 (北京) および中国 (上海) リージョンの販売レコードを保存します。

      ALTER TABLE sale_detail ADD IF NOT EXISTS PARTITION (sale_date='201312', region='beijing') PARTITION (sale_date='201312', region='shanghai');
    • 例3: sale_detailテーブルにパーティションを追加し、パーティションのパーティションキー列sale_dateのみを指定します。 2つのパーティションキー列sale_dateとregionを指定する必要があるため、エラーが返されます。

      ALTER TABLE sale_detail ADD IF NOT EXISTS PARTITION (sale_date='20111011');
    • 例4: デルタテーブルにパーティションを追加します。

      -- Create a Delta table.
      CREATE TABLE mf_tt (pk BIGINT NOT NULL PRIMARY KEY, 
                          val BIGINT NOT NULL) 
                   PARTITIONED BY (dd STRING, hh STRING) 
                  TBLPROPERTIES ("transactional"="true"); 
                   
      -- Add a partition to the table.           
      ALTER TABLE mf_tt ADD PARTITION (dd='01', hh='01');
    • 例5: Deltaテーブルのプロパティを変更します。

      -- Change the write.bucket.num property of a Delta table. You can change only the property of a partitioned Delta table. You cannot change the property of a non-partitioned Delta table.
      ALTER TABLE mf_tt3 SET tblproperties("write.bucket.num"="64");
      
      -- Change the acid.data.retain.hours property of a Delta table.
      ALTER TABLE mf_tt3 SET tblproperties("acid.data.retain.hours"="60");

パーティションのLastModifiedTimeの値を変更する

MaxCompute SQLが提供するTOUCHステートメントを実行して、パーティションテーブル内のパーティションのLastDataModifiedTimeの値を変更します。 このステートメントは、LastModifiedTimeの値を現在の時刻に変更します。 この場合、MaxComputeはデータが更新されたと見なし、パーティションの新しいライフサイクルはLastModifiedTimeで指定された時間から開始されます。

  • 制限事項

    テーブルにマルチレベルパーティションが含まれている場合、パーティションのLastModifiedTimeの値を変更するときに、すべてのパーティションレベルを指定する必要があります。

  • 構文

    ALTER TABLE <table_name> touch PARTITION (<pt_spec>);
  • パラメーター

    パラメーター

    必須 / 任意

    説明

    table_name

    対象

    LastModifiedTimeの値を変更するパーティションテーブルの名前。 テーブルが存在しない場合、エラーが返されます。

    pt_spec

    対象

    LastModifiedTimeの値を変更するパーティション。 形式: (partition_col1 = partition_col_value1, partition_col2 = partition_col_value2, ...) partition_colは、パーティションキー列の名前を示します。 partition_col_valueは、パーティションキー列の値を示します。 指定された列名または列値が存在しない場合、エラーが返されます。

  • -- Change the value of LastModifiedTime for the partition in which the value of the sale_date column is 201312 and the value of the region column is shanghai in the sale_detail table. 
    ALTER TABLE sale_detail touch PARTITION (sale_date='201312', region='shanghai');

パーティションキー列の値を変更する

パーティションキー列の値を変更します。 MaxCompute SQLでは、RENAMEステートメントを実行してパーティションキー列の値を変更できます。

  • 制限事項

    • RENAMEステートメントは、パーティションキー列の値を変更できますが、列名を変更することはできません。

    • テーブルにマルチレベルパーティションが含まれている場合、パーティションのLastModifiedTimeの値を変更するときに、すべてのパーティションレベルを指定する必要があります。

  • 構文

    ALTER TABLE <table_name> PARTITION (<pt_spec>) rename TO PARTITION (<new_pt_spec>);
  • パラメーター

    パラメーター

    必須 / 任意

    説明

    table_name

    対象

    パーティションキー列の値を変更するテーブルの名前。

    pt_spec

    対象

    パーティションキー列の値を変更するパーティション。 形式: (partition_col1 = partition_col_value1, partition_col2 = partition_col_value2, ...) partition_colは、パーティションキー列の名前を示します。 partition_col_valueは、パーティションキー列の値を示します。 指定された列名または列値が存在しない場合、エラーが返されます。

    new_pt_spec

    対象

    新しいパーティション情報。The new partition information. 形式: (partition_col1 = new_partition_col_value1, partition_col2 = new_partition_col_value2, ...) partition_colは、パーティションキー列の名前を示します。 new_partition_col_valueは、パーティションキー列の新しい値を示します。

  • -- Change the partition key column values of the sale_detail table. 
    ALTER TABLE sale_detail PARTITION (sale_date = '201312', region = 'hangzhou') rename TO PARTITION (sale_date = '201310', region = 'beijing');

パーティションの結合Merge partitions

パーティションテーブルの複数のパーティションを1つのパーティションにマージします。 MaxCompute SQLでは、MERGE PARTITIONステートメントを実行して、テーブルの複数のパーティションを1つのパーティションにマージできます。 この操作は、マージされたパーティションに関するディメンション情報を削除し、指定されたパーティションにパーティションデータを移行します。

  • 制限事項

    • 外部テーブルのパーティションはマージできません。 クラスタ化されたテーブルのパーティションが1つのパーティションにマージされた後、パーティションにはクラスタ化属性がありません。

    • 一度に最大4,000個のパーティションをマージできます。

  • 構文

    ALTER TABLE <table_name> MERGE [IF EXISTS] PARTITION (<predicate>) [, PARTITION(<predicate2>) ...] overwrite PARTITION (<fullpartitionSpec>) [purge];
  • パラメーター

    パラメーター

    必須 / 任意

    説明

    table_name

    対象

    パーティションをマージするパーティション分割テーブルの名前。

    存在する場合

    非対象

    If EXISTSを指定せず、指定されたパーティションが存在しない場合、この操作は失敗し、エラーが返されます。 If EXISTSが指定されているが、マージ条件を満たすパーティションがない場合、マージ後に新しいパーティションを生成することはできません。 マージプロセス中にinsertrenamedropなどの操作によってソースデータが変更された場合、If EXISTSが指定されていてもエラーが返されます。

    述語

    対象

    マージするパーティションを一致させるために使用される条件。

    fullpartitionSpec

    対象

    マージ後に生成されるパーティション。

    パージ

    非対象

    オプションのキーワード。 このパラメーターを設定すると、セッションディレクトリはクリアされます。 デフォルトでは、過去3日間に生成されたログは削除されます。 詳細については、「パージ」をご参照ください。

    • 例1: 指定された条件を満たすパーティションを宛先パーティションにマージします。

      -- View the partitions in a partitioned table. 
      SHOW partitions intpstringstringstring;
      
      ds=20181101/hh=00/mm=00
      ds=20181101/hh=00/mm=10
      ds=20181101/hh=10/mm=00
      ds=20181101/hh=10/mm=10
      
      -- Merge all partitions that meet the hh='00' condition into the ds='20181101', hh='00', mm='00' partition. 
      ALTER TABLE intpstringstringstring MERGE PARTITION(hh='00') overwrite PARTITION(ds='20181101', hh='00', mm='00');
      
      -- View the partition that is generated after merging. 
      SHOW partitions intpstringstringstring;
      
      ds=20181101/hh=00/mm=00
      ds=20181101/hh=10/mm=00
      ds=20181101/hh=10/mm=10                    
    • 例2: 指定したパーティションを1つのパーティションにマージします。

      -- Merge specified partitions into one partition. 
      ALTER TABLE intpstringstringstring MERGE IF EXISTS PARTITION(ds='20181101', hh='00', mm='00'), PARTITION(ds='20181101', hh='10', mm='00'),  partition(ds='20181101', hh='10', mm='10') overwrite partition(ds='20181101', hh='00', mm='00') purge;
      -- View the partitions in the partitioned table. 
      SHOW partitions intpstringstringstring;
      
      ds=20181101/hh=00/mm=00

リストパーティション

テーブルのすべてのパーティションを一覧表示します。 テーブルが存在しないか、テーブルがパーティション分割されていないテーブルである場合、エラーが返されます。

  • 構文

    SHOW PARTITIONS <table_name>; 
  • パラメーター

    table_name: 必須です。 パーティション情報を表示するパーティションテーブルの名前。

  • -- List all the partitions of the sale_detail table. 
    SHOW PARTITIONS sale_detail;

    次の結果が返されます。

    sale_date=2023/region=china
    sale_date=2024/region=shanghai

パーティション情報の表示

パーティションテーブルに関するパーティション情報を表示します。

  • 構文

    DESC <table_name> PARTITION (<pt_spec>);
  • パラメーター

    パラメーター

    必須 / 任意

    説明

    table_name

    対象

    パーティション情報を表示するパーティションテーブルの名前。

    pt_spec

    対象

    表示するパーティションに関する情報。 このパラメーターの値は、partition_col1=col1_value1, partition_col2=col2_value1... 形式です。 テーブルに複数レベルのパーティションがある場合は、すべてのパーティションキー列の値を指定する必要があります。

  • -- View the partition information about the partitioned table sale_detail. 
    DESC sale_detail PARTITION (sale_date='201312',region='hangzhou');

    次の結果が返されます。

    +------------------------------------------------------------------------------------+
    | PartitionSize: 1234                                                                |
    +------------------------------------------------------------------------------------+
    | CreateTime:               2024-11-14 16:43:22                                      |
    | LastDDLTime:              2024-11-14 16:45:37                                      |
    | LastModifiedTime:         2024-11-14 16:45:37                                      |
    +------------------------------------------------------------------------------------+
    OK

パーティションの削除

既存のパーティションテーブルからパーティションを削除します。

MaxComputeでは、指定されたフィルター条件に基づいてパーティションを削除できます。 指定したフィルター条件を満たす複数のパーティションを一度に削除する場合は、式を使用してフィルター条件を指定し、フィルター条件を使用してパーティションを一致させ、パーティションを一度に削除できます。

  • 制限事項

    • partition (<partition_filtercondition>) 句で指定できるパーティションキー列は1つだけです。

    • 式を使用してPARTITION (<partition_filtercondition>) を指定する場合、式には組み込みのスカラー関数のみを使用できます。

  • 注意事項

    • パーティションを削除すると、MaxComputeプロジェクトに保存されているデータの量が減少します。

    • パーティションテーブルのライフサイクルを指定できます。 このように、MaxComputeは、ライフサイクルで指定された時間内にデータが更新されないパーティションを自動的に回収します。 ライフサイクルの詳細については、「ライフサイクル」をご参照ください。

  • 構文

    • フィルター条件が指定されていません。

      -- Drop one partition at a time. 
      ALTER TABLE <table_name> DROP [IF EXISTS] PARTITION <pt_spec>;
      -- Drop multiple partitions at a time. 
      ALTER TABLE <table_name> DROP [IF EXISTS] PARTITION <pt_spec>,PARTITION <pt_spec>[,PARTITION <pt_spec>....];
    • フィルター条件が指定されています。

      ALTER TABLE <table_name> DROP [IF EXISTS] PARTITION <partition_filtercondition>;
  • パラメーター

    パラメーター

    必須 / 任意

    説明

    table_name

    対象

    パーティションを削除するパーティション分割テーブルの名前。

    存在する場合

    非対象

    If existsオプションを指定せず、指定されたパーティションが存在しない場合、エラーが返されます。

    pt_spec

    対象

    削除するパーティション。The partition that you want to drop. 形式: (partition_col1 = partition_col_value1, partition_col2 = partition_col_value2, ...) partition_colは、パーティションキー列の名前を示します。 partition_col_valueは、パーティションキー列の値を示します。 パーティションキー列の名前は大文字と小文字を区別しませんが、値は大文字と小文字を区別します。

    partition_filtercondition

    非対象

    The filter condition. このパラメーターは、フィルター条件を指定するときに必要です。 大文字と小文字は区別されません。 形式:

    partition_filtercondition
        : PARTITION (<partition_col> <relational_operators> <partition_col_value>)
        | PARTITION (scalar(<partition_col>) <relational_operators> <partition_col_value>)
        | PARTITION (<partition_filtercondition1> AND|OR <partition_filtercondition2>)
        | PARTITION (NOT <partition_filtercondition>)
        | PARTITION (<partition_filtercondition1>)[,PARTITION (<partition_filtercondition2>), ...]

    パラメーター:

    • partition_col: パーティションキー列の名前。

    • relational_operators: リレーショナル演算子。 詳細については、「オペレーター」をご参照ください。

    • partition_col_value: 比較値または正規表現。 この値のデータ型は、パーティションキー列のデータ型と同じである必要があります。

    • scalar(): スカラー関数。 スカラー関数は、入力値に基づいてスカラーを生成し、partition_colで指定された列の値を処理し、relation_operatorsで指定されたリレーショナル演算子を使用して、処理された値をpartition_col_valueで指定された値と比較します。

    • フィルタ条件は、論理演算子NOT、AND、およびORをサポートします。 PARTITION (NOT <partition_filtercondition>) を使用して、指定したフィルター条件の補完セットを取得できます。 パーティションの照合に使用される条件を取得するには、PARTITION (<partition_filtercondition1> AND | OR <partition_filtercondition2>) を使用します。

    • 複数のPARTITION (<partition_filtercondition>) 句がサポートされています。 これらの句がコンマ (,) で区切られている場合、句間の論理関係はORです。 フィルタ条件は、OR論理関係に基づいて得られ、パーティションのマッチングに使用される。

    • フィルター条件が指定されていません。

      -- Drop a partition from the sale_detail table. The partition stores the sales record in the China (Hangzhou) region in December 2013. 
      ALTER TABLE sale_detail DROP IF EXISTS PARTITION(sale_date='201312',region='hangzhou'); 
      -- Drop two partitions from the sale_detail table. The partitions store the sales records in the China (Hangzhou) and China (Shanghai) regions in December 2013. 
      ALTER TABLE sale_detail DROP IF EXISTS PARTITION(sale_date='201312',region='hangzhou'),PARTITION(sale_date='201312',region='shanghai');
    • フィルター条件が指定されています。

      -- Create a partitioned table.
      CREATE TABLE IF NOT EXISTS sale_detail(
      shop_name     STRING,
      customer_id   STRING,
      total_price   DOUBLE)
      partitioned BY (sale_date STRING);
      -- Add a partition to the table.
      ALTER TABLE sale_detail ADD if NOT EXISTS
      PARTITION (sale_date= '201910')
      PARTITION (sale_date= '201911')
      PARTITION (sale_date= '201912')
      PARTITION (sale_date= '202001')
      PARTITION (sale_date= '202002')
      PARTITION (sale_date= '202003')
      PARTITION (sale_date= '202004')
      PARTITION (sale_date= '202005')
      PARTITION (sale_date= '202006')
      PARTITION (sale_date= '202007');
      -- Drop multiple partitions from the table at a time.
      ALTER TABLE sale_detail DROP IF EXISTS PARTITION(sale_date < '201911');
      ALTER TABLE sale_detail DROP IF EXISTS PARTITION(sale_date >= '202007');
      ALTER TABLE sale_detail DROP IF EXISTS PARTITION(sale_date LIKE '20191%');
      ALTER TABLE sale_detail DROP IF EXISTS PARTITION(sale_date IN ('202002','202004','202006'));
      ALTER TABLE sale_detail DROP IF EXISTS PARTITION(sale_date BETWEEN '202001' AND '202007');
      ALTER TABLE sale_detail DROP IF EXISTS PARTITION(substr(sale_date, 1, 4) = '2020');
      ALTER TABLE sale_detail DROP IF EXISTS PARTITION(sale_date < '201912' OR sale_date >= '202006');
      ALTER TABLE sale_detail DROP IF EXISTS PARTITION(sale_date > '201912' AND sale_date <= '202004');
      ALTER TABLE sale_detail DROP IF EXISTS PARTITION(NOT sale_date > '202004');
      -- Drop partitions by using multiple PARTITION (<partition_filtercondition>) clauses. The logical relationship between these clauses is OR.
      ALTER TABLE sale_detail DROP IF EXISTS PARTITION(sale_date < '201911'), PARTITION(sale_date >= '202007');
      -- Add partitions in other formats.
      ALTER TABLE sale_detail ADD IF NOT EXISTS
      PARTITION (sale_date= '2019-10-05') 
      PARTITION (sale_date= '2019-10-06') 
      PARTITION (sale_date= '2019-10-07');
      -- Use regular expressions to match the partitions that you want to drop and drop these partitions at a time. 
      ALTER TABLE sale_detail DROP IF EXISTS PARTITION(sale_date RLIKE '2019-\\d+-\\d+');
      -- Create a table named region_sale_detail. The table contains multi-level partitions. 
      CREATE TABLE IF NOT EXISTS region_sale_detail(
      shop_name     STRING,
      customer_id   STRING,
      total_price   DOUBLE)
      partitioned BY (sale_date STRING , region STRING );
      -- Add partitions to the table. 
      ALTER TABLE region_sale_detail ADD IF NOT EXISTS
      PARTITION (sale_date= '201910',region = 'shanghai')
      PARTITION (sale_date= '201911',region = 'shanghai')
      PARTITION (sale_date= '201912',region = 'shanghai')
      PARTITION (sale_date= '202001',region = 'shanghai')
      PARTITION (sale_date= '202002',region = 'shanghai')
      PARTITION (sale_date= '201910',region = 'beijing')
      PARTITION (sale_date= '201911',region = 'beijing')
      PARTITION (sale_date= '201912',region = 'beijing')
      PARTITION (sale_date= '202001',region = 'beijing')
      PARTITION (sale_date= '202002',region = 'beijing');
      -- Execute the following statement to drop multi-level partitions at a time. The logical relationship between the two PARTITION (<partition_filtercondition>) clauses is OR. After the statement is executed, the partitions in which the value of the sale_date column is earlier than 201911 or the partitions in which the value of the region column is beijing are dropped. 
      ALTER TABLE region_sale_detail DROP IF EXISTS PARTITION(sale_date < '201911'),PARTITION(region = 'beijing');
      -- Execute the following statement to drop partitions in which the value of the sale_date column is earlier than 201911 and the value of the region column is beijing. 
      ALTER TABLE region_sale_detail DROP IF EXISTS PARTITION(sale_date < '201911', region = 'beijing');

      複数レベルのパーティションを一度に削除する場合、1つのpartition (<partition_filtercondition>) 句の複数のパーティションキー列に基づくフィルタ条件を指定することはできません。 それ以外の場合、次のエラーが返されます。FAILED: ODPS-0130071:[1,82] セマンティック解析例外-無効な列参照領域、パーティション式には1つだけの列参照が必要です

      -- If you specify the information of multiple partition key columns in a PARTITION (<partition_filtercondition>) clause, an error is returned. Example of incorrect usage: 
      ALTER TABLE region_sale_detail DROP IF EXISTS PARTITION(sale_date < '201911' AND region = 'beijing');

パーティションからデータを消去する

パーティションテーブルの指定されたパーティションからデータをクリアします。

MaxComputeでは、指定されたフィルター条件を満たすパーティション内のデータを消去できます。 フィルタ条件を満たす1つ以上のパーティションを一度に削除する場合は、式を使用して条件を指定し、条件を使用してパーティションを一致させ、一致したパーティションからデータを消去できます。

  • 構文

    • フィルター条件が指定されていません。

      TRUNCATE TABLE <table_name> PARTITION <pt_spec>[, PARTITION <pt_spec>....];
    • フィルター条件が指定されています。

      TRUNCATE TABLE <table_name> PARTITION <partition_filtercondition>;
  • パラメーター

    パラメーター

    必須 / 任意

    説明

    table_name

    対象

    パーティションデータをクリアするパーティションテーブルの名前。

    pt_spec

    対象

    データをクリアするパーティション。 形式: (partition_col1 = partition_col_value1, partition_col2 = partition_col_value2, ...) partition_colは、パーティションキー列の名前を示します。 partition_col_valueは、パーティションキー列の値を示します。 パーティションキー列の名前は大文字と小文字を区別しませんが、値は大文字と小文字を区別します。

    partition_filtercondition

    非対象

    The filter condition. このパラメーターは、フィルター条件を指定するときに必要です。 大文字と小文字は区別されません。 形式:

    partition_filtercondition
        : PARTITION (<partition_col> <relational_operators> <partition_col_value>)
        | PARTITION (scalar(<partition_col>) <relational_operators> <partition_col_value>)
        | PARTITION (<partition_filtercondition1> AND|OR <partition_filtercondition2>)
        | PARTITION (NOT <partition_filtercondition>)
        | PARTITION (<partition_filtercondition1>)[,PARTITION (<partition_filtercondition2>), ...]

    パラメーター:

    • partition_col: パーティションキー列の名前。

    • relational_operators: リレーショナル演算子。 詳細については、「オペレーター」をご参照ください。

    • partition_col_value: 比較値または正規表現。 この値のデータ型は、パーティションキー列のデータ型と同じである必要があります。

    • scalar(): スカラー関数。 スカラー関数は、入力値に基づいてスカラーを生成し、partition_colで指定された列の値を処理し、relation_operatorsで指定されたリレーショナル演算子を使用して、処理された値をpartition_col_valueで指定された値と比較します。

    • フィルタ条件は、論理演算子NOT、AND、およびORをサポートします。 PARTITION (NOT <partition_filtercondition>) を使用して、指定したフィルター条件の補完セットを取得できます。 パーティションの照合に使用される条件を取得するには、PARTITION (<partition_filtercondition1> AND | OR <partition_filtercondition2>) を使用します。

    • 複数のPARTITION (<partition_filtercondition>) 句がサポートされています。 これらの句がコンマ (,) で区切られている場合、句間の論理関係はORです。 フィルタ条件は、OR論理関係に基づいて得られ、パーティションのマッチングに使用される。

    • フィルター条件が指定されていません。

      -- Clear the data from a partition of the sale_detail table. The partition stores the sales record in the China (Hangzhou) region in December 2013. 
      TRUNCATE TABLE sale_detail PARTITION(sale_date='201312',region='hangzhou');
      
      -- Clear the data from two partitions of the sale_detail table. The partitions store the sales records in the China (Hangzhou) and China (Shanghai) regions in December 2013. 
      TRUNCATE TABLE sale_detail PARTITION(sale_date='201312',region='hangzhou'),  PARTITION(sale_date='201312',region='shanghai');
    • フィルター条件が指定されています。

      -- Clear the data from multiple partitions of the sale_detail table. The partitions store the sales records whose sales dates start with 2013 in the China (Hangzhou) region. 
      TRUNCATE TABLE sale_detail PARTITION(sale_date LIKE '2013%' AND region='hangzhou');
    • パーティション分割されていないDeltaテーブルからデータを消去します。

      -- Clear the data from a non-partitioned Delta table. The table must be a non-partitioned table. Otherwise, an error is reported.
      TRUNCATE TABLE mf_tt2; 

関連ドキュメント

テーブル操作の詳細については、次のトピックを参照してください。