データパイプラインの紹介

データパイプラインは、連続的なデータロードの変換と最適化に伴う多くの手動ステップを自動化します。多くの場合、「生」データは最初に一時ストレージに使用されるステージングテーブルに一時的にロードされ、その後、一連の SQL ステートメントの使用により変換され、宛先レポートテーブルに挿入されます。このプロセスの最も効率的なワークフローには、新規または変更されたデータのみの変換が含まれます。

このトピックの内容:

連続データパイプラインに含まれる機能

Snowflakeは、連続データパイプラインを有効にする次の機能を提供します。

連続データロード

連続データ読み込みのオプションには次のものがあります。

変更データの追跡

ストリーム オブジェクトは、挿入やその他のデータ操作言語(DML)の変更を含む、テーブル(ステージングテーブルなど)の変更データキャプチャ(CDC)のデルタ情報を記録します。ストリームを使用すると、2つのトランザクションポイント間で、行レベルによるテーブルの一連の変更をクエリおよび利用できます。

連続データパイプラインでは、連続データロードを使用してステージングテーブルおよびダウンストリームテーブルにビジネスアプリケーションからのデータが入力され、 SQL ステートメントを使用してさらに処理できる状態になると、テーブルストリームが記録します。

詳細については、 テーブルストリームを使用した変更追跡 をご参照ください。

定期的なタスク

タスク オブジェクトは、ストアドプロシージャを呼び出すステートメントを含む SQL ステートメントを実行するための繰り返しスケジュールを定義します。より複雑な定期処理をサポートするために、タスクを連続して実行するためにチェーン化できます。

タスクはオプションでテーブルストリームを使用して、新規または変更されたデータを継続的に処理する便利な方法を提供できます。タスクは、ストリームが表面化する新しい行または変更された行を変換できます。タスクの実行がスケジュールされるたびに、ストリームにテーブルの変更データが含まれているかどうかを確認し( SYSTEM$STREAM_HAS_DATA を使用)、変更データを消費するか、変更データが存在しない場合は現在の実行をスキップします。

ユーザーは、連続した SQL ステートメントを実行してデータを処理し、それをさまざまな宛先テーブルに移動する、単純なツリーのようなタスク構造を定義できます。

詳細については、 タスクを使用したスケジュールでの SQL ステートメントの実行 をご参照ください。

ワークフロー

次の図は、Snowflake機能を使用した一般的な連続データパイプラインフローを示しています。

Continuous data pipeline flow
  1. 次のSnowflake機能の1つまたはサードパーティのデータ統合ツール(表示なし)は、ステージングテーブルにデータを継続的にロードします。

    Snowpipe

    Snowpipeは、外部ステージの場所(Amazon S3、Google Cloud Storage、またはMicrosoft Azure)からステージングテーブルに、データのマイクロバッチを継続的にロードします。

    Kafka用Snowflakeコネクタ

    Kafkaコネクタは、1つ以上のApache Kafkaトピックから内部(Snowflake)ステージにレコードを継続的にロードした後、Snowpipeを使用してステージングテーブルにロードします。

  2. 1つ以上のテーブルストリームが変更データをキャプチャし、クエリで使用できるようにします。

  3. 1つ以上のタスクが SQL ステートメント(ストアドプロシージャの呼び出し可)を実行して、変更データを変換し、最適化されたデータセットを分析のために宛先テーブルに移動します。この変換プロセスが実行されるたびに、ストリーム内の変更データを選択して宛先テーブルで DML 操作を実行し、トランザクションのコミット時に変更データを利用します。