通常のデータロードの管理

このトピックでは、ベストプラクティス、一般的なガイドライン、および定期的なデータロードの管理に関する重要な考慮事項について説明します。

このトピックの内容:

ステージングされたデータファイルのパーティション分割

ETL (抽出、変換、ロード)プロセスなどの定期的なデータロードや、機械生成データの定期的なインポートを計画する場合、内部(つまり、Snowflake )ステージ、または外部の場所(S3バケットまたはAzureコンテナー)において、論理的で詳細なパスを使用して、データをパーティションすることは重要です。データが書き込まれた日付とともに、アプリケーションや場所などの詳細を識別するパーティション構造を作成します。その後、1つのコマンドで、分割されたデータの一部をSnowflakeにコピーできます。最初にテーブルにデータを入力する時間、日、月、さらには年単位でデータをSnowflakeにコピーできます。

パスを使用して分割したS3バケットの例:

s3://バケット名/アプリケーションワン/2016/07/01/11/

s3://バケット名/アプリケーションツー/場所ワン/2016/07/01/14/

条件:

アプリケーションワンアプリケーションツー場所ワン など。

パス内にあるすべてのデータのソースの詳細を識別します。データは、書き込まれた日付ごとに整理できます。オプションの24時間ディレクトリは、各ディレクトリのデータ量を減らします。

注釈

S3は、Snowflakeが使用する COPY ステートメントごとにディレクトリリストを送信するため、各ディレクトリ内のファイル数を減らすと、 COPY ステートメントのパフォーマンスが向上します。1時間ごとに、フォルダー内に10-15分単位のサブフォルダーを作成することも検討できます。

同様に、内部ステージでファイルをステージングするときにパスを追加することもできます。例:

PUT file:///tmp/file_20160701.11*.csv @my_stage/<application_one>/<location_one>/2016/07/01/11/;

ステージングされたデータのロード

ステージングされたファイルへの正確なパスを指定して、整理されたデータファイルをSnowflakeテーブルにロードします。詳細については、 パスによるデータの整理 をご参照ください。

ロードされたデータファイルの削除

ステージングされたファイルからのデータが正常にロードされたら、ステージングされたファイルを削除して、データが誤って再度ロードされないようにします(重複)。

ステージングされたファイルは、次の方法を使用して Snowflake ステージ(ユーザーステージ、テーブルステージ、または名前付きステージ)から削除できます。

  • 正常にロードされたファイルは、 COPY INTO <テーブル> コマンドで PURGE コピーオプションを指定することにより、ロード中にステージから削除できます。

  • ロードが完了したら、 REMOVE コマンドを使用してステージ内のファイルを削除します。

ファイルを削除すると、不注意で再びロードされることはありません。また、ステージ内の既存のファイルが既にロードされているかどうかを確認するために COPY コマンドがスキャンする必要があるファイルの数を減らすため、ロードパフォーマンスも向上します。