ステージングデータ¶
このトピックでは、データファイルをロード用に準備するためのベストプラクティス、一般的なガイドライン、および重要な考慮事項について説明します。
このトピックの内容:
パスによるデータの整理¶
内部(つまり、Snowflake)および外部(Amazon S3、Google Cloud Storage、またはMicrosoft Azure)両方のステージ参照には、パス(または AWS の用語では プレフィックス)を含めることができます。通常のデータセットをステージングするときは、データが書き込まれた日付とともに、地理的位置やその他のソース識別子などの詳細を識別する論理パスにデータをパーティション分割することをお勧めします。
パスごとにデータファイルを整理すると、1つのコマンドで分割データの一部をSnowflakeにコピーできます。これにより、並列操作を利用して、ファイルのサブセットに一致する COPY ステートメントを同時に実行できます。
たとえば、北米の会社のデータを地理的な場所ごとに保存している場合、パスに大陸、国、都市などの識別子をデータ書き込み日付とともに含めることができます。
Canada/Ontario/Toronto/2016/07/10/05/
United_States/California/Los_Angeles/2016/06/01/11/
United_States/New York/New_York/2016/12/21/03/
United_States/California/San_Francisco/2016/08/03/17/
名前付きステージを作成するときに、パスの任意の部分を指定できます。たとえば、上記のサンプルパスのいずれかを使用して外部ステージを作成します。
CREATE STAGE my_stage URL='s3://mybucket/United_States/California/Los_Angeles/' CREDENTIALS=(AWS_KEY_ID='1a2b3c' AWS_SECRET_KEY='4x5y6z');
内部ユーザーまたはテーブルステージでファイルをステージングするときにパスを追加することもできます。たとえば、 t1
テーブルステージの特定のパスのステージ mydata.csv
の場合、
PUT file:///data/mydata.csv @%t1/United_States/California/Los_Angeles/2016/06/01/11/
ステージングされたデータをロードするときは、データロードパフォーマンスを向上させるために、データを含む最も詳細なレベルにパスを絞り込みます。
ロードするファイルのリストをさらに制限するには、次のオプションのいずれかを使用します。
サフィックスまたは拡張子以外のファイル名が一致する場合、パスにファイル名の一致する部分を含めます。例:
COPY INTO t1 from @%t1/United_States/California/Los_Angeles/2016/06/01/11/mydata;FILES または PATTERN オプションを追加します( ステージングされたデータファイルを選択するためのオプション を参照)。例:
COPY INTO t1 from @%t1/United_States/California/Los_Angeles/2016/06/01/11/ FILES=('mydata1.csv', 'mydata1.csv'); COPY INTO t1 from @%t1/United_States/California/Los_Angeles/2016/06/01/11/ PATTERN='.*mydata[^[0-9]{1,3}$$].csv';