Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Snowparkを基礎からおさらい
Search
ugmuka
January 26, 2023
460
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Snowparkを基礎からおさらい
https://datumstudio.connpass.com/event/270726/
ugmuka
January 26, 2023
More Decks by ugmuka
See All by ugmuka
What’s Rewrite at dbt coalesce 2025? : dbt coalesce 2025総復習!
ugmuka
0
130
データパイプラインバッチ設計で私が考えること
ugmuka
5
1.2k
Snowflakeでやらかした時の対処法
ugmuka
1
310
2022/12/14 ちゅらコラボ登壇資料
ugmuka
0
410
rawSQLからdbtへの移行プロセスについて
ugmuka
0
180
Featured
See All Featured
Building AI with AI
inesmontani
PRO
1
1.1k
Amusing Abliteration
ianozsvald
1
230
Leo the Paperboy
mayatellez
8
1.9k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
500
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
610
BBQ
matthewcrist
89
10k
SEO for Brand Visibility & Recognition
aleyda
0
4.6k
Color Theory Basics | Prateek | Gurzu
gurzu
0
390
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
880
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.6k
Transcript
Snowparkを基礎からおさらい DATUM STUDIO株式会社 向井 雄二 2023年01月26日
© 2023 DATUM STUDIO Co. Ltd. 1 Whoami select *
from employnee where name = ‘向井雄二’; name company role twitter job 向井雄二 DATUM STUDIO データエンジニア @ugmuka データ分析基盤の 受託開発
© 2023 DATUM STUDIO Co. Ltd. 2 アジェンダ 1. Introduction
© 2023 DATUM STUDIO Co. Ltd. 3 Snowflakeとは? データウェアハウス データクラウド
© 2023 DATUM STUDIO Co. Ltd. 4 データのサイロ化 営業 CRMの分析機能
を使っています アナリスト SREにデータ抽出して もらってtableauで分 析しています SRE 本番DBは他の人に 触られたくないです サイエンティスト jupyter notebook 使ってローカルでモデル 作ります 法律 個人情報の取り扱いに は気を付けてください
© 2023 DATUM STUDIO Co. Ltd. 5 データクラウドとは データクラウド:データどうしの繋がり https://www.snowflake.com/en/data-cloud/platform/
© 2023 DATUM STUDIO Co. Ltd. 6 それぞれがやりたいこと 営業 CRMの分析機能
を使っています アナリスト SREにデータ抽出して もらってtableauで分 析しています SRE 本番DBは他の人に 触られたくないです サイエンティスト jupyter notebook 使ってローカルでモデル 作ります 法律 個人情報の取り扱いに は気を付けてください ダッシュボードがあればよい tableauでの接続先が欲しい インタラクティブなPython環境が欲しい 分析用のDB(DWH)が欲しい 個人情報にはアクセス制限をしたい
© 2023 DATUM STUDIO Co. Ltd. 7 そこでSnowpark Snowpark:Snowflakeを他言語の世界へ拡張する https://www.snowflake.com/en/data-cloud/snowpark/
© 2023 DATUM STUDIO Co. Ltd. 8 アジェンダ 2. Snowparkとは
© 2023 DATUM STUDIO Co. Ltd. 9 概要 SnowparkはDataframeで抽象化を行ったAPI Dataframe
API df.select()… select …, from …
© 2023 DATUM STUDIO Co. Ltd. 10 実行例 from snowflake.snowpark
import Session from snowflake.snowpark.functions import date_trunc, col connection_parameters = { "account": “**********.aws.ap-northeast-1", "user": *****@datumstudio.jp", "password": “*******", … } session = Session.builder.configs(connection_parameters).create() customer_order = session.table("raw_orders") ¥ .select("user_id", date_trunc("MONTH", "order_date").alias("month")) ¥ .group_by("month", "user_id") ¥ .count() ¥ .show() $ python test.py ------------------------------------ |"MONTH" |"USER_ID" |"COUNT" | ------------------------------------ |2018-01-01 |1 |1 | |2018-01-01 |3 |2 | |2018-01-01 |94 |2 | |2018-01-01 |50 |1 | |2018-01-01 |64 |2 | |2018-01-01 |54 |2 | |2018-01-01 |88 |1 | |2018-01-01 |2 |1 | |2018-01-01 |53 |1 | |2018-01-01 |7 |1 | ------------------------------------
© 2023 DATUM STUDIO Co. Ltd. 11 アジェンダ 3. Snowparkの機能
© 2023 DATUM STUDIO Co. Ltd. 12 anaconda連携 Keras, Tensorflowなどの豊富なPythonのライブラリを利用可能
※使用リソースはクライアント側
© 2023 DATUM STUDIO Co. Ltd. 13 Python UDF Python
UDF, procedure:Snowflake上でもPythonが動かせるようになる local app.py test Python UDF or procedure snowcliでCI/CD $ snow function create …
© 2023 DATUM STUDIO Co. Ltd. 14 Python UDF: Batch
API vectorized decorator: 行をまとまった単位で処理 create function add_cols_vectirized(x number(38, 0), y number(38, 0)) returns number(10, 0) language python runtime_version = 3.8 packages = ('pandas') handler = 'add_cols' as $$ import pandas from _snowflake import vectorized @vectorized(input=pandas.DataFrame) def add_cols(df): return df[0] + df[1] $$; inputにpandas.DataFrameを指定 →入力列を一定サイズ読み込んでpd.DataFrameに変換
© 2023 DATUM STUDIO Co. Ltd. 15 Snowpark向けLarge instance メモリ確認用procedure
create or replace procedure show_system_info() returns string language python runtime_version = '3.8' packages = ('snowflake-snowpark-python') handler = 'run' as $$ import os import shutil def run(session): total, used, free = shutil.disk_usage("/") memory_bytes = os.sysconf('SC_PAGE_SIZE') * os.sysconf('SC_PHYS_PAGES') return f'Memory total: {int(memory_bytes / (2**30))} GiB, CPU: {os.cpu_count()} core, Disc usage: {int(total / (2**30))} GiB' $$; メモリ、CPU、ローカルストレージが多く単一でのワークロード向けになっている
© 2023 DATUM STUDIO Co. Ltd. 16 Logging framework 実行中のlogは別途Snowflake内のテーブルに格納(プライベートプレビュー)
def run(): … logger.info(hoge) … logger.debug(fuga) … Snowflake内テーブル ログは別テーブルに保存 ※個人的な想像です
© 2023 DATUM STUDIO Co. Ltd. 17 アジェンダ 4. Snowparkのこれから
© 2023 DATUM STUDIO Co. Ltd. 18 Snowflakeの行き先 すべてのデータをSnowflakeに 営業
CRMの分析機能 を使っています アナリスト SREにデータ抽出しても らってtableauで分析し ています SRE 本番DBは他の人に 触られたくないです サイエンティスト jupyter notebook 使ってローカルでモデル 作ります 法律 個人情報の取り扱いに は気を付けてください Snowflake Snowsight tableau-Snowflake連携 Snowpark role base access control masking policy
© 2023 DATUM STUDIO Co. Ltd. 19 Next step ✓
streamlit統合 • Snowflake上でstreamlitをホストできるようになる ✓ 非構造化データへの対応 • pythonへの対応はプライベートプレビュー中 ✓ 時系列予測パッケージ • ビルトインで時系列予測ができる ✓ 外部への通信のサポート • API callが可能に etc… 近々のリリース予定