ステージングデータ

このトピックでは、データファイルをロード用に準備するためのベストプラクティス、一般的なガイドライン、および重要な考慮事項について説明します。

このトピックの内容:

パスによるデータの整理

内部(つまり、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';