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

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

このトピックの内容:

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

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

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

s3://bucket_name/application_one/2016/07/01/11/

s3://bucket_name/application_two/location_one/2016/07/01/14/

条件:

application_oneapplication_twolocation_one など。

パス内にあるすべてのデータのソースの詳細を識別します。データは、書き込まれた日付ごとに整理できます。オプションの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/;
Copy

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

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

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

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

注釈

ステージングされたファイルは、データが正常にロードされるまで削除しないでください。データが正常に読み込まれたかどうかを確認するには、 COPY_HISTORY コマンドを使用します。 STATUS 列をチェックして、ファイルからのデータがロードされているかどうかを確認します。ステータスが Load in progress の場合は、ステージングされたファイルを削除すると、部分的な読み込みとデータの損失が発生する可能性があることに注意してください。

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

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

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

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