データパイプラインの紹介¶
データパイプラインは、連続的なデータロードの変換と最適化に伴う多くの手動ステップを自動化します。多くの場合、「生」データは最初に一時ストレージに使用されるステージングテーブルに一時的にロードされ、その後、一連の SQL ステートメントの使用により変換され、宛先レポートテーブルに挿入されます。このプロセスの最も効率的なワークフローには、新規または変更されたデータのみの変換が含まれます。
このトピックの内容:
連続データパイプラインに含まれる機能¶
Snowflakeは、連続データパイプラインを有効にする次の機能を提供します。
- 連続データロード
連続データ読み込みのオプションには次のものがあります。
サードパーティのデータ統合ツール
- 変更データの追跡
ストリーム オブジェクトは、挿入やその他のデータ操作言語(DML)の変更を含む、テーブル(ステージングテーブルなど)の変更データキャプチャ(CDC)のデルタ情報を記録します。ストリームを使用すると、2つのトランザクションポイント間で、行レベルによるテーブルの一連の変更をクエリおよび利用できます。
連続データパイプラインでは、連続データロードを使用してステージングテーブルおよびダウンストリームテーブルにビジネスアプリケーションからのデータが入力され、 SQL ステートメントを使用してさらに処理できる状態になると、テーブルストリームが記録します。
詳細については、 テーブルストリームを使用した変更追跡 をご参照ください。
- 定期的なタスク
タスク オブジェクトは、ストアドプロシージャを呼び出すステートメントを含む SQL ステートメントを実行するための繰り返しスケジュールを定義します。より複雑な定期処理をサポートするために、タスクを連続して実行するためにチェーン化できます。
タスクはオプションでテーブルストリームを使用して、新規または変更されたデータを継続的に処理する便利な方法を提供できます。タスクは、ストリームが表面化する新しい行または変更された行を変換できます。タスクの実行がスケジュールされるたびに、ストリームにテーブルの変更データが含まれているかどうかを確認し( SYSTEM$STREAM_HAS_DATA を使用)、変更データを消費するか、変更データが存在しない場合は現在の実行をスキップします。
ユーザーは、連続した SQL ステートメントを実行してデータを処理し、それをさまざまな宛先テーブルに移動する、単純なツリーのようなタスク構造を定義できます。
詳細については、 タスクを使用したスケジュールでの SQL ステートメントの実行 をご参照ください。
ワークフロー¶
次の図は、Snowflake機能を使用した一般的な連続データパイプラインフローを示しています。
次のSnowflake機能の1つまたはサードパーティのデータ統合ツール(表示なし)は、ステージングテーブルにデータを継続的にロードします。
Snowpipe
Snowpipeは、外部ステージの場所(Amazon S3、Google Cloud Storage、またはMicrosoft Azure)からステージングテーブルに、データのマイクロバッチを継続的にロードします。
Kafka用Snowflakeコネクタ
Kafkaコネクタは、1つ以上のApache Kafkaトピックから内部(Snowflake)ステージにレコードを継続的にロードした後、Snowpipeを使用してステージングテーブルにロードします。
1つ以上のテーブルストリームが変更データをキャプチャし、クエリで使用できるようにします。
1つ以上のタスクが SQL ステートメント(ストアドプロシージャの呼び出し可)を実行して、変更データを変換し、最適化されたデータセットを分析のために宛先テーブルに移動します。この変換プロセスが実行されるたびに、ストリーム内の変更データを選択して宛先テーブルで DML 操作を実行し、トランザクションのコミット時に変更データを利用します。