Snowflake

Snowpipeとは?自動データ取り込み

2026-03-21
更新: 2026-03-27
NicheeLab編集部

Snowpipeは、クラウドストレージに到着したファイルをSnowflakeテーブルへ自動的かつ継続的にロードするサーバーレスのデータ取り込みサービスです。S3・Azure Blob Storage・GCSに新規ファイルが配置されると、イベント通知を起点にSnowpipeが起動し、数分以内にターゲットテーブルへデータが反映されます。SnowPro Core試験ではData Loading / Data Transformationドメインで頻出のトピックです。

Snowpipeのアーキテクチャ

Snowpipeの処理は、Cloud Services Layer上のサーバーレスコンピュートで実行されます。ユーザーのVirtual Warehouseを消費せず、ロードしたデータ量に基づくServerless Creditで課金されます。この仕組みにより、Warehouseを常時起動しておく必要がありません。

Cloud Storage (S3 / Blob / GCS)
  │  ファイル到着
  ▼
Event Notification (SQS / EventGrid / Pub/Sub)
  │  通知メッセージ
  ▼
Snowpipe (Cloud Services Layer - Serverless)
  │  COPY INTO 実行
  ▼
Target Table (Storage Layer)

Auto-ingest:SQS通知による自動取り込み

Auto-ingestは、AWSの場合はS3イベント通知(SQS)をSnowpipeに直接連携する方式です。ファイルがS3バケットに到着するたびにSQSメッセージがSnowpipeのキューに送信され、自動的にロード処理が開始されます。Azure(EventGrid)やGCP(Pub/Sub)でも同等の仕組みが利用可能です。

-- Auto-ingest対応パイプの作成
CREATE OR REPLACE PIPE sales_pipe
  AUTO_INGEST = TRUE
AS
COPY INTO analytics.raw_sales
FROM @sales_stage/daily/
FILE_FORMAT = (TYPE = CSV SKIP_HEADER = 1 FIELD_OPTIONALLY_ENCLOSED_BY = '"')
ON_ERROR = 'SKIP_FILE';

AUTO_INGEST = TRUEを指定すると、Snowflakeが内部的にSQSキューのARNを生成します。このARNをS3バケットのイベント通知設定に紐づけることで、ファイル到着トリガのパイプラインが完成します。

REST APIによるトリガ

Auto-ingestを使わず、外部のオーケストレーションツール(Airflow、AWS Lambda等)からSnowpipe REST APIを呼び出してロードをトリガする方式もあります。insertFilesエンドポイントにファイルパスのリストをPOSTすることで、指定ファイルだけをロードできます。

-- REST API用パイプ(AUTO_INGEST = FALSE)
CREATE OR REPLACE PIPE batch_pipe
AS
COPY INTO analytics.raw_events
FROM @event_stage/
FILE_FORMAT = (TYPE = PARQUET);

-- パイプのステータス確認
SELECT SYSTEM$PIPE_STATUS('batch_pipe');

REST APIトリガは、既存のワークフロー管理ツールとSnowpipeを統合したい場合や、ロードタイミングを外部から精密に制御したい場合に有効です。

COPY_HISTORYによるロード監視

Snowpipeのロード結果はCOPY_HISTORYで確認します。INFORMATION_SCHEMA版はリアルタイム性が高く直近14日間、ACCOUNT_USAGE版は最大1年間の履歴を保持します。

-- 直近24時間のロード履歴を確認
SELECT
  file_name,
  stage_location,
  status,
  row_count,
  error_count,
  first_error_message,
  last_load_time
FROM TABLE(INFORMATION_SCHEMA.COPY_HISTORY(
  TABLE_NAME => 'ANALYTICS.RAW_SALES',
  START_TIME => DATEADD(HOURS, -24, CURRENT_TIMESTAMP())
))
ORDER BY last_load_time DESC;
確認方法保持期間レイテンシ用途
INFORMATION_SCHEMA.COPY_HISTORY14日リアルタイム直近のロード状況確認・障害対応
ACCOUNT_USAGE.COPY_HISTORY1年最大45分遅延長期的なロードトレンド分析
SYSTEM$PIPE_STATUS-リアルタイムパイプの稼働状態・保留ファイル数

SnowpipeとSnowpipe Streamingの比較

Snowpipe Streamingは2023年にGAとなった行レベルのリアルタイム取り込み機能です。ファイルを経由しないため、レイテンシがサブ秒レベルまで短縮されます。

比較項目SnowpipeSnowpipe Streaming
データ単位ファイル(CSV / Parquet / JSON等)行(Row)
トリガSQS通知 / REST APIIngest SDK / Kafka Connector
レイテンシ数分サブ秒〜数秒
コスト体系Serverless Credit(ファイル数ベース)Serverless Credit(行数・バイト数ベース)
ユースケースバッチファイルの継続的取り込みIoTセンサー・クリックストリーム等のリアルタイム取り込み

COPY INTOとの使い分け

COPY INTOはWarehouse上で実行する一括ロードコマンドです。Snowpipeとの根本的な違いは、実行基盤と起動トリガにあります。

比較項目COPY INTO(手動)Snowpipe
実行基盤Virtual WarehouseServerless
起動方法手動SQL / スケジュールTask自動(通知トリガ)/ REST API
最適シナリオ初期一括ロード・再処理継続的なファイル到着
コスト構造Warehouse稼働時間ベースServerless Creditベース

運用ベストプラクティス

  • ファイルサイズの最適化:Snowpipeは小さなファイルでも動作しますが、100〜250MB程度の圧縮ファイルが最もコスト効率が良いとされています
  • ON_ERRORオプション:本番環境ではSKIP_FILEを設定し、エラーファイルを隔離して後から個別対処する設計が安定します
  • PIPE_USAGE_HISTORYでコスト監視:ACCOUNT_USAGE.PIPE_USAGE_HISTORYビューでパイプごとのクレジット消費を追跡します
  • 冪等性の確保:ファイル名にタイムスタンプやUUIDを含め、14日間のメタデータ保持期間内での重複排除を確実にします

問題で確認

Data Loading

問題 1

S3バケットに新しいCSVファイルが到着するたびに自動的にSnowflakeテーブルへロードしたい。Snowpipeのパイプ定義として必要な設定はどれか。

  1. AUTO_INGEST = TRUE を指定し、S3イベント通知(SQS)をSnowpipeのキューARNに紐づける
  2. SCHEDULE = 'USING CRON 0/5 * * * *' を指定してポーリングでファイルを検知する
  3. WAREHOUSE_SIZE = 'LARGE' を指定してSnowpipeの処理能力を確保する
  4. AUTO_RESUME = TRUE を指定してパイプのWarehouseを自動起動する

正解: A

SnowpipeのAuto-ingestでは、パイプ定義にAUTO_INGEST = TRUEを指定し、生成されるSQSキューARNをS3バケットのイベント通知に設定します。Snowpipeはサーバーレスで動作するためWarehouseサイズの指定は不要です。SCHEDULEはTaskの構文であり、AUTO_RESUMEはWarehouseの設定パラメータです。

よくある質問

SnowpipeとSnowpipe Streamingの違いは何ですか?

Snowpipeはクラウドストレージ上のファイル(CSV・Parquet・JSONなど)を自動取り込みする仕組みで、SQS/EventGrid/Pub Sub通知をトリガに動作します。一方Snowpipe Streamingはファイルを介さず、Kafka ConnectorやSnowflake Ingest SDKを使って行レベルのデータをサブ秒レイテンシでテーブルへ直接挿入します。ファイルベースの取り込みにはSnowpipe、リアルタイムの行ストリームにはSnowpipe Streamingが適しています。

SnowpipeのAuto-ingestで二重ロードは起きませんか?

Snowpipeはロード済みファイルのメタデータを内部的に保持しており、同一ファイルの二重ロードを防止します。ただしメタデータの保持期間はデフォルト14日間のため、14日を超えて同名ファイルが再送されると再度ロードされる可能性があります。FILE_FORMAT側でSKIP_HEADER等を適切に設定し、ファイル名に日時サフィックスを付与するのがベストプラクティスです。

Snowpipeのロード失敗をどのように検知・対処しますか?

COPY_HISTORY テーブル関数(INFORMATION_SCHEMA)またはACCOUNT_USAGE.COPY_HISTORYビューでロード履歴と失敗理由を確認できます。VALIDATION_MODE='RETURN_ERRORS' を指定したCOPY INTOでファイル単位のエラーを事前検証することも可能です。失敗ファイルの自動隔離にはSnowpipe側のON_ERROR='SKIP_FILE'オプションを使い、通知パイプラインと組み合わせてアラートを設定するのが実運用の定番です。

この記事で学んだ内容を問題で確認しましょう

16,000問以上の問題で実力チェック

無料で問題を解いてみる
この記事の著者

NicheeLab編集部

データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。


関連記事
Snowflake

Snowflake資格一覧|全11試験(SnowPro)の難易度・費用

Snowflake認定資格(SnowPro)全11試験の一覧・難易度・費用・出題範囲を徹底解説。...

Snowflake

Snowflake試験の難易度ランキング|全11資格を徹底比較

Snowflake(SnowPro)認定全11試験の難易度をランキング形式で比較。学習時間・合格に必要なスキルから分析。...

Snowflake

Snowflake資格の勉強方法|効率的な学習ルートと合格のコツ

Snowflake認定資格(SnowPro)に最短で合格するための勉強方法。公式リソース・学習スケジュールを徹底ガイド。...

Snowflake

SnowPro Core試験完全解説|出題範囲・問題例・合格戦略

SnowPro Core Certification(COF-C03)を徹底解説。出題範囲・100問の試験形式・合格ライ...

Snowflake

SnowPro Platform Associate完全解説|入門試験の攻略

SnowPro Associate: Platform Certification(SOL-C01)を徹底解説。最も簡単...

Snowflakeの記事一覧 (102件)
© 2026 NicheeLab All rights reserved.