通常のデータロードの管理¶
このトピックでは、ベストプラクティス、一般的なガイドライン、および定期的なデータロードの管理に関する重要な考慮事項について説明します。
このトピックの内容:
ステージングされたデータファイルのパーティション分割¶
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_one
、application_two
、location_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/;
ステージングされたデータのロード¶
ステージングされたファイルへの正確なパスを指定して、整理されたデータファイルをSnowflakeテーブルにロードします。詳細については、 パスによるデータの整理 をご参照ください。
ロードされたデータファイルの削除¶
ステージングされたファイルからのデータが正常にロードされたら、ステージングされたファイルを削除して、データが誤って再度ロードされないようにします(重複)。
注釈
ステージングされたファイルは、データが正常にロードされるまで削除しないでください。データが正常に読み込まれたかどうかを確認するには、 COPY_HISTORY コマンドを使用します。 STATUS
列をチェックして、ファイルからのデータがロードされているかどうかを確認します。ステータスが Load in progress
の場合は、ステージングされたファイルを削除すると、部分的な読み込みとデータの損失が発生する可能性があることに注意してください。
ステージングされたファイルは、次の方法を使用して Snowflake ステージ(ユーザーステージ、テーブルステージ、または名前付きステージ)から削除できます。
正常にロードされたファイルは、 COPY INTO <テーブル> コマンドで PURGE コピーオプションを指定することにより、ロード中にステージから削除できます。
ロードが完了したら、 REMOVE コマンドを使用してステージ内のファイルを削除します。
ファイルを削除すると、不注意で再びロードされることはありません。また、ステージ内の既存のファイルが既にロードされているかどうかを確認するために COPY コマンドがスキャンする必要があるファイルの数を減らすため、ロードパフォーマンスも向上します。