データのロードの概要¶
このトピックでは、Snowflakeにデータをロードするために使用できる、主なオプションの概要を説明します。
このトピックの内容:
サポートされているファイルの場所¶
Snowflakeでは、クラウドストレージ内のデータファイルの場所を ステージ と呼びます。一括データロードと継続的データロードの両方に使用される COPY INTO <テーブル> コマンド(つまり、Snowpipe)は、ビジネスエンティティによって管理されるクラウドストレージアカウント(つまり、 外部ステージ)と、Snowflakeアカウントに含まれるクラウドストレージ(つまり、 内部ステージ)をサポートします。
外部ステージ¶
Snowflakeアカウントをホストする クラウドプラットフォーム に関係なく、次に挙げるクラウドストレージサービスからのデータのロードがサポートされています。
Amazon S3
Google Cloud Storage
Microsoft Azure
クラウドストレージサービスが提供するツールを使用して、ファイルをクラウドストレージアカウントにアップロード(つまり、 ステージ)します。
名前付き外部ステージは、スキーマで作成されたデータベースオブジェクトです。このオブジェクトは、クラウドストレージのファイルへの URL、クラウドストレージアカウントへのアクセスに使用される設定、およびステージングされたファイルの形式を説明するオプションなどの便利な設定を格納します。 CREATE STAGE コマンドを使用してステージを作成します。
注釈
Snowflakeアカウントとは異なる地域、またはクラウドプラットフォームにあるクラウドストレージサービスのファイルからデータをロードする場合は、一部のデータ転送に請求料金が適用される場合があります。詳細については、 Snowflakeのデータ転送の請求について をご参照ください。
内部ステージ¶
Snowflakeは、アカウントで次のステージ型を維持します。
- ユーザー
ユーザーステージは、ファイルを保存するために各ユーザーに割り当てられます。このステージ型は、単一のユーザーによってステージングおよび管理されるが、複数のテーブルにロードできるファイルを保存するように設計されています。ユーザーステージは、変更またはドロップできません。
- テーブル
Snowflakeで作成されたテーブルごとに、テーブルステージを使用できます。このステージ型は、1人以上のユーザーによってステージングおよび管理されるが、単一のテーブルのみにロードされるファイルを保存するように設計されています。テーブルステージは、変更またはドロップできません。
テーブルステージは独立したデータベースオブジェクトではなく、テーブル自体に結び付けられた暗黙的なステージです。テーブルステージには、独自の付与可能な権限はありません。ファイルをテーブルステージにステージングする、ファイルを一覧表示する、ステージ上でクエリを実行する、またはドロップするには、テーブル所有者(テーブルに対する OWNERSHIP 権限を持つロール)である必要があります。
- 名前付き
名前付き内部ステージは、スキーマで作成されたデータベースオブジェクトです。このステージ型は、1人以上のユーザーによってステージングおよび管理され、1つ以上のテーブルにロードされるファイルを保存できます。名前付きステージはデータベースオブジェクトであるため、それらを作成、変更、使用、またはドロップする機能は、セキュリティのアクセス制御権限を使用して制御できます。 CREATE STAGE コマンドを使用してステージを作成します。
PUT コマンドを使用して、ローカルファイルシステムから任意の内部ステージ型にファイルをアップロードします。
一括ロード対連続ロード¶
Snowflakeは、データをロードするための以下の主要なソリューションを提供します。最適なソリューションは、ロードするデータの量とロードの頻度に依存する場合があります。
COPY コマンドを使用した一括ロード¶
このオプションを使用すると、クラウドストレージで既に使用可能なファイルからデータのバッチをロードしたり、ローカルマシンから内部(つまり、Snowflake)クラウドストレージの場所にデータファイルをコピー(つまり、 ステージング)したりすることが、データをテーブルにロードする前に COPY コマンドを使用してできるようになります。
コンピューティングリソース¶
一括ロードは、 COPY ステートメントで指定されたユーザー提供の仮想ウェアハウスに依存します。ユーザーは、予想されるロードに対応するために、ウェアハウスのサイズを適切に調整する必要があります。
ロード中の単純な変換¶
Snowflakeは、 COPY コマンドを使用してテーブルにデータをロードする際のデータの変換をサポートしています。オプションには次が含まれます。
列の並べ替え
列の省略
キャスト
ターゲット列の長さを超えるテキスト文字列の切り捨て
データファイルに、ターゲットテーブルと同じ数と列の順序を持たせる必要はありません。
Snowpipeを使用した連続ロード¶
このオプションは、少量のデータ(つまり、マイクロバッチ)をロードし、段階的に分析に使用できるように設計されています。Snowpipeは、ファイルがステージに追加され、インジェスションのために送信されてから数分以内にデータをロードします。これにより、生データが利用可能になり次第、ユーザーは最新の結果を得ることができます。
コンピューティングリソース¶
Snowpipeは、Snowflakeが提供するコンピューティングリソース(サーバーレスコンピューティングモデル)を使用します。これらのSnowflakeが提供するリソースは、必要に応じて自動的にサイズ変更および拡大/縮小され、1秒ごとの請求で課金および明細化します。データのインジェストは、実際のワークロードに基づいて課金されます。
ロード中の単純な変換¶
パイプ定義の COPY ステートメントは、データのバルクロード時と同じ COPY 変換オプションをサポートします。
さらに、データパイプラインはSnowpipeを活用して、データのマイクロバッチをステージングテーブルに継続的にロードし、自動タスクとストリーム内の変更データキャプチャ(CDC)情報を使用して変換と最適化を行います。
複雑な変換のためのデータパイプライン¶
A data pipeline enables applying complex transformations to loaded data. This workflow generally leverages Snowpipe to load "raw" data into a staging table and then uses a series of table streams and tasks to transform and optimize the new data for analysis.
Apache Kafkaトピックからのデータのロード¶
Kafka用のSnowflakeコネクタ。 を使用すると、ユーザーは Apache Kafka サーバーに接続し、1つ以上のトピックからデータを読み取り、そのデータをSnowflakeテーブルにロードできるようになります。
データのロードの代替¶
クエリを実行する前に、必ずしもデータをSnowflakeにロードする必要はありません。
外部テーブル(データレイク)¶
外部テーブル により、外部クラウドストレージに保存されている既存のデータをSnowflakeに最初にロードすることなく、分析のためにクエリできます。データの信頼できる情報源は、外部のクラウドストレージに残ります。マテリアライズドビューを介してSnowflakeでマテリアライズされたデータセットは、読み取り専用です。
このソリューションは、外部のクラウドストレージに大量のデータが保存されており、データの一部のみをクエリしたいアカウントに特に役立ちます。例:最新のデータ。ユーザーは、クエリのパフォーマンスを向上させるために、このデータのサブセットでマテリアライズドビューを作成できます。