見出し画像

SNOWFLAKE PURGE Copy Option

1. PURGE Copy Optionとは?

PURGEオプションは、SnowflakeのCOPY INTOコマンドにおいて使用されるオプションの一つです。このオプションは、データが外部ステージ(例:Amazon S3、Azure Blob Storage、Google Cloud Storage)からSnowflakeに正常にロードされた後に、元のデータファイルを外部ステージから削除するかどうかを制御します。

https://e-words.jp/w/%E3%83%91%E3%83%BC%E3%82%B8.html#google_vignette
  • 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オプションを適切に設定することで、運用の効率化とコスト削減を実現できます。

いいなと思ったら応援しよう!