今回の課題
データレイクとしてAWSのS3を使用している場合に、
Snowflakeへデータをロードするための機能を調査する。
下記の記事を読んで、不明だった機能について理解してみた。
S3からSnowflakeにデータをロードできるSnowflakeの機能
1)Snowflakeの「TASK」機能
スケジュールや前処理の終了をトリガーにして、SQLを自動実行するように設定できる機能。
ロード処理をSnowflakeの「TASK」機能で定義しておけば、自動化できる。
Snowflakeは、S3を外部ステージとして使用することができ、クエリでのデータをロードすることも可能となっている。
TASK機能と組み合わせることで、S3のデータファイルを使用して定期的にSnowflakeでテーブル生成することが可能になる。
※参考:タスクの紹介(公式ドキュメント)
2)Snowpipe機能
S3からSnowflakeにデータを手動でロードしなくても、
S3でファイルが利用できるようになったことを検知して、自動で継続的にロードできるようにする仕組み。
下記の流れで処理を自動化できる。
■Snowpipe実装の流れ
1.S3にデータが格納されたタイミングでAWS SQSを使ってSnowpipeに通知を送る。
2.通知をされたSnowpipeがSnowflakeの中にデータをロードする。
下記の記事で、Snowpipeの実装方法が紹介されていた。
※参考
・Amazon S3用のSnowpipeの自動化(公式ドキュメント)
・Snowpipeの作成
まとめ
S3からSnowflakeにデータをロードする流れをイメージできた。