ビジネス要件とデータ使用頻度に基づいてテーブルのライフサイクルを設定し、自動データ再利用を実行できます。 テーブルのライフサイクルを適切に設定することで、データの保存期間を柔軟に管理し、データの適時性と有効性を確保し、リソースの使用量とコストを最小限に抑えることができます。
ライフサイクル
テーブルまたはパーティション内のデータが最後の更新から指定された期間後に変更されない場合、テーブルまたはパーティションはMaxComputeによって自動的に再利用されます。 ライフサイクルは、期間を指定します。 ライフサイクルベースのテーブルスキャンは、テーブルのすべてのパーティションをスキャンするために、毎日スケジュールされた時間に実行されます。
LastModifiedTimeパラメーターの値が非パーティションテーブルの指定されたライフサイクルを超える場合、MaxComputeはテーブルのデータを再要求し、テーブルを削除します。
パーティションテーブルの場合、MaxComputeは、テーブルの各パーティションに設定されているLastModifiedTimeパラメーターの値に基づいて、パーティションのデータを再利用するかどうかを決定します。 最後のパーティションが再利用されると、テーブルは削除されません。
最後のパーティションが再利用された後にテーブルを自動的に削除する場合は、次のいずれかの方法を使用できます。
説明プロジェクトレベルとテーブルレベルの設定が競合する場合は、テーブルレベルの設定が優先されます。
プロジェクトレベルの設定
-- Automatically delete the table after the last partition of the table is reclaimed. setproject odps.table.lifecycle.deletemeta.on.expiration=true; -- Retain the table by default after the last partition is reclaimed. setproject odps.table.lifecycle.deletemeta.on.expiration=false;
テーブルレベルの設定
--- Create a table and configure a lifecycle-related parameter to allow the table to be automatically deleted after the last partition of the table is reclaimed. CREATE TABLE <Table_Name>(id int, name string) partitioned BY (ds string) tblproperties ('lifecycle.deletemeta'='true') lifecycle 1; --- If a table exists, configure a lifecycle-related parameter to allow the table to be automatically deleted after the last partition of the table is reclaimed. ALTER TABLE <table_name> SET tblproperties('lifecycle.deletemeta'='true'); -- Retain the table by default after the last partition is reclaimed. ALTER TABLE <table_name> SET tblproperties('lifecycle.deletemeta'='false');
次の表に、ライフサイクル関連の操作を示します。
API 操作 | 説明 | ロール | プラットフォーム |
テーブルの作成時にテーブルのライフサイクルを設定するか、既存のテーブルのライフサイクルを設定または変更します。 | テーブルに対するAlter権限を持つユーザー | 次のプラットフォームでステートメントを実行できます。 | |
指定されたテーブルまたはパーティションに設定されたライフサイクルを無効化または復元します。 |
注意事項
タスクスケジューリングの依存関係は、テーブルのライフサイクルが経過してもテーブルデータの再利用に影響しません。
パーティションテーブルのライフサイクルを設定すると、ライフサイクルはテーブルのすべてのパーティションを含むテーブル全体に適用されます。 パーティションレベルでライフサイクルを設定または変更することはできません。
データが回収された後、データはデフォルトで1日間ごみ箱に保持されます。 データは1日後に完全に削除され、復元できません。
ライフサイクル機能により、MaxComputeはテーブルまたはパーティションを定期的に再利用できます。 システムの可用性によって、LastModifiedTimeで指定された時間の後の期間がテーブルまたはパーティションのライフサイクルを超えた場合に、MaxComputeがテーブルまたはパーティションを直ちに再利用できるかどうかが決まります。 したがって、MaxComputeは、ライフサイクルが経過した直後にテーブルまたはパーティションを常に再利用することはできません。
データの書き込み、更新、または削除が行われると、LastModifiedTimeパラメーターの値が更新されます。 ライフサイクルが変更されても、LastModifiedTimeパラメーターの値は変更されません。
テーブルのライフサイクルの設定
テーブルの作成時にテーブルのライフサイクルを設定する
構文
-- Create a table. CREATE [external] TABLE [if not exists] <table_name> [(<col_name> <data_type> [default <default_value>] [comment <col_comment>], ...)] [comment <table_comment>] [partitioned BY (<col_name> <data_type> [comment <col_comment>], ...)] -- Configure the shuffle and sort properties of a clustered table that you want to create. [clustered BY | range clustered BY (<col_name> [, <col_name>, ...]) [sorted BY (<col_name> [ASC | DESC] [, <col_name> [ASC | DESC] ...])] INTO <number_of_buckets> buckets] -- Used only for external tables. [stored by StorageHandler] -- Used only for external tables. [with serdeproperties (options)] -- Used only for external tables. [location <osslocation>] -- Configure the lifecycle for the table. lifecycle <days>; -- Create a table based on an existing table and replicate the schema of the existing table. You can execute the CREATE TABLE statement to create a table based on an external table or an existing table of an external project that is used to implement the data lakehouse solution. create table [if not exists] <table_name> like <existing_table_name> [lifecycle <days>];
パラメーター
table_name: 必須です。 ライフサイクルを設定するテーブルの名前。
days: 必須です。 変更後のライフサイクル。 値は正の整数である必要があります。 単位:日
説明前のセクションでは、ライフサイクル関連のパラメーターのみについて説明しました。 テーブルを作成するためのパラメーターの詳細については、「テーブルの作成」をご参照ください。
例:
-- Create the test_lifecycle table with the lifecycle of 100 days. CREATE TABLE test_lifecycle (key string) lifecycle 100;
既存のテーブルのライフサイクルの設定または変更
次のいずれかの方法を使用して、既存のテーブルのライフサイクルを設定または変更できます。
構文
ALTER TABLE <Table_Name> SET lifecycle <days>;
パラメーター
table_name: 必須です。 ライフサイクルを変更するテーブルの名前。
days: 必須です。 変更後のライフサイクル。 値は正の整数である必要があります。 単位:日
例:
-- Change the lifecycle of the test_lifecycle table to 50 days. ALTER TABLE test_lifecycle set lifecycle 50;
テーブルのライフサイクルの無効化または復元
構文
ALTER TABLE <table_name> [<pt_spec>] {enable|disable} lifecycle;
パラメーター
table_name: 必須です。 ライフサイクルを無効化または復元するテーブルの名前。
pt_spec: オプション。 ライフサイクルを無効化または復元するテーブルのパーティション。 テーブルに複数レベルのパーティションがある場合は、すべてのパーティションキー列の値を指定する必要があります。 このパラメーターの値は、
partition_col1=col1_value1, partition_col2=col2_value1...
形式です。enable: テーブルまたはテーブルの指定されたパーティションのライフサイクルを復元します。
説明テーブルのライフサイクルを復元した後、テーブルのデフォルトのライフサイクルを適用できます。 ライフサイクルを復元する前に、設定されたライフサイクルを知る必要があります。 これにより、以前の設定を使用するために誤ってデータが再利用されるのを防ぎます。
disable: テーブルまたは指定されたパーティションのライフサイクルを無効にします。
説明テーブルのライフサイクルを無効にする設定は、テーブルのライフサイクルを復元する設定よりも優先されます。 たとえば、
table disable lifecycle
を設定した場合、pt_spec enable lifecycle
の設定は有効になりません。テーブルのライフサイクルを無効にした後も、MaxComputeは以前のライフサイクル設定を記録し、ライフサイクル設定を変更できます。
例
例1:
trans
テーブルのライフサイクルを無効にします。ALTER TABLE trans disable lifecycle;
例2:
trans
テーブルのdt='20141111' パーティションのライフサイクルを無効にします。ALTER TABLE trans partition (dt='20141111') disable lifecycle;