tencent cloud

Data Lake Compute

パーティションテーブルを照会

PDF
フォーカスモード
フォントサイズ
最終更新日: 2025-12-23 16:52:15
ユーザーがデータをパーティション形式で保存すると、DLC計算タスクのデータスキャン量を削減でき、大幅に演算性能を向上させることができます。データをパーティション分割する最も一般的な方法は、時間ごとに異なるディレクトリに保存することです。例えば、同じ日に生成されたデータを1つのディレクトリにまとめ、「年-月-日」形式で複数階層のデータディレクトリを構成できます。DLC内の同じテーブルとそのパーティションは、同じデータ形式を使用する必要があります。

パーティションテーブルを作成

パーティションテーブルを作成するには、テーブル作成文でパーティションフィールドを指定する必要があります。

パーティションデータを追加

データテーブルを作成する際にパーティションを指定するのは、パーティションフィールドを設定しただけで、すぐにクエリ文を実行してデータを取得することはできません。ユーザーはパーティションデータをデータテーブルに追加する必要があります。新しいパーティションデータがデータディレクトリに追加された場合、データテーブルにパーティション情報を追加する必要があります。

手動でパーティションを追加

ALTER TABLE ADD PARTITION ステートメントを使用すると、指定したパーティションディレクトリがデータテーブルに追加されます。パーティションディレクトリがHiveのパーティションルール(パーティション列名 = パーティション列値)と互換性がある場合、データパスを指定する必要はありません。それ以外の場合は、データパスを明示的に指定する必要があります。
例1:単一のパーティションディレクトリで、パーティションディレクトリが一致します。
ALTER TABLE tabel_demo ADD
PARTITION (dt = '2021-01-01');
例2:多層パーティション・ディレクトリのネスト。
ALTER TABLE tabel_demo ADD
PARTITION (year = '2021', month='01', day='01');
例3:指定パーティション・パスの表示。
ALTER TABLE tabel_demo ADD
PARTITION (year = '2021', month='01', day='01') LOCATION 'cosn://tablea_demo' ;

自動的にパーティションを追加

MSCK REPAIR TABLE ステートメントを使用して、テーブル作成時に指定したデータディレクトリをスキャンします。新しいパーティションディレクトリが存在する場合、システムは自動的にこれらのパーティションをデータテーブルのメタデータ情報に追加します。例は以下の通りです:
MSCK REPAIR TABLE table_demo

システム制約

MSCK REPAIR TABLEはデータテーブルのメタデータにパーティションを追加するだけで、削除はしません。追加済みのパーティションを削除したい場合は、ALTER TABLE テーブル名 DROP PARTITION文を実行してください。
データ量が非常に大きい場合、MSCK REPAIR TABLEは推奨されません。システムは全データをスキャンし、長時間を要するため、タスクがタイムアウトする可能性があり、データテーブルのパーティション情報が不完全な状態になることがあります。
パーティション・ディレクトリはHiveのパーティションルールと互換性がある必要があります:パーティション列名=パーティション列値。一致しない場合は、ALTER TABLE ADD PARTITIONを使用してパーティションをロードしてください。
別々のテーブルのデータは、別々のフォルダ階層に保存してください。例えば、COSサービスにテーブルAのデータcosn://tablea_aとテーブルBのデータs3://table_a/table_bがある場合、両方のテーブルが文字列でパーティションされていると、MSCK REPAIR TABLEはテーブルBのパーティションをテーブルAに追加してしまいます。このような状況を避けるため、cosn://tablea_acosn://tablea_bのように別々のフォルダ構造を使用してください。
このステートメントはCOSサービスのデータ読み書きコストを発生させる可能性があります。詳細はCOSサービスの料金体系をご参照ください。

ヘルプとサポート

この記事はお役に立ちましたか?

フィードバック