❄️

Frosty Friday Live Challenge Vol.12 Week25 Basic JSON & Week26

がく@ちゅらデータエンジニアです!
※以前の記事、公開を忘れていました・・・・・

Frosty Fridayをやる深夜RADIO的な番組をやっています。もうVol.12になりました♪
一緒にメインMCをやってるのが、Tableau DataSaber時代からの友達の @tomowk1 さん♪
また、前々回より、親会社の同僚であり仲間のあれさんも、レギュラーに迎えて、MC3人でお送りしています!

Frosty Fridayとは

https://frostyfriday.org/

2022年07年に最初のお題が投稿されたSnowflakeのスキルアップを目的とした学習コンテンツです。
1週間〜2週間に一度、Snowflakeに関するお題が出題されます。
レベル的には、初級、中級、上級があります。
Frosty Fridayへの参加方法は、

  • 作ったコードをご自身のGithubなどで公開
  • そのURLをお題(Week1など)にコメントを記載

回答は”公式”にはありません!
ただ、世界中でSnowflakeを使っている人のチャレンジの結果が閲覧でき、すごく参考になり面白いです。

Snowflake実務者の方々のノウハウが知れるコンテンツとなっています
現時点(2024年7月現在)で、Week102 まで出題されています。
後発ではありますが、Week1から順番にお題を進めています。

Frosty Friday Live Challenge Vol.12

今回は
Week25 - Basic JSON by gaku
Week26 - Intermediate Tasks & Email by あれさん
です。

https://www.youtube.com/watch?v=A01CNdJKtlE

タイムラインはこちら

0:00 オープニング
01:25 What's New :Native App support & Streamlit in Snowflake for AWS PrivateLink
02:16 What's New :Query objects larger than 16 MB in files on a stage
05:25 What's New :Notebooks on Container Runtime
09:51 Topics:Terraform で作る Snowflake UDF / UDTF
13:43 Topics: One dbt: the biggest features we announced at Coalesce 2024
19:54 Week 25 – JSON 問題説明
22:30 Week25 解法1
32:10 Week25 解法2
42:50 Week 26 – Tasks & Email 問題説明
44:51 Week26 解法1
55:27 Week26 解法2
58:52 Week26 解法3
01:04:05 Week26 解法4
01:11:18 クロージング

直近の話題からピックアップ

What's New(〜2024年10月10日)

  • Native App support for AWS PrivateLinkAWS PrivateLink in Streamlit in SnowflakeDoc
    • AWSのPrivateLink経由で使えるようになったよ!というリリースで、高いセキュリティ化を担保した中でみるエンプラ用途で、Steamlit in SnowflakeやNative Appが使えるようになるので、より利用が促進されるのではないかな!と思います
  • Query objects larger than 16 MB in files on a stage
    • とSnowflakeの1カラムには16MBまでという制約があります
    • 以前までは、Stageから取り込むときに、一旦、カラムに取り込んでから、JSON型(Variant型)を分解して・・・という方法を使う際に、でかすぎるJSONの場合、Snowflakeに取り込む前に、加工する必要がありました。
    • 今回で128MBまで読み込みについては、拡張されたので、分解してテーブルにINSERTすることができるようになったので、利便性はかなり上がったのではないかなと思います
    • ありますよね・・・・・トップレベルが一つで、その下に配列でいっぱい16MBより小さなJSONのひとかたまりって・・・・
  • Notebooks on Container Runtime - Preview
    • Snowflake Notebookでは、仮想ウェアハウスを選んでしかコンピュートができなかったのですが、Notebookだとよりデータサイエンスに適した、たとえば、メモリが通常よりも数倍のもの・・・とかにしたい、そんな柔軟性をもたせた、コンピュートプールを使用でき量になったのが今回のリリースになります
    • ランタイムは、今回のプレビューでは、CPUとGPUの2種類

Snowflake関連トピック

  • Terraform で作る Snowflake UDF / UDTF (Hiroki Yamagishi@Simpleform)
    • UDFやStored Procedureをどこで管理するか?GitでSQLは管理するけど、実際にSnowflakeで作成する際は、WebUIからCREATE FUNCTIONのようなSQLを手動実行する??
    • みたいなことをしていました
    • 今回のこの方式で、Terraformに持たせることができるので、これもオブジェクト管理の解決方法の一つかなと思います
    • ※TableやViewをTerraform管理はちょっと厳しいなぁとは思っていました
  • One dbt: the biggest features we announced at Coalesce 2024
    • 直接Snowflake・・というわけではないのですが、今後、dbtCloudのCross-Platform Data Meshで、複数のデータプラットフォームが混在した用途に応じた、各製品の得意な処理はその製品に任せる・・・といった大きなデータパイプライン・データ基盤が作れていくかもな・・・という夢が広がる機能でした

Frosty Friday Live Challenge

今回は

Week25 - Basic JSON by gaku
Week26 - Intermediate Tasks & Email by あれさん

です。

解説は動画を見てください!

Week25 - Basic JSON

https://www.youtube.com/watch?v=A01CNdJKtlE&t=1194s
19分54秒あたりから

https://github.com/gakut12/Frosty-Friday/blob/main/week25_basic_json/week25_basic_json.sql

今回は、

  1. ベーシックな解法
  2. INFER_SCHEMAを使った解法+α

Week26 - Intermediate Tasks & Email

https://www.youtube.com/watch?v=A01CNdJKtlE&t=2570s
42分辺りから

https://github.com/allllllllez/frosty_friday/blob/main/sql/week-26.sql
解法を複数

まず最初にTASKを作るところから。(非常に簡単なTASK)
TASK_HISTORYを使って、ウォッチするところとかもTIPSですね。

TASKに関しての解法が

そして通知に関しての解法

通知する方法がだんだんと増えてきて、古い解法から最新の解法まで解説されてます。

  • SYSTEM$SEND_EMAIL関数を使ってEmail通知
    • Notification Integrationを使う
    • 通知先のメールアドレスは、Verify済みの宛先にしか送れないのは注意
  • SYSTEM&SEND_SNOWFLAKE_NOTIFICATION関数を使って、Email通知
  • SYSTEM&SEND_SNOWFLAKE_NOTIFICATION関数を使って、Slack通知
ちゅらデータ株式会社

Discussion