❄️

Frosty Fridayの紹介〜写経のすゝめ〜

こんばんわ!
がく@ちゅらデータエンジニアです。

今年もやってまいりました、アドベントカレンダーの季節!
とち狂ったのか、FrostyFridayOnlyのアドベントカレンダーを立ててしまうという暴挙に及んでしまいましたw

https://qiita.com/advent-calendar/2024/frostyfriday

こちらは、Frosty Friday Advent Calendar 2024の一日目の記事になります。

Frosty Friday って知ってますか?

Frosty Fridayとは、「Snowflakeユーザが、Snowflakeユーザのために作成し、Snowflakeスキルの練習と開発に役立つチャレンジ」するものです。

原文
to help you practice and develop your Snowflake skills, created by Snowflake users, for Snowflake users.

リンカーン大統領のゲティスバーグの演説「Government of the people, by the people, for the people」みたいな感じですね!

https://frostyfriday.org/

Frosty Fridayはこちらのサイトで開催されています。

  • 毎週金曜日にSnowflakeに関するお題が出ます(隔週の場合もあるよ)
  • dbt Friendlyなお題もあります


このような感じに、dbtでも回答ができるチャレンジがあります。

レベル(チャレンジの難易度)

  • Basic : 初級
  • Intermediate : 中級
  • Hard : 上級

と区分けがされています。
が、IntermediateをやってもみるとめちゃくちゃHardな場合もありました。
問題の中でマーケットプレイスのデータなどを使っているチャレンジがあったのですが、それがNot Foundや別の似たデータに置き換わっていたりして、難易度が跳ね上がっているものなど

Hardでも比較的簡単なものもありました。

なので、あくまで参考にする程度がいいかなと思います。

参加方法

Frosty Fridayへ参加するには、下記の方法が推奨です。

  1. FrostyFriday.orgへ登録
  2. チャレンジのインデックスへ移動
  3. チャレンジを選んで、内容を見る(Week1-Basic External Stages


※こちらは、ブラウザの翻訳機能を使って日本語表示にしています。

  1. 回答を作成
  2. 自分の作成したコードをご自身のGithubに投稿し、一般公開(私のWeek1
  3. チャレンジのコメント欄に公開URLを投稿する

できれば、このように回答を公開したらいいのですが、まぁ無理にとは言いません(笑
個人でやるでも全然いいです!
手を動かして、やってみることが重要ですので!

なので、トライアルアカウント を作って参加することをおすすめします。30日間の無料トライアルです。
※Snowflakeは同じメールアドレスで何度もトライアルアカウントを作れるという太っ腹(?)なので、Expireしたら次のトライアルアカウントを作りましょう(作ってもいいとSnowflakeの中の人がいってました!!今もいいはず!!)

回答ってあるの?

Frosty Fridayには回答は公式にはありません!!!
ただ、世界のSnowflake使いの方々がコメント欄に回答Githubを掲載しています。
いろいろな解法があります。
実務に沿っているであろう書き方、ノウハウがあったりします。
これらの解法を読んでみるだけでも、めちゃくちゃ勉強になります!!!!!

Frosty Fridayが生まれたきっかけ

現在は、3人の方が運営をなさっています。

Christopher Marlandsさんが、なにかSnowflakeコミュニティに貢献できるか・・と考えていたときに、Tableauで行われているMakeover MondayやAlteryxでのWeekly Challengeが、それぞれを学ぶうえでとても役に立ったそうです。
そこで、Snowflakeでも同様のことができないか?というインスパイアがあり、Frosty Fridayの最初のチャレンジが2022年7月に投稿されました。

たしかSnowflake Summit 2023で、ユーザコミュニティで表彰されていたのをきっかけで、Frosty Fridayを知りました。

いつかやりたい・・・・と思っていたのですが、一人ではなかなか動き出せずに居たところ、Data Saber仲間で数年来の親交あるtomoさん(現在Snowflakeの中の人)と意気投合し、Frosty Friday のYoutubeLive番組を始めることになりました。

はじめたYoutubeLive番組については、別の記事でご紹介できればと思っています。

Frosty Fridayを8ヶ月やって得たもの

Frosty Fridayのチャレンジは、BasicからHardまで様々な機能を扱います。

Week1〜Week5をみても、

  • 外部ステージ
  • Stream
  • Metadata Query
  • JSON
  • UDFs

とSnowflakeではとても良く使い基本的な機能ばかりでした。

業務でSnowflakeを使っており、いろいろな機能を使ってましたが、その機能についてのオプションをすべて網羅するまではやっていませんでした。必要な機能の実現させることが主眼でしたので。

Snowflakeの様々な機能が改めて学べた

というのはとても良かったです。

  • 外部Stage、Stream、JSON、Stored Procedure
  • SnowSQLやSnowflake CLI
  • Streamlit in SnowflakeやSnowpark(ここは私はフロントに近いのはあまりやらないので苦手)

普段使わない機能に触れられる

PivotingやGeograpy(地理空間系)というのは、正直業務で使うことは殆どありません。ですが、チャレンジであるのでなんとかやってみよう!ということで、知ってはいる→実際触ってみた となって理解度が高くなります

新しい機能が知れる

これは、上の「普段使わない機能の触れられる」と一緒かもしれません。
Snowflakeのいいところは、日進月歩で様々な機能が出てくることと思っています。
最近ではAI系の機能がどんどん出てきます。
Cortex Search」といったAI系もあれば、
User Types」といったセキュリティ的な話題もあります。

昔のチャレンジをしつつ、最新のチャレンジも出来れば、新しい機能についても学ぶことが出来ていきます。

業務でも使える「型」が洗練されてくる

このように基本的なチャレンジでも、オプションなどを詳しく知ることができ、普段の業務で使える「型」テンプレートが出来てきました。

  • Stageを作る場合に、デフォルトではないけど入れておいたほうがいいオプション
  • JSONを読み込む際に使うオプション
  • データを取り込むときのメタデータ取込方法

といった型です。

また、機能が新たに出てくると、その「型」を最新機能で作り変えていくことも出来ました。

例えば、Slack通知の方法など。こちらは以前に記事にしたこともありました。

こちらは2年ほど前のチャレンジでしたので、Email通知での実現を想定した者のようでした。

チャレンジの解き方

最初はどうすればいいか全くわからないと思います。
実際私も無いから手を付ければいいか分かりませんでした。

なので以下の方法を推奨します。

先達がやった解法をそのまま実行する!
写経です!

受験勉強と一緒ですね、良い解法があるのですから、それを真似っ子すればいいんです!

まず真似てみる。
いくつかやってると、自分なりにアレンジができるようになる。
あれ?これ最近でた機能で実現できるんでね??
なんなら、dbtでやってみよう!!
あれ、これもしかしたらTerraformとかでもできたりするんじゃない??

一つの問題も複数の実現方法で解いてみることをオススメします!

まとめ

Summit2024に参加した方が、Frosty Fridayの運営の Christopher Marlandさんに会ったそうです。
日本からのアクセスが増えていることをとても喜んでいた!とお聞きしました。

業務ではさわれないものを探求するテックセラピーになります!
日本からの参加者がもっと増えるといいな!!
一緒にチャレンジして、Snowflakeスキルを磨いていきましょうね!!

ちゅらデータ株式会社

Discussion