メインコンテンツまでスキップ

ALTER TABLE REPLACE

説明

2つのテーブルのアトミックな置換。この操作はOLAPテーブルにのみ適用されます。

ALTER TABLE [db.]tbl1 REPLACE WITH TABLE tbl2
[PROPERTIES('swap' = 'true')];

テーブル tbl1 を テーブル tbl2 で置き換えます。

swap パラメータが true の場合、置き換え後に tbl1 という名前のテーブル内のデータは、元の tbl2 という名前のテーブル内のデータになります。tbl2 という名前のテーブル内のデータは、元の tbl1 テーブル内のデータになります。つまり、2つのテーブルのデータが交換されます。

swap パラメータが false の場合、置き換え後に tbl1 テーブル内のデータは tbl2 テーブル内のデータになります。tbl2 という名前のテーブルは削除されます。

原理

replace table 機能は、実際には以下の一連の操作をアトミックな操作に変換します。

テーブル A をテーブル B で置き換えたい場合で swaptrue の場合、以下を実行します:

  1. テーブル B をテーブル A として名前変更します。
  2. テーブル A をテーブル B として名前変更します。

swapfalse の場合、以下のように実行します:

  1. テーブル A を削除します。
  2. テーブル B をテーブル A として名前変更します。

注意事項

  1. デフォルトの swap パラメータは true です。つまり、テーブル置き換え操作は2つのテーブル間でのデータ交換と等価です。
  2. swap パラメータが false に設定されている場合、置き換えられるテーブル(テーブル A)は削除され、復元できません。
  3. 置き換え操作は2つの OLAP テーブル間でのみ発生でき、2つのテーブルのテーブル構造が一致しているかどうかはチェックしません。
  4. 元の権限設定は変更されません。権限チェックはテーブル名に基づいているためです。

  1. テーブルを削除せずに tbl1tbl2 をアトミックに交換します(注意:削除する場合、実際には tbl1 を削除し、tbl2 を tbl1 に名前変更します。)
ALTER TABLE tbl1 REPLACE WITH TABLE tbl2;

または

ALTER TABLE tbl1 REPLACE WITH TABLE tbl2 PROPERTIES('swap' = 'true');
  1. tbl1tbl2をアトミックスワップし、tbl2テーブルを削除する(tbl1と元のtbl2のデータを保持)
ALTER TABLE tbl1 REPLACE WITH TABLE tbl2 PROPERTIES('swap' = 'false');

キーワード

ALTER, TABLE, REPLACE, ALTER TABLE

ベストプラクティス

  1. アトミックオーバーレイ書き込み操作

場合によっては、ユーザーは特定のテーブルのデータを書き換えたいと考えますが、データを最初に削除してからインポートすると、その間の期間はデータを閲覧できなくなります。この場合、ユーザーは最初にCREATE TABLE LIKE文を使用して同じ構造の新しいテーブルを作成し、新しいデータを新しいテーブルにインポートし、置換操作を使用して古いテーブルをアトミックに置き換えて目標を達成できます。パーティションレベルでのアトミック上書き書き込み操作については、temp partition documentationを参照してください。