Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Snowflake女子会(20241213) LT発表スライド

Satoshi Ganeko
December 13, 2024
470

Snowflake女子会(20241213) LT発表スライド

Snowflake女子会(20241213)
でLT発表させて頂いた際のスライドです。

題名は

【初心者による調査報告!】SQL、Python、Snowflake初心者が、Streamlit in Snowflake(SIS)をはじめるために、おさえておくと良さそうなこと

最後、実際にStreamlit in Snowflake(SIS)画面を使った部分は、スクショを載せてあります。

Satoshi Ganeko

December 13, 2024
Tweet

Transcript

  1. おさえておくとスムーズに Streamlitを利用できそうなこと。 完璧でなく、なんとなくの理解 で大丈夫。 まずは、知らないで大丈夫。 作るアプリの内容によっては 必要になりますが、ニーズが あった場合に、調べて理解して いくと良さそう。 このスライド内での色分け

    (すべて、私の主観です。) 当面、知らないでよさそう。 商業本としても発刊されています!山口 歩夢さん (著) また、大変多くのサイトを参考にさせて頂きました。 お礼申しあげます。(下記、抜粋) Streamlit in Snowflakeでパッケージを導入してみよう Snowflakeの料金をなるべくわかりやすく説明するチャレンジ Streamlit in Snowflake (SiS) で自然言語によるデータ分析をしてみる Streamlit in Snowflakeのちょっとここがイケていない Pandasのよく使われる処理をSnowparkにマッピングしてみた PandasとSnowpark for pythonの対応表 参考にさせて頂いた書籍、Webサイト Streamlit入門 Python で学ぶデータ可視化& アプリ開発ガイド (技術書店)
  2. SQLについて 一般的SQL(クエリ) SELECT FROM JOIN WHERE GROUP BY HAVING ORDER

    BY LIMIT データ定義SQL DDL(Data Definition Language) CREATE, ALTER, DROP, USE データ操作だけでなく、 Snowpipe、Stream, Task, Time TravelといったSnowflakeの機 能の操作にも使われます。 Snowflake特有SQL AT | BEFORE CHANGES Cortex LLM function (SQL) SnowflakeのLLM(Cortex)を利用する SQL関数 COMPLETE, SENTIMENT, SUMMARIZE, TRANSLATEなど SQL演算子(クエリ) + - * / % AND , NOT , OR UNION, IN データ操作SQL DML(Data Manipulation Language) INSERT、UPDATE , DELETE COPY INTO、(PUT、GET) Snowflake全体として、Snowflake内での操作、設定などを全てSQLベースで出来るように整ってい る。SQLに慣れ親しむSnowflakeエンジニアには、とても過ごし易い環境になっていると思われます。 初心者が乗り込むと「それってSQLなの?知らないな~覚えるのきりがない。」としり込みするか もしれません。でも、Streamlit利用開始に知っておくべきSQLは、ごく一部だと思います。 SELECT SNOWFLAKE.CORTEX.COMPLETE(… などと利用 なお、達人のSQLは ASによる別名、 サブクエリなどが駆使されている
  3. Pythonについて Python基本 リスト 辞書 for文 if文 def 宣言 from import

    as (ライブラリ導入方法) 基本ライブラリ Pandas Numpy Snowflakeライブラリ (Snowflake Python API ライブラリ) Cortexライブラリ ( PythonでのCortex関数) from snowflake.cortex import Complete, Sentiment, Summarize, Translate などとimport 可視化ライブラリ matplotlib.pyplot seaborn plotly express plotly graph object 他 機械学習ライブラリ scipy scikit-learn (sklearn) Streamlit ライブラリ アプリ作成開始時に、 自動的に import streamlit as st で導入されている。 レイアウト、UI、グラ フ表示などStreamlit アプリそのもの形作る ライブラリ サンプルでst.で始まる もの見たらこれ データ操作や確認で利用する。 Web検索/AIに聞くで、調べな がら使えればオッケー! Streamlitライブラリのみでも 可視化は出来るが、可視化ラ イブラリを利用すると、でき る事が増える。 豊富なAI(機械学習)ライブ ラリの利用もStreamlitの魅力 の一つ。一般的BIツールと違 うところのひとつ。 アプリ作成開始時に、自動的に入るコード from snowflake.snowpark.context import get_active_session session = get_active_session() でsessionが取得されている。一種の、おまじない。 その後、session.table もしくは session.sql で DataFrameを取得する流れ。 *Snowflake内で高速に実行可能なPandas「Modin Pandas」については割愛しています。 Snowpark (Snowpark for python) Sessionの利用 データフレーム操作
  4. Snowflakeライブラリ (Snowflake Python API ライブラリ) Snowpark (Snowpark for python) Sessionの利用

    データフレーム操作 pandas と snowparkの関係 可視化ライブラリ matplotlib.pyplot seaborn plotly express Streamlitライブラリ st.bar_chart st.line_chart ・ ・ st.pyplot st.plotly_chart 基本ライブラリ Pandas Numpy この両者は、DataFrame(データのテーブル)の操作 という観点で、同じようなことが出来る。 Pandasに慣れてる人にとっては、Pandasで行った方が 楽に感じます。ただし、ビッグデータの処理はSnowpark による処理の方が高速です。 可視化ライブラリと Streamlitライブラリの関係 可視化ライブラリのグラフを表示させるコマンドが Streamlit ライブラリ内にある。 DataFrame取得時 に to_pandas() をつけると、 Pandas DataFrameになる *Snowflake内で高速に実行可能なPandas「Modin Pandas」については割愛しています。
  5. Snowflakeのこと Data Databases Schema Table View Project Worksheets Notebooks Streamlit

    SQLやPythonを 実行させるところ Snowsight 実際に利用するデータ テーブルがここに SQLとPythonの2種類 SQL Worksheetで、SQL試したりできる。 SQLとPythonのセルがある。 SQLセルの結果を、Pythonセルに渡せる。 SQLもPythonも利用できる。 SQLはsession.sqlで実行する。
  6. ロールベースのアクセス制御(RBAC): アクセス権限がロールに割り当てられ、ロールは ユーザーに割り当てられる。 が基本。 権限について USER USER USER USER USER

    USER 全てのUSER ログイン時にど れかのロールに なっているはず。 私の場合は 「Streamlit Creator」という カスタムロール です。 ロールによって、出来る事 や見えるものが違う。管理 の人と話が通じるように、 このような体系であること を知っていれば良さそう。
  7. 仮想ウェアハウス サーバーレス 課金体系について コンピューティング ストレージ データ転送 クラウドサービス Streamlit実行は主にこれ 難しい事は気にせず、ポイントをお さえると

    ・小さいWarehouseを使う ・使わないときは、画面閉じる (Streamlit画面を開いていると、実行してい なくても、一定時間はWarehouseが稼働して しまう。Minimum5分に設定可能。Notebook やWorksheetを併用してアプリ作成進めると 良いのかもしれません。詳細調査中) Cortexには別にモデル使用料金もあ る。利用ルールは管理者と相談しま しょう。 Snowflakeには、 いくつの課金体系がある。
  8. コンテンツ サイドバー アプリ全体へ のフィルター マルチページ コントロール (ページ切り替 え)など 常に表示させ ておきたいも

    のなど コンテンツ 入力、フィルター など 入力、フィルター など タイトル、使い方、注意点 汎用的なアプリレイアウト(データ分析可視化アプリの例) ・ ・ コンテンツ
  9. import streamlit as st from snowflake.snowpark.context import get_active_session session =

    get_active_session() def宣言 例 df = session.table(“TABLEAU_SAMPLE”).to_pandas() or df = session.sql(“select * from TABLEAU_SAMPLE” ) .to_pandas() 利用ライブラリ Import タイトル・前提記載など サイドバー によるフィルターなど データ取得 データ分析処理など 可視化など アプリ画面内での フィルターなど 補足 下記、session.tableとsession.sqlを、50倍に膨らませたTableau Sample Superstore Dataで比較検証した。(キャッシュを無効にして検証) ① df=session.table(“X50_SAMPLE”).to_pandas().head(1) ② df=session.sql(“SELECT * FROM X50_SAMPLE LIMIT 1”) 結果、②の方がクエリにかかる時間が短かった。 一般的Codeの流れ(例) to_pandas()は、DataFrameをpandasで扱う場合につける
  10. SQL SQL (DDL、 DML) CREATE, INSERT他 Cortex SQL Python 基本

    Snowp ark Python Pandas 他ライ ブラリ Cortex Python Streamlit Python SQL Worksheet 〇 〇 〇 ー ー ー ー ー Python Worksheet (UDF作成用) Snowpark Python session.sql で実行 Snowpark Python session.sql で実行 Snowpark Python session.sql で実行 〇 〇 〇 〇 文字表示やグラフ実行 可能。レイアウトやUI 系は何も起きない Notebook SQLセル 〇 〇 〇 ー ー ー ー ー Notebook Pythonセル Snowpark Python session.sql で実行 Snowpark Python session.sql で実行 Snowpark Python session.sql で実行 〇 〇 〇 〇 文字表示やグラフ実行 可能。レイアウトやUI 系は何も起きない Streamlit Snowpark Python session.sql で実行 Snowpark Python session.sql で実行 Snowpark Python session.sql で実行 〇 〇 〇 〇 〇 作動状況調査中 作動状況調査中 Notebook内で 結果を受け渡せる どこで何が実行できるか?
  11. SQL SQL (DDL、 DML) CREATE, INSERT他 Cortex SQL Python 基本

    Snowp ark Python Pandas 他ライ ブラリ Cortex Python Streamlit Python SQL Worksheet 〇 〇 〇 ー ー ー ー ー Python Worksheet (UDF作成用) Snowpark Python session.sql で実行 Snowpark Python session.sql で実行 Snowpark Python session.sql で実行 〇 〇 〇 〇 文字表示やグラフ実行 可能。レイアウトやUI 系は何も起きない Notebook SQLセル 〇 〇 〇 ー ー ー ー ー Notebook Pythonセル Snowpark Python session.sql で実行 Snowpark Python session.sql で実行 Snowpark Python session.sql で実行 〇 〇 〇 〇 文字表示やグラフ実行 可能。レイアウトやUI 系は何も起きない Streamlit Snowpark Python session.sql で実行 Snowpark Python session.sq lで実行 Snowpark Python session.sql で実行 〇 〇 〇 〇 〇 どこで何が実行できるか?当面、使う可能性があるのはこの辺り Notebook内で 結果を受け渡せる