見出し画像

#3 Snowflakeのハンズオントレーニングを受けてみた(Badge 3: Sharing, Marketplace, & Exchanges Workshop)

Snowflakeが提供する無料のハンズオンの第三弾、”Sharing, Marketplace, & Exchanges Workshop” を受講しました!このnoteでは、第一弾と第二弾に引き続き、受講レビューをしたいと思います。

ハマった点や所要時間についてもまとめていますので、これから受けようと思ってる方の参考になれば幸いです。


過去記事はこちらから👇

第一弾:Data Warehousing Workshop

第二弾:Data Application Builders Workshop

今回のコースを修了するとこんなバッジがもらえます!

LinkedInの資格部分にも投稿できます。

コースの内容

今回のコースは、Snowflakeの数あるユニークな技術の中でも、特に重要な「データ共有」にフォーカスした内容になっています。Snowflakeの共有技術には、大きく分けて以下の3つの種類があり、それぞれの具体的なユースケースに基づいてハンズオンを行っていきます。

  1. Direct Sharing

  2. Data Marketplace

  3. Private Exchanges

ところで、「データ共有」はなぜそんなに重要なのでしょうか。

分かりやすいのは気象データです。せっかくなのでnoteで素敵な記事をかいてらっしゃる方の例を引用させていただきたいと思います。外部から取得した気象データと、自社で持ち合わせている「物流」「交通」「建設」「小売」「観光」といったデータを掛け合わせることで、より正確な需要予測ができたり、在庫の適正化を行うことができます。

気象データであれば、無料で公開されているデータもありますが、もっと希少性の高いデータを持っている企業であれば、それを必要としている別の企業に販売することができますし、購入した企業はそのデータを活用して自社のビジネスに活かすことができます。

このように、他社・他者と「データの共有ができること」は、ビジネスの文脈において、「利益創出」のチャンスとなります。そのため、Snowflakeとしてはこの3つの「データの共有機能」をエンドユーザーに広く知ってもらうことで、各企業の「利益創出」に役立ててもらい、強いてはSnowflakeの更なる活用と利益創出を目指したいという意気込みが感じられます。

補足💡
2023年2月現在、最新の公式ドキュメントを読むと、データ共有の方法の一つに「リスト」というのが加わっています。
https://docs.snowflake.com/ja/user-guide/data-sharing-product-offerings

このハンズオンが作成されたより後にリリースされた機能のようです。今回のハンズオンでは出てこなかったので本記事では言及していませんが、別途勉強したいと思います。


あると便利な前提知識

このコースの後半では自力でテーブルを結合したり、ビューを作成したり、行数をカウントしたり、GROUP BY、ORDER BYを使ったりする作業があります。難しいものではないですが、少しでもSQLの基礎があるとスムーズです。

また、前述の通り、このコースは「データ共有が各企業にとってどう役に立つか」「Snowflakeのデータ共有技術がなぜ優れているのか」を学ぶ内容になっています。

そのため、技術面だけではなく、ビジネス面のユースケースやメリットなどについても想像を膨らませられると取り組みやすいと思います。


学習時間の目安


前回までのコースと同様、約8時間かかりました。


ハマった点

アカウントとユーザー管理がややこしい

レッスン5にて、Snowflakeの「データ共有」の1つ目である Direct Sharing の実践編ということで、トライアルアカウントで準備したデータベースを、顧客(になりきった自分自身)に共有するため、今まで使ってきたトライアルアカウントとは別に、"管理アカウント"を作成します。

また、"管理アカウント"の中のユーザーとして、

  • 管理アカウントを管理している自分自身

  • 管理アカウントでDirect Sharingを利用している顧客

の2ユーザーを作成することになります。

このように、扱っているアカウントとユーザーの数が増え、それと同時にユーザーネームとパスワードとアカウントロケーターも増えるので、とてもややこしいです。随時メモ帳などにメモをして、忘れないようにする必要があります。

ストアドプロシージャの実行は正確に

レッスン11にて、ストアドプロシージャを作成、実行計画を設定するのですが、その直後にストアドプロシージャを停止するコードを実行するよう求められます。

そのストアドプロシージャの内容は、"1分ごとに特定のデータを(最初は)空のテーブルに書き込む"、という内容なのですが、最低でも1分待ってからストアドプロシージャを停止させないと、一度も実行しないまま停止してしまうため、テーブルが空のままになってしまいます。

その状態で、次のステップであるDORAを実行すると、指定されたテーブル内に行が含まれていないためエラーになってしまいました。

そのため、再度ストアドプロシージャの実行に戻り、1分以上待ってから停止させることで、テーブルにDORAのチェックに必要なデータが投入されました。

⚠ ちなみにストアドプロシージャの停止を忘れると、毎分裏で自動実行が走ってしまうので、一瞬でトライアル容量のクレジットを使い切ってしまうことになります😭 停止はお忘れなく!!


学んだこと

またまた備忘録ではありますが、今回のハンズオンで学んだことは以下の通りです。今回の範囲はSnowPro Core試験に出てきそうなので、しっかり覚えたいと思います。

  • Snowflakeの共有には3つの種類があり、それぞれの特徴は以下の通り。※学んだ内容をもとに自分でまとめたものなので、過不足・誤りがあればご指摘ください🙏

    • Direct Sharing

      • 誰でも簡単に使える最もスタンダードな共有方法。

      • 人から共有されたデータは、別の人に共有できない。(JOINで部分的に共有データが含まれている場合も含む。セキュリティの観点からは納得の仕様。)

      • データのプロバイダーとコンシューマーが同じリージョン内でしか利用できない。コンシューマーが別のリージョンに存在する場合は、コンシューマーがそのリージョンにアカウントを作り直す必要がある。

      • ビューはそのままでは共有できない。セキュアなビューに変換することで共有することができる。

    • Data Marketplace

      • データの百貨店。Data Marketplaceには二種類あり、「無料」と「パーソナライズド」に分けられる。

      • 「無料」はどのユーザーでもアクセス、利用ができる。

      • 「パーソナライズド」は申し込みをしないと利用できない。有料の場合が多い。

      • どちらの場合でも、エンドユーザーはデータをローカル環境にコピーせずにすぐに使うことができるため、新鮮で常に更新されたデータをスピーディにインサイトに反映することが可能。

      • 公式製品ページはこちら→https://www.snowflake.com/ja/data-cloud/marketplace/

    • Data Exchange

      • Data Marketplaceと似てるけど、さらに排他的で特別感が高まる共有方法。

      • Exchangeという名の通り、企業Aが企業Bにデータを一方的に提供するのではなく、企業Bが企業Aに元データを送り、企業Aがその元データを使ってゴニョゴニョし、完成データを企業Bに提供できるという、双方向な関係。これらのプロセスをData Exchangeという機能に則ってセキュアに実行できる仕組み。

      • どのアカウントとData Exchangeを利用するか事前に構成する必要がある。

  • Direct Sharing と通常のテーブルの比較

    • Snowflakeでアカウントを作成すると、すでに "Direct Share"の部分に"SNOWFLAKE"と"SNOWFLAKE_SAMPLE_DATA" の2つのデータベースが準備されている。

    • "SNOWFLAKE"のデータベースはAccount Usageというシェア名がついている。

    • "SNOWFLAKE_SAMPLE_DATA" は Snowflake内で使えるサンプルデータが入っている。(名前そのまんま)

Account Usageシェアは、データベースの削除、作成、名前変更、コメントの追加が不可。
シェアデータベースの特権(権限?)設定はプリセットであるIMPORTEDしか適用できない。普通のデータベースであれば柔軟に権限設定が可能。逆に、IMPORTEDは利用不可。
データベース内の操作として、普通のデータベースであればスキーマ作成、テーブル変更、ステージ削除、シーケンス作成、ビューの変更が可能だが、シェアされたデータベースは全て不可。
テーブルの操作として、シェアデータベースにおいてはクエリのためのSQLはほとんどOKだが、インサートやアップデート、マージは全て不可。
  • フォーマットが存在するのは、データベース+スキーマの内部である。

    • そのため、別のデータベースやスキーマから呼び出す時には完全修飾での記載が必要。(Badge1のトレーニングで習ったのにもう忘れている、アホな私)

  • 各データベースのINFORMATION_SCHEMA.TABLES テーブルを使えば、オブジェクトの数や特定テーブル内の行数を簡単に数えられる。以下はSQLの例。

select count(*) as OBJECTS_FOUND
from <database name>.INFORMATION_SCHEMA.TABLES 
where table_schema=<schema name> 
and table_name= <table name>;
select row_count
from <database name>.INFORMATION_SCHEMA.TABLES 
where table_schema=<schema name> 
and table_name= <table name>;
  • ビューを作れば、複雑なフィルター条件でデータを抽出したいときに使いまわせるので便利。



以上がハンズオン第三弾の体験談でした!

Snowflakeが提供するハンズオンは無料で取り組めて、LinkedInの資格部分にも載せることができて、技術の勉強にもなるので、本当に一石二鳥です。

データの世界に初めて飛び込みたいと思っている方でも楽しんで取り組めるような工夫が随所に施されていて、本当に良いトレーニングです。Snowflake に興味のある方はぜひチャレンジしてみてくださいね!!


最後までお読みいただきありがとうございました!
スキ・フォローよろしくお願いします☺

この記事が気に入ったらサポートをしてみませんか?