1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【図解あり】Snowflakeでデータパイプラインを構築する方法(Snowpipe・Stream・Task)

1
Last updated at Posted at 2026-07-10

はじめに

Snowflakeでは、データをリアルタイムに取り込む仕組みを比較的簡単に構築できます。

今回は、実際の業務でもよく採用される構成である

  • AWS S3
  • External Stage
  • Snowpipe
  • Stream
  • Task

を組み合わせたデータパイプラインについて紹介します。

この記事では、それぞれの役割やデータの流れを初心者向けに解説します。


全体構成

今回紹介する構成は次のようになります。

image.png

この構成では、

S3にファイルを配置するだけで、本テーブルまで自動でデータが反映されます。

※実のところ、外部ステージだけではS3にアクセスすることができないです。
 理由としては認証情報がないからになります。なのでStorage Integrationが必要
 になるのですが、今回のデータパイプラインの処理ではなく認証の話になるので、
 今回は省き別記事で記載したいと思います。


各サービスの役割

① Amazon S3

最初にCSVファイルを保存する場所です。

例えば、

customer.csv

をアップロードすると、

パイプラインの処理が開始されます。


② External Stage

External Stageは、

S3上のファイルをSnowflakeから参照するための設定

です。

イメージとしては

image.png

のような役割になります。

External Stage自体はデータを保存するものではありません。


③ Snowpipe

Snowpipeは、

S3へファイルが配置されたことを検知して自動でロードする機能

です。

通常のCOPY INTOとの違いは

COPY INTO Snowpipe
手動実行 自動実行
バッチ処理向け リアルタイム向け

Snowpipeが起動すると、

External Stageからデータを読み取り、

一時テーブルへロードします。


なぜ一時テーブルにロードするの?

いきなり本テーブルへロードしない理由はいくつかあります。

例えば、

  • データの形式チェック
  • 重複チェック
  • データ加工
  • 不正データの除外

などです。

そのため、

本番では

Snowpipe
      │
      ▼
一時テーブル

という構成が非常によく利用されます。


④ Stream

Streamは

テーブルの変更差分だけを保持する機能

です。

例えば、一時テーブルに新しくA,B,Cが追加された場合、

image.png

上記図のようにA,B,Cだけが保持されます。

逆に

何も更新されていなければ、

Streamには何もありません。

つまり、

Taskは毎回テーブル全体を見る必要がありません。


⑤ Task

Taskは

SQLを定期実行するジョブ

です。

今回の構成では

Streamに更新がある
        │
        ▼
MERGE実行
        │
        ▼
本テーブル更新

という役割になります。

一般的には

MERGE INTO

を利用して

  • INSERT
  • UPDATE

をまとめて実施します。


この構成を採用するメリット

リアルタイム連携

S3へファイルを置くだけで自動反映できます。


差分更新

Streamのおかげで、

変更データだけ処理できます。

処理時間も短縮できます。


SQLだけで実装可能

TaskはSQLだけで作成できます。

ETLツールを利用しなくても、

データパイプラインを構築できます。


保守しやすい

役割が明確です。

  • S3:ファイル保存
  • Stage:ファイル参照
  • Snowpipe:ロード
  • Stream:変更検知
  • Task:本テーブル更新

そのため、

障害調査もしやすくなります。


実際の業務でもよく利用される構成

この構成はSnowflakeの案件でも非常によく利用されています。

特に

  • AWS S3
  • Snowpipe
  • Stream
  • Task

の組み合わせは定番です。

データウェアハウスへリアルタイムにデータを取り込みたい場合には非常に相性が良い構成です。


まとめ

今回紹介したデータパイプラインは、

Snowflakeの代表的なリアルタイムデータ連携の構成です。

データの流れをもう一度まとめると、

Amazon S3
    │
    ▼
External Stage
    │
    ▼
Snowpipe
    │
    ▼
一時テーブル
    │
    ▼
Stream
    │
    ▼
Task
    │
    ▼
本テーブル

それぞれの役割を理解しておくことで、Snowflakeを利用したデータ基盤の全体像を把握しやすくなります。

今後Snowflakeを学習する方や、データパイプラインを構築する予定の方の参考になれば幸いです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?