これは何?
Snowpipe REST API についてまとめてみたメモ。
公式情報
エンドポイント
これを書いている時点では3つある。
エンドポイント名 | 説明 | メソッド | URL |
---|---|---|---|
insertFiles | データファイルの取り込み | POST | https://<アカウント識別子>.snowflakecomputing.com/v1/data/pipes/<パイプ名>/insertFiles?requestId=<リクエストID> |
insertReport | ロード履歴レポート(直近の履歴を取得) | GET | https://<アカウント識別子>.snowflakecomputing.com/v1/data/pipes/<パイプ名>/insertReport?requestId=<リクエストID>&beginMark=<開始マーク> |
loadHistoryScan | ロード履歴レポート(指定した2点間の履歴を取得) | GET | https://<アカウント識別子>.snowflakecomputing.com/v1/data/pipes/<パイプ名>/loadHistoryScan?startTimeInclusive=<開始時刻>&endTimeExclusive=<終了時刻>&requestId=<リクエストID> |
パラメータ名については、公式ドキュメント内で和英混じりだったりしていて表記揺れが大きい...
特徴など
制約系は理解しておいた方が良さそう。
insertFiles
- 実行するとインジェストするファイルの
キューにファイルが追加
される - 必ずしもファイルがインジェストされたことを意味するわけではない
- ほとんどの場合、数分以内に新しいデータをターゲットテーブルに挿入される
制約
- 投稿には最大
5000個
のファイルを含めることができる - 指定された各ファイルパスは
UTF-8
としてシリアル化される場合1024バイト以内
の長さである必要がある
insertReport
- イベントはinsertFilesを介して提出されたファイルのデータがテーブルにコミットされ、クエリで利用可能になったときに発生する
制約
- 最新の
10,000件
のイベントのみが保持される - イベントは最大
10分間
保持される
loadHistoryScan
- 過去の2点間(開始、終了)を指定して履歴情報を得る
- できれば
insertReport
を使うことが推奨されている - 429エラー(リクエストのレート制限)が発生する可能性が高いらしい
- 制約を気にせずSnowpipe(あるいはロード)の履歴を見たいなら、INFORMATION_SCHEMAのテーブル関数COPY_HISTORYを見ればいいんじゃね説
制約
- 最大
10,000個
の履歴を返却する
レスポンスコード
特にエラーのものは理解しておいた方が良さそう。
429 Request rate limit exceeded.(リクエストのレート制限を超えました。)
- 短時間に多数のリクエストがAPIに送信された場合にこのエラーが発生する可能性がある
-
loadHistoryScan
よりもinsertReport
を使うことを推奨する理由にも関連する-
loadHistoryScan
は気をつけないと制約に引っかかる - 具体例としては、過去24時間の履歴を毎分読み取るようなリクエストを行うと発生する可能性があるらしい
- 制約を避けるには、例えば履歴の最後の10分を8分毎に読むようにリクエストするといい、といったことが公式に書かれてある(実際はログの量次第とは思うが)
-
404 not recognized.(<パイプ名> は認識されません。)
- <パイプ名>が間違っている
- <パイプ名>を実行する権限がない
-
insertFiles
: OPERATE -
insertReport
,loadHistoryScan
: MONITOR
-