Frosty Friday 解答担当者のひそかな楽しみ

2024/12/08に公開

はじめに

🎁本記事は Frosty Friday Advent Calendar 2024 2日目の記事です🎁

この記事をご覧になっている方はきっと Frosty Friday live challenge を視聴されていますよね。(いつもご視聴いただきましてありがとうございます!)

https://youtube.com/playlist?list=PLVj4iIZgzTAq2FzaBBgqFOtZaJTcoG3JR&si=PSSKnmkP9R5L_DK1

この記事では、私がチャレンジの解説を担当するとき、その過程でひそかに楽しんでいるいくつかのことを紹介します。

楽しみポイント

1. 機能の歴史を振り返る

Frosty Friday では、リリースされたばかりの機能を扱うチャレンジがよく登場します。
新機能系チャレンジを担当するときは、その機能がいつ プライベートプレビュー/パブリックプレビュー/一般公開になったか、また関連するアップデートがあったか、などを振り返ります。
こうして振り返ると「当時の機能で解くならこうだけど、今ならこう解くこともできる!」とか、解く楽しみが増えるわけですね。

例:Week 26 – Tasks & Email

https://frostyfriday.org/blog/2022/12/09/week-26-intermediate/

この問題は 2022/12/09 に公開されました。ここで利用する Sending Email Notifications 機能は 2022/11 プレビュー開始され、2023/08 に一般公開となっています。

Sending Email Notifications 機能のドキュメントはこちら。

https://docs.snowflake.com/en/user-guide/notifications/email-stored-procedures

そして Notification 機能といえば、メールだけでなく Webhook やメッセージングサービスにも通知を送れる新しい Notifications 機能が 2024/05 にリリースされました。

https://docs.snowflake.com/en/user-guide/notifications/snowflake-notifications

そして、Week 26 の解説動画がこちらです。出題当時に意図されていたであろう SYSTEM$SEND_EMAIL() を使った解答だけでなく、SYSTEM$SEND_SNOWFLAKE_NOTIFICATION を使った解答も作成しました。

https://youtu.be/A01CNdJKtlE?si=kNR_mCsysIpZt1Bn

2. ほかの方の解答を読む

チャレンジのコメント欄に、ほかの Frosty Friday 参加者の解答が投稿されています。十人十色の解き方があり、これがめちゃめちゃ勉強になるのです。
また、初見で「わからん!!」と思った問題は、先に解答を読んだりもしています。わかんないものはしょうがない。

3. 他の解法を考える

「1. 機能の歴史を振り返る」 では、他の機能を使った解法を考えることをお伝えしました。
さて、Snowflake で使える言語は SQL だけではありません。ストアドプロシージャ/UDF のチャレンジであれば、Python などで解くこともできますね。また、Snowflake に対応しているツールを使うこともできるはずです。Frosty Friday のチャレンジ一覧ページには、dbt で解けるかどうかが記載されています。

例:Week 20 – Stored Procedures

解答例は SQL Script や dbt で実行するものがありましたが、Python のものがなかったので、作ってみました。
動画はこちらです。

https://youtu.be/99Uj2d_BM8k?si=dPs4qyOAn39RCYeu

例:Week 32 – Session Security

内容によっては、dbt だけでなく Terraform も使えそうです。ということで Terraform で解いてみたのがこちら。(ただ、解答作成当時は Session policy リソースがなかったので、代わりに危険なリソースを使っており、よほどのことがない限り参考にしないでほしいですが。。。)

https://youtu.be/MsWmr1Y9Tr4?si=9qQcSDoB905PC-2t

4. ドキュメントを読む

そしてやっぱりドキュメントは基本。Frosty Friday のおかげで、知らないオプションや関数を知るきっかけができました。また、久しぶりに読むと内容が更新されていることがあったりして、これも面白いところです。

例:Week 4 – JSON

半構造化データを変換する問題です。FLATTEN() のオプションで index を取ってみたりしています。また、COPY INTO のオプションで新たに INCLUDE_METADATA が登場したので、早速試してみたりしました。
動画はこちらです。

https://youtu.be/4TlrMa0yli0?si=JTY20AUIAU4qfhxM

さいごに

Frosty Friday にはこういう楽しみ方もあります。自分だけの楽しみ方を見つけると Frosty Friday をもっと楽しむことができます!レッツエンジョイ Frosty Friday!

Frosty Friday Live Challenge では出演者を募集しています。自分の解法を紹介してみたい方、Snowflake のアップデートを語りたい方、ぜひぜひお声がけください!!

Discussion