Snowflake初心者向け教育の実践比較②

こんにちは。

オンプレ業務SEからデータエンジニアへのキャリアチェンジ目指して奮闘中のアラフォーです。
前回に引き続き、Snowflakeの初心者向け教育についてご紹介します。
Snowflake University が提供する Hands-On Badgesコースを一通りやってみました！

＜（参考）前回の記事はこちら＞

https://qiita.com/y-fujiwara_111/items/3979335025bbe0b343be

# 取り組んだ教材（すべて無料）
取り組んだ順に並べます。

1. [Snowflake チュートリアル: 「Snowflake入門-ゼロからはじめるSnowflake」](https://quickstarts.snowflake.com/guide/getting_started_with_snowflake/index.html#0)
1. [Snowflake University: 「Hands On シリーズ (Badge 2: Data Application Builders Workshop )」](https://learn.snowflake.com/en/courses/uni-ess-dabw/)
1. [Snowflake University: 「Hands On シリーズ (Badge 3: Sharing, Marketplace, & Exchanges Workshop )」](https://learn.snowflake.com/en/courses/uni-ess-smew/)
1. [Snowflake University: 「Hands On シリーズ (Badge 4: Data Lake Workshop )」](https://learn.snowflake.com/en/courses/uni-ess-dlkw/)
1. [Snowflake University: 「Hands On シリーズ (Badge 5: Data Engineering Workshop )」](https://learn.snowflake.com/en/courses/uni-ess-dngw/)
※「Hands On シリーズ (Badge1)」は前回の記事でご紹介しています。

# 最初にお伝えしたいこと
まず初めに、上記すべてのハンズオンを１つのトライアルアカウントで済ませるのは難しいです！！決して無理ではないですが、初心者にはミスもあるし、当然色々試してみたい気持ちもあります。そんな状況下、私はBadge5の最後のLessonで期限切れに陥るという事態が発生しました。。各コースは１つのアカウント内で完了しないとバッジがもらえませんので、新しいアカウントを作成し再度やり直すはめになりました。ちなみに、期限切れになった途端に以下の画面が表示され、クレジットカード情報を入力しない限り、一切の操作ができなくなります。また、過去のワークシートにもアクセスできなくなりますので、覚えておきたいコマンドはしっかり控えてしておきましょう。

おすすめは、「チュートリアル」用と「Hands On シリーズ」用で、２つのアカウントを用意することです。ちなみに「Hands On」の方は、Badge3でリージョンの指定(カナダ)があるのでご注意ください。クラウドプロバイダーはAWS指定です。

:::note info
無料トライアルアカウント
　30日間、400ドル相当の利用が可能。
　※ウエアハウスとストレージの使用に費用が発生します。
　　　ウエアハウス：コンピューティング機能（クエリ発行時に使用）。
　　　　　　　　　　性能が大きいものを使用するほど費用が高額になります。
　　　ストレージ　：データそのもの。
　　　　　　　　　　削除してもバックアップが最低7日間残り、その間も費用が発生。
:::

＜トライアルアカウント期限切れ画面＞
これが表示されたら、もう何もできない。。。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3553040/92ed8600-f126-ba9f-21b0-6163da7e0e7c.png "トライアルアカウント期限切れ画面")

# 各教材の特徴と感想

**1. Snowflake チュートリアル: 
　「Snowflake入門-ゼロからはじめるSnowflake」**

英語の教材ですが、Chromeで日本語に変換すればストレスなく学習できます。時々おかしい日本語に出くわしたら英語に戻して読みました。中身としては、Snowflakeの主要な特徴を半日程度でざっくり体感できるハンズオンになっています。非常に大きいサイズのデータ(確か6500万件くらい)をロードし、小さいウエアハウスと大きいウエアハウスの性能比較をしたりします。また、個人的には結構重要と感じているタイムトラベル（バックアップに戻す作業）について、唯一体験できるラボでした。コマンド実行がメインで、せっかくのGUIはほぼ使用しません。コマンドやSQLの細かい説明もあまりないので、そこらへんの知識に乏しい方には少し難しいかもしれません。

＜対象者＞　　データベースやSQLについての知識があり、Snowflakeをざっくり知りたい方
＜所要時間＞　5時間程度

**2. Snowflake University: 
　「Hands On シリーズ (Badge 2: Data Application Builders Workshop )」**

前回のブログでも紹介しましたが、「Hands On シリーズ」は英語ベースですが、英語ネイティブ以外の受講者に対しても理解があり、動画はテキスト字幕付きだし、埋め込みスライドは（ほぼ）ないので、ほぼ全教材翻訳にかけることが可能です。しかし、所々翻訳が分かりづらい時があるので、そういう場合は英語で読む必要があります。

Badge2としては、大きく以下の3点が学べます。

+ GitHub上で、python(Streamlit)のコードを書いて簡単にWebアプリを構築し、Snowflakeのデータを表示したり、アプリで入力されたデータをSnowflakeに挿入したりする。
+ RiveryというETLツールを使用して、Googleフォームから入力されたデータやAPIで取得したデータをSnowflakeにロードする。
+ 内部ステージを作成し、ローカルPCのファイルをCLIにてアップロードする。

:::note info
様々なツールを使用するため、各々アカウントを発行することになります。それに伴い、セキュリティのため、このラボ専用に新規Gmailアカウントを発行するよう推奨されます。
:::

Streamlitの使用はほぼ初めてでしたが、デプロイ中の画面がめっちゃかわいい♡♡　私の若い時にはこんな外観のツールなかった。。女性エンジニアの増加に期待です！Riveryは少し難しかったですが、ETLツールってこういうものなのか～と体感できてよかったです。ラボの中で順を追って丁寧に説明してくれるので、多少難しくてもつまづくことはないです。CLIの使い方も基礎の基礎から教えてくれます。

＜対象者＞　　WebアプリやGoogleフォームのデータをSnowflakeにロードしてみたい方
　　　　　　　同コースBadge1の完了者
　　　　　　　※基本的にBadge1から順番に受講することが推奨されています。
＜所要時間＞　16時間程度

**3. Snowflake University: 
　「Hands On シリーズ (Badge 3: Sharing, Marketplace, & Exchanges Workshop )」**

Badge3では、上述のとおりリージョンまで指定されますので注意してください。以下の内容でトライアルアカウントをセットアップしましょう。

＜トライアルアカウントセットアップ内容＞
+ EDITION: Enterprise
+ CLOUD: AWS
+ REGION: Canada (Central)

内容としては、以下3点が学べます。
+ Direct Sharing
データ共有したいアカウントを指定して共有する方法。Snowflakeのアカウントを持っていない人に対しても、Reader Accountというサブアカウント的なものを作成することで共有が可能。
+ the Data Marketplace
様々な組織から様々なデータが提供されている。無料版が気に入ったら有料版を検討するのが基本。
+ Exchanges
Marketplaceのプライベート版。関係者間でデータをやりとりできる。
+ （おまけ）ストアドプロシージャー＆タスクの作成

Direct Sharing では、掲示板を通じて他の受講者と実際にデータ共有します。どこの国の人かも分からない人からデータ共有された時はちょっと感動的でした！当初Snowflakeユーザではなかったお客さんに対して、まずはサブアカウントを提供して使ってもらって、最終的にはフルアカウントになる～というストーリー仕立てになっており、各々のアカウントの特徴や３種類のデータ共有の利用場面のイメージが湧きました。

＜対象者＞　　Snowflakeデータ共有の基本的な機能を知りたい方
　　　　　　　同コースBadge2の完了者　
　　　　　　　※基本的にBadge1から順番に受講することが推奨されています。
＜所要時間＞　16時間程度

**4. Snowflake University: 
　「Hands On シリーズ (Badge 4: Data Lake Workshop )」**

Badge4では以下の内容が学べます。
+ 外部ステージ(Amazon S3)に格納されている非構造化データ（画像データ等）の扱い方
+ 外部ステージ(Amazon S3)に格納されている半構造化データ（JSON等）をロードせずに加工する。
+ 地図データとSnowflakeの地理空間関数
+ Materialized View（マテビュー） と External Tale（外部テーブル）　
　非正規化（主に非ロード）のデータを、正規化っぽく見せるツール
　ステージ上にマテビューは直接おけず、必ず間に外部テーブルを挟む。
+ Iceberg Table ・・・これはcoming soon

このコースで一番興味深かったのが地図データ！[WKT Playground](https://clydedacruz.github.io/openstreetmap-wkt-playground/)にて、地図上に点・線・範囲を描写するのですが、とても面白かったです。地図データってこういう風にできているんだな～と感動。
ただ、ここまで来ると結構難易度が上がってきます。マテビューと外部テーブルの部分はなんとなく分かるけど、正直若干フワッとしてます。Iceberg Tableはデモ動画がありましたが、動画内に英語字幕があるだけだったので（テキスト字幕はなし）、少しずつ止めながらゆっくり見ました。どうやら、S3上のPARQUETフォーマットデータをロードせずにダイレクトに更新できる機能だそうで、すごいやつです。

＜対象者＞　　外部ステージ上の半構造化データ、非構造化データを扱いたい方
　　　　　　　地図データに興味がある方
　　　　　　　同コースBadge3の完了者
　　　　　　　※基本的にBadge1から順番に受講することが推奨されています。
＜所要時間＞　17時間程度

**5. Snowflake University: 
　「Hands On シリーズ (Badge 5: Data Engineering Workshop )」**

いよいよ来ました。Badge5のデータエンジニアリングワークショップ！データエンジニアを目指す者として、楽しみにしておりました。このコースでは以下の内容が学べます。

+ S3に定期的に置かれるログデータを、Snowpipeを使用してSnowflakeにロードする。
+ IPアドレスからタイムゾーンを取得し、タイムスタンプをNTZ(No Time Zone)からLTZ(Local Time Zone)に変換する。
+ 上記処理を、サーバーレスコンピューティングタスクで行う。
+ 上記処理を、Streamを使用して自動化する。

とても充実したコースでした。まずタイムゾーンについて今までなんとなくしか意識してこなかったので、しっかり基礎から学べてよかったです。肝心なデータエンジニアリングの内容も、初心者の主人公になりきり、ストーリー仕立てで順を追って進めていくので、つまづくことはないです。が、同じようなことを繰り返して完成させていくので、途中で頭が混乱しがちです。特に混乱を招くのが、Marketplaceから取得する、IPアドレスをもとにタイムゾーンを特定できる無料データ！それが曲者で、全IPアドレスを網羅していないため、内部結合だとデータが欠落してしまうんです。（でもコース内ではJOINのみで書かれている。）最後のLessonでトライアルアカウントの期限が切れたため、最初からやり直しましたが、外部結合にすることで件数が合い、処理の動きを確認できるようになりました！ただし、Streamによる更新は一時件数が合わなくて謎でした（最終的には合いましたが）。コース内でも、Streamは複雑ですが、最も単純なものを紹介すると記載されていたので、実際は細かい設定が必要なのかもしれません。

＜対象者＞　　Snowflakeを使用したデータエンジニアリング作業について学習したい方
　　　　　　　同コースBadge4の完了者
　　　　　　　※基本的にBadge1から順番に受講することが推奨されています。
＜所要時間＞　20時間程度　※やり直し時間含む

# 振り返り
ここまでSnowflakeの教育を色々試してみましたが、Snowflake University の Hands On シリーズはとてもオススメです！実生活の中でのストーリー仕立てになっていて馴染みやすいし、キャラクターもかわいいし、時々ユーモアもあります。初めてSnowflakeにさわるという方には、以下の順序で教育に取り組むのが個人的にはオススメです。

1. [Udemy: 「ゼロから始める「Snowflake」最速入門コース」](https://www.udemy.com/join/login-popup/?next=/course/snowflake-basic/learn/lecture/28722584%3Fstart%3D0#overview)
1. [Snowflake University: 「Hands On シリーズ (Badge 1: Data Warehousing Workshop )」](https://learn.snowflake.com/en/courses/uni-essdww101/)
1. [Snowflake University: 「Hands On シリーズ (Badge 2: Data Application Builders Workshop )」](https://learn.snowflake.com/en/courses/uni-ess-dabw/)
1. [Snowflake University: 「Hands On シリーズ (Badge 3: Sharing, Marketplace, & Exchanges Workshop )」](https://learn.snowflake.com/en/courses/uni-ess-smew/)
1. [Snowflake University: 「Hands On シリーズ (Badge 4: Data Lake Workshop )」](https://learn.snowflake.com/en/courses/uni-ess-dlkw/)
1. [Snowflake University: 「Hands On シリーズ (Badge 5: Data Engineering Workshop )」](https://learn.snowflake.com/en/courses/uni-ess-dngw/)
1. [Snowflake チュートリアル: 「Snowflake入門-ゼロからはじめるSnowflake」](https://quickstarts.snowflake.com/guide/getting_started_with_snowflake/index.html#0)

※時間のない方には、「1」と「7」がオススメ

# 最後に
ここまでお読みいただきありがとうございました。
Hands On シリーズを完了するとバッチがもらえます。
僭越ながら、いただいたバッチをここに並べさせていただきます。

<img width="130" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3553040/6a20c592-96e0-57af-d0ea-3c86fa899287.png">
<img width="130" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3553040/59d62a29-3af2-f775-41af-e0d879e0f5b1.png">
<img width="130" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3553040/8f4aa172-af2f-ca43-6205-228a5f7a3064.png">
<img width="130" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3553040/20fc930a-d51a-b18d-2b83-113eff9af2dd.png">
<img width="130" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3553040/8458e166-ac78-9fba-b598-6bc3633ac68b.png">

やったぁ～♡♡♡

次は、SnowPro取得に向けて頑張るぞー