Snowpipeは、クラウドストレージに到着したファイルをSnowflakeテーブルへ自動的かつ継続的にロードするサーバーレスのデータ取り込みサービスです。S3・Azure Blob Storage・GCSに新規ファイルが配置されると、イベント通知を起点にSnowpipeが起動し、数分以内にターゲットテーブルへデータが反映されます。SnowPro Core試験ではData Loading / Data Transformationドメインで頻出のトピックです。
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は、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バケットのイベント通知設定に紐づけることで、ファイル到着トリガのパイプラインが完成します。
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を統合したい場合や、ロードタイミングを外部から精密に制御したい場合に有効です。
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_HISTORY | 14日 | リアルタイム | 直近のロード状況確認・障害対応 |
| ACCOUNT_USAGE.COPY_HISTORY | 1年 | 最大45分遅延 | 長期的なロードトレンド分析 |
| SYSTEM$PIPE_STATUS | - | リアルタイム | パイプの稼働状態・保留ファイル数 |
Snowpipe Streamingは2023年にGAとなった行レベルのリアルタイム取り込み機能です。ファイルを経由しないため、レイテンシがサブ秒レベルまで短縮されます。
| 比較項目 | Snowpipe | Snowpipe Streaming |
|---|---|---|
| データ単位 | ファイル(CSV / Parquet / JSON等) | 行(Row) |
| トリガ | SQS通知 / REST API | Ingest SDK / Kafka Connector |
| レイテンシ | 数分 | サブ秒〜数秒 |
| コスト体系 | Serverless Credit(ファイル数ベース) | Serverless Credit(行数・バイト数ベース) |
| ユースケース | バッチファイルの継続的取り込み | IoTセンサー・クリックストリーム等のリアルタイム取り込み |
COPY INTOはWarehouse上で実行する一括ロードコマンドです。Snowpipeとの根本的な違いは、実行基盤と起動トリガにあります。
| 比較項目 | COPY INTO(手動) | Snowpipe |
|---|---|---|
| 実行基盤 | Virtual Warehouse | Serverless |
| 起動方法 | 手動SQL / スケジュールTask | 自動(通知トリガ)/ REST API |
| 最適シナリオ | 初期一括ロード・再処理 | 継続的なファイル到着 |
| コスト構造 | Warehouse稼働時間ベース | Serverless Creditベース |
Data Loading
問題 1
S3バケットに新しいCSVファイルが到着するたびに自動的にSnowflakeテーブルへロードしたい。Snowpipeのパイプ定義として必要な設定はどれか。
正解: 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'オプションを使い、通知パイプラインと組み合わせてアラートを設定するのが実運用の定番です。
NicheeLab編集部
データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。
Snowflake資格一覧|全11試験(SnowPro)の難易度・費用
Snowflake認定資格(SnowPro)全11試験の一覧・難易度・費用・出題範囲を徹底解説。...
Snowflake試験の難易度ランキング|全11資格を徹底比較
Snowflake(SnowPro)認定全11試験の難易度をランキング形式で比較。学習時間・合格に必要なスキルから分析。...
Snowflake資格の勉強方法|効率的な学習ルートと合格のコツ
Snowflake認定資格(SnowPro)に最短で合格するための勉強方法。公式リソース・学習スケジュールを徹底ガイド。...
SnowPro Core試験完全解説|出題範囲・問題例・合格戦略
SnowPro Core Certification(COF-C03)を徹底解説。出題範囲・100問の試験形式・合格ライ...
SnowPro Platform Associate完全解説|入門試験の攻略
SnowPro Associate: Platform Certification(SOL-C01)を徹底解説。最も簡単...