AI機能を使って、SQLなしでSnowflakeのデータを分析する方法
こんにちは!
本日は、近年データ分析基盤ツールとして急成長を遂げているSnowflakeについて取り上げます。
Snowflakeでできること、できないこと。Morphとの連携を行うことで実現できるデータの民主化についてお話しします。
Morphの概要についてはこちらの記事をご覧ください。
https://note.com/morph_db/n/n63286393c2c2
はじめに Snowflakeとは
Snowflakeとはクラウドデータプラットフォームで、データの統合、分析、共有を容易にするためのツールです。
データ分析基盤構築において、Data Lake → Data ware house → Data mart → BI の流れでのパイプライン構築が必要になりますが、Snowflakeでは Data LakeからData mart までをカバーすることができます。
競合ツールは、Google Big query、Amazon Red Shiftなどのデータウェアハウスです。
これらのツールと比較して、Snowflakeの優れている主な点としては以下が挙げられます。
処理パフォーマンス
Snowflakeの特徴として、データを保持するストレージとクエリを実行する仮想のウェアハウスが分離された設計になっています。これにより、各ウェアハウスに対して並列で処理を実行できるため、処理パフォーマンスが高いです。
コスト体系
データのストレージ量、ウェアハウスのサイズや処理時間によって料金が変わる従量課金になっています。あらかじめ設定するのではなく、処理の重さによって自動的に最適なウェアハウスサイズにしてくれるため、不要なコストの発生を防ぐことができます。
マーケットプレイス
Snowflake上でサードパーティが提供するデータセットを購入し、Snowflakeに連携することができます。自社で保有しているデータと、サードパーティが提供するデータを組み合わせた分析をシームレスに実現することができます。
マルチクラウド対応
AWS,Azure,GCPなど、社内で複数のクラウド環境が存在する場合、Snowflakeがハブとなり、データの一元管理が可能です。
また、snowflakeは2022年にwebアプリケーション開発のオープンソースを提供するStreamlit社を買収し、Streamlit in Snowflakeという機能を開発しました。
これにより、データ分析関連の簡単なアプリケーションを作成できるようになり、デベロッパーからの支持をより一層厚くしました。
Snowflake活用のハードル
データ分析基盤として、非常に優秀なSnowflakeですが、ビジネスチームが活用するにはいくつか課題があります。
データ連携設定が複雑
Snowflakeでの設定は基本的にコマンドラインを使って行います。
この時点で馴染みのない方にとっては大きなハードルとなります。
また、コマンドラインを使えたとしてもデータパイプラインの構築経験がないと、どのような設定をすればいいかが分かりにくいです。
Snowflake自体がデータサイエンティストやデータベースエンジニアが使うことを想定されているため、当然ではあるのですが、ビジネスチームが気軽に触ることができるツールではないということがお分かりいただけるかと思います。
データの操作はSQL
Snowflakeでデータパイプラインを構築できたとしても、データマートからのデータ抽出はSQLベースでの操作になります。
社内全員がデータを見に行く場所として使うことは、なかなかハードルが高いと言えます。
Snowflakeのデータを民主化する
Morphを使って、データの専門家にとっては非常にパワフルなツールであるSnowflake内のデータを、すべての社員に解放することができます。
Snowflakeで管理しているデータをMorphに連携することによって、
複数テーブルに跨ったデータ集計
データの可視化・ダッシュボード化
データの権限管理
を専門知識なしで実現することができます。
これにより、一部のメンバーしかアクセスできなかったデータへ全社員がアクセスし、必要なデータを必要な時に活用できる体制を構築することができます。
Snowflakeは、上流のデータ処理と専門家のためのデータプラットフォームとして。Morphはビジネスチーム向けのデータ共有・集計場所として使い分けることが可能になります。
Snowflakeの連携方法
実際にSnowflakeとMorphの連携方法を見ていきましょう。
連携方法は簡単です!
Morphの設定前に、Snowflake側で準備をする必要があります。
MorphとSnowflakeの連携をするためには、事前準備として以下の3つのデータをSnowflake上から取得する必要があります。
Server
Client ID
Client Secret
ここから、これらの値を取得するための手順を説明します。
まず、Snowflake上でセキュリティ統合を作成します。DESCコマンドで情報を参照することでServerとClientIDに関する情報を取得することができます。
Server = OAUTH_AUTHORIZATION_ENDPOINTで返却される https://<account_name>.ap-northeast-1.aws.snowflakecomputing.com/oauth/authorize のような値から、 https://<account_name>.ap-northeast-1.aws.snowflakecomputing.com に該当する部分を取り出してください。
※ 接続しているクラウドサービスによって、ap-northeast-1.awsの部分は変わる可能性がありますので、お気をつけください。
以下のコマンドを実行し、Client ID = OAUTH_CLIENT_IDの値を取得してください。
CREATE or replace SECURITY INTEGRATION [INTEGRATION_NAME]
TYPE = OAUTH
ENABLED = TRUE
OAUTH_CLIENT = CUSTOM
OAUTH_CLIENT_TYPE = 'CONFIDENTIAL'
OAUTH_REDIRECT_URI = 'https://app.morphdb.io'
OAUTH_ISSUE_REFRESH_TOKENS = TRUE
BLOCKED_ROLES_LIST = ()
OAUTH_REFRESH_TOKEN_VALIDITY = 7776000;
DESC SECURITY INTEGRATION [INTEGRATION_NAME];
次に以下の図にあるように認可情報を確認することによって、Client Secretを取得することができます。
以下のコマンドを実行し、Client Secret を取得してください。
select system$show_oauth_client_secrets('[INTEGRATION_NAME]');
上記コマンドを実行することで、以下のようなJSONを取得することができますので、値を取得してください。
Client Secret = OAUTH_CLIENT_SECRETの値
{
"OAUTH_CLIENT_SECRET_2": "",
"OAUTH_CLIENT_SECRET": "",
"OAUTH_CLIENT_ID": ""
}
お疲れ様でした!
これでSnowflakeでの下準備は完了です。
続いて、Morphでの連携設定を行います。
Morphのimport from other services から、Snowflakeを選択し、先ほど取得した認証情報を入力します。
その後、Sign in Snowflakeをクリックし、Snowflakeにサインインをします。
Snowflake から取得したいテーブルなど、各種設定値を入力ください。
最後に任意のテーブル名と取り込み設定をして、インポート完了です!
Snowflakeからデータをインポートすることができました。
インポートしてしまえばこっちのものです!
Morphを使って、AIでデータの集計・可視化をしてみましょう!
SQLやPythonを記述する必要はありません。
より具体的な集計・可視化事例は下記の記事をご覧ください。
Morphを試してみませんか
今回はSnowflakeとの連携についてお話しさせていただきました。
MorphはSnowflake以外にもSalesforce,StripeなどSaaSデータやPostgreSQLなどのデータベースとの連携が可能です。
様々なデータソースを統合して、最高に自由な分析体験をぜひお試しください。
無料サインアップはこちらから。