SNOWFLAKE PURGE Copy Option
1. PURGE Copy Optionとは?
PURGEオプションは、SnowflakeのCOPY INTOコマンドにおいて使用されるオプションの一つです。このオプションは、データが外部ステージ(例:Amazon S3、Azure Blob Storage、Google Cloud Storage)からSnowflakeに正常にロードされた後に、元のデータファイルを外部ステージから削除するかどうかを制御します。
PURGE = TRUE:
データファイルが正常にロードされた後、外部ステージからそのファイルを削除します。
これにより、外部ストレージのクリーンアップが自動的に行われ、重複ロードのリスクを低減します。
PURGE = FALSE(デフォルト値):
データファイルは外部ステージに残ったままになります。
同じファイルを再度ロードする可能性がある場合に便利です。
参考) COPYオプションの詳細
COPY INTOコマンドは、外部ステージからSnowflakeのテーブルにデータをロードするために使用されます。このコマンドには多くのオプションがあり、データロードの挙動を細かく制御できます。主なオプションは以下の通りです:
FILE_FORMAT:
データファイルのフォーマット(例:CSV、JSON、AVRO、PARQUET)を指定します。
フォーマットに応じて適切なパース設定が適用されます。
PURGE:
データファイルの外部ステージからの削除を制御します。
TRUEまたはFALSEを指定します。
ON_ERROR:
データロード中にエラーが発生した場合の挙動を指定します。
例:CONTINUE(エラーを無視して続行)、SKIP_FILE(エラーが発生したファイルをスキップ)など。
SINGLE = TRUE/FALSE:
単一ファイルからデータをロードするかどうかを指定します。
TRUEにすると、指定されたファイルのみをロードします。
MAXFILESIZE:
ロードするファイルの最大サイズを指定します。
PATTERN:
ロード対象のファイルを指定するための正規表現パターンを設定します。
図式による説明
以下の図は、COPY INTOコマンドにおけるPURGEオプションの動作を示しています。
sql
+---------------------+ +---------------------+
| 外部クラウドストレージ | | Snowflake |
| (例: S3) | | (データベース) |
+---------------------+ +---------------------+
| |
| COPY INTO コマンド |
|----------------------------------->|
| |
| | データのロード
| |
|<-----------------------------------|
| データファイルの削除 |
| |
|--- PURGE = TRUE ---> ファイルが削除される
手順1: COPY INTOコマンドが外部クラウドストレージからSnowflakeのテーブルにデータをロードします。
手順2: データが正常にロードされた後、PURGE = TRUEが設定されている場合、外部クラウドストレージからデータファイルが削除されます。
ビジネスシーンでの活用例
シナリオ1: データの重複ロード防止
背景:
企業Aは、毎日Amazon S3にアップロードされる大量のログデータをSnowflakeにロードしています。同じデータファイルが再度ロードされることを防ぎたいと考えています。
対応策:
COPY INTOコマンドでPURGE = TRUEを設定します。
COPY INTO sales_logs
FROM @s3_stage/sales/
FILE_FORMAT = (TYPE = 'CSV' FIELD_OPTIONALLY_ENCLOSED_BY='"')
PURGE = TRUE;
結果: データファイルが正常にロードされた後、自動的にS3ステージから削除されるため、同じファイルの重複ロードが防止されます。
シナリオ2: コスト管理とストレージの最適化
背景:
企業Bは、外部ステージに保存された古いデータファイルがストレージコストを増加させていることに気付きました。不要なデータファイルを定期的に削除したいと考えています。
対応策:
COPY INTOコマンドでPURGE = TRUEを設定し、データロード後に外部ステージからファイルを削除します。
結果: データがSnowflakeにロードされた後、Azure Blob Storageのarchiveフォルダから自動的にファイルが削除され、ストレージコストの最適化が図られます。
まとめ
PURGEオプションの役割:
PURGE = TRUEを設定すると、データファイルが正常にSnowflakeにロードされた後、外部ステージからそのファイルが削除されます。
これにより、外部ステージのストレージをクリーンに保ち、重複ロードやストレージコストの増加を防止できます。
COPYオプションの活用:
COPY INTOコマンドの各種オプションを適切に設定することで、データロードの挙動を細かく制御できます。
PURGE以外にも、FILE_FORMATやON_ERRORなどのオプションを活用することで、効率的かつ安全なデータロードが可能です。
ビジネスニーズに応じた設定:
データの性質やビジネス要件に応じて、PURGEオプションを含むCOPYオプションを適切に設定することで、運用の効率化とコスト削減を実現できます。