2024/08/16 このエントリーをはてなブックマークに追加 はてなブックマーク - Snowpipeについて調べる。自動ロードや差分ロードが良い感じに出来るのか

Snowpipeについて調べる。自動ロードや差分ロードが良い感じに出来るのか

カテゴリ:

Snowpipeとは

https://docs.snowflake.com/ja/user-guide/data-load-snowpipe-intro

COPYコマンドとかとは異なり、ファイル単位で小さい粒度のロードが出来るということらしい。

用語の整理

  • Snowpipe→機能名
  • パイプ→名前付きファーストクラスSnowflakeオブジェクト
  • Snowflakeテーブル→Snowflakeの世界のテーブル
  • 内部ステージ→Snowflakeのテーブルとか、名前付きステージ
  • 外部ステージ→S3とかのファイルの置き場所のこととか
  • 半構造化データ→JSONとかAVROとか

使い方

パイプを作ることでなんやかんやするらしい

CREATE PIPE ALTER PIPE DROP PIPE DESCRIBE PIPE SHOW PIPES

一旦CREATE PIPEさえ理解すれば、使い始められそうではある。

基本、RDBでいうところのTABLEがPIPEに置き換わった構文のようだ。

CREATE PIPE

https://docs.snowflake.com/ja/sql-reference/sql/create-pipe

こう書くらしい。

create pipe mypipe_s3
  auto_ingest = true
  aws_sns_topic = 'arn:aws:sns:us-west-2:001234567890:s3_mybucket'
  as
  copy into snowpipe_db.public.mytable
  from @snowpipe_db.public.mystage
  file_format = (type = 'JSON');

このように、ステージからsnowflakeテーブルへと、データを流し込むことになる。
データがS3にputされる→SNS経由でSQSにキュー送信→Snowflake側でサブスクライブ→PIPEの定義通り、ステージからテーブルにCOPYという流れが組まれるということらしい。

ややこしいのは、Snoflake側がSQSを作成、管理しており、S3側がその送信先を知っていないといけないこと。

このあたり、日本語ドキュメントがよく分からなかったので結局英語の公式ドキュメントを読むことになった

英語版 https://docs.snowflake.com/en/user-guide/data-load-snowpipe-auto-s3

日本語版 https://docs.snowflake.com/ja/user-guide/data-load-snowpipe-auto-s3

差分ロードなどの仕組み

上記のようなイベント通知を使った自動ロードを使えば、差分を日時で取り込むワークフローなども作りやすそうである。
S3以外にもCloud StorageやAzure Blobなどメインどころのクラウドのストレージサービスに対応してる。

全量をドカンとロードしたあと、日時データをS3にアップロードし、毎日S3に1日分をputしてサブスクライブ→PIPEで差分をロードとか出来そう。

あとは、REST APIも用意されてるらしいので
それでよしなに自分でロードするためのバッチでも作るのも出来そう。

取り込む内容についてはfile formatが対応していればゴニョゴニョ出来そう。
例えば「csvファイルの特定ファイルだけSELECTしてCOPYする」など

https://docs.snowflake.com/en/user-guide/querying-stage

まとめ

  • SnowpipeでS3からSnowflakeへのファイル単位のロードが出来る
  • PIPEのDDLでSnowpipeを構築できる(CREATE PIPEなど)
  • SQSのサブスクライブかRESTのAPIコールによってPIPEを動かすことが出来る
  • ロードの単位はファイルっぽい。ファイルある程度SELECT文で条件つけて取り込むことも出来るが、あまり難しいことは出来ない(COPY構文の範囲内のことしか出来ない)

2024/07/04 このエントリーをはてなブックマークに追加 はてなブックマーク - Kotlin Fest 2024、とある運営スタッフのふりかえり(個人の感想です)

Kotlin Fest 2024、とある運営スタッフのふりかえり(個人の感想です)

カテゴリ:



なかなかあっという間の数ヶ月だった。

本格的に始動したのは2月か3月ぐらいだったか。
2022年を思い出しながら、運営スタッフが再び集まり Kotlin Fest 2024に向けた動きが始まった。

とにかく、みんなありがとうございました

まず、はじめに書いておきたいのですが、とにかく感謝です。

参加者、スピーカーの方、スポンサーの方、運営スタッフ、デザイナーさん、当日手伝ってくれたスタッフ、会場 etc... それら全てがあったからこそ、良いKotlin Festになったのではないかなと思います👏👏👏 ありがとうございました!!!

2024/06/01 このエントリーをはてなブックマークに追加 はてなブックマーク - 俺の設計:設計は言語 > フレームワーク >= ソフトウエアアーキテクチャ

俺の設計:設計は言語 > フレームワーク >= ソフトウエアアーキテクチャ

まえおき

というわけで「俺のプログラミング」シリーズです。 自分が何を大事にしてプログラミングをしているか、自分でもよく分かってないので思いついたものを書いていく予定です。 今回は言語とフレームワークとソフトウェアアーキテクチャについて。

2024/05/11 このエントリーをはてなブックマークに追加 はてなブックマーク - 新しいMacBookのセットアップ - 2024年版

新しいMacBookのセットアップ - 2024年版

カテゴリ:

新PCを使い始めるときは各種設定が必要で面倒ですが、 一方で個々のニーズに合わせた作業環境作りを見つめ直す機会。

僕は最近、MacBookを新調した(業務用)のでセットアップを色々やるタイミングだったんですが いろいろ整理する機会になったので、ブログにしてみようと思います。

過去記事: MacBook Pro買ってとりあえずやったこと 2017 新しいMacBookの設定でやったこと2021版 【Mac環境】どこに何開いたかを忘れがちな僕ですが、一周回ってLaunchpadとAltTabに行き着いた

2024/04/20 このエントリーをはてなブックマークに追加 はてなブックマーク - コンパイル時、テスト、実行時、早く失敗に気づく

コンパイル時、テスト、実行時、早く失敗に気づく

まえおき

というわけで「俺のプログラミング」シリーズです。 自分が何を大事にしてプログラミングをしているか、自分でもよく分かってないので思いついたものを書いていく予定です。 今回はエラー、失敗について。

GA