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

Streamlit in Snowflakeで加速する不動産テック企業のデータ活用 @Snow...

Streamlit in Snowflakeで加速する不動産テック企業のデータ活用 @Snowflake WESTユーザー会

下記イベントの登壇時の発表資料です。

関西弁チャットボットを作って体感!初心者から学べるStreamlit×Snowflake活用&事例セッション
https://techplay.jp/event/979740?pw=90LpV1kn

Avatar for yuto16

yuto16

May 21, 2025
Tweet

Other Decks in Technology

Transcript

  1. Streamlit in Snowflakeで加速する 
 不動産テック企業のデータ活用 
 @Snowflake WESTユーザー会 
 GA

    technologies Data本部 Applied ML部 
 酒井悠斗 Data Scientist
 2025/05/21

  2. 1. 登壇者紹介 / 会社紹介
 2. GA technologiesでのSnowflakeの使い方
 3. Streamlitユースケース #1


    4. Streamlitユースケース #2 
 5. Streamlitユースケース #3
 6. まとめ
 アジェンダ 

  3. 登壇者紹介 
 酒井 悠斗 / Yuto Sakai
 職歴:新卒で外資保険会社 → 2024年

    GA technologies入社
 所属:Data本部 Applied ML部 データサイエンティスト 
 
 GA technologiesでの取り組み:
 • デジタルマーケティング領域の出稿割合の最適化 
 • セールス領域の行動とKPIの関連性可視化・分析
 • 社内でのLLMアプリ作成ツール導入による LLMの民主化

  4. Streamlit ユースケース 
 データマネジメント 
 業務の効率化 ABテストの
 標準化 商談内容の 


    定量的な分析 
 カラムディスクリプション 
 エディター 
 
 Snowflake内のテーブル 
 のDescriptionの記入をサ ポートするツール ABテスト
 計算ツール 
 
 ABテストの統計的な 
 計算・評価をサポートす るツール キーアクション 
 チェッカー 
 
 商談の内容を LLMの力 で簡単にチェックする ツール
  5. Streamlit ユースケース #1
 カラムディスクリプション 
 エディター 背景・課題: 
 • DWHにおいて各種データの説明(

    Description)が不完全
 • 欲しいデータが、どのテーブルのどのカラムに存在するのか わかりづらい
 • 対象のテーブル・カラムが膨大で、人力での Description   入力が難しい
 
 対象ユーザー: 
 • Descriptionを記入するメンバー( Data Managment)
 
 効果:
 • 1テーブル約10分の作業が約2分に短縮(80%短縮)

  6. Step1: Descriptionを登録するテーブルを指定する。 
 ユースケース #1 / Columns Description Editor
 テーブルを

    Database.Schema.Table の形で指定する テーブルパスの指定 ※データはダミーです

  7. Step2: 指定したテーブルの中身を確認し、追加情報があればそれも記載する 
 ユースケース #1 / Columns Description Editor
 本当にそのテーブルを編集するか中身を

    見て確認できる カラムの数も表示されるので、「 1000個あり ます」→「あとでやろう・・・」といった判断も 事前にできる テーブルの確認 例えば、DB内のTableのSchemaを定義 するコードを追加情報として LLMに投入 できる(Githubからコピペ) 追加情報の付与 ※データはダミーです

  8. Step3: 各種の情報をもとに LLMがDescriptionを生成し HITLを挟んで登録される。 
 ユースケース #1 / Columns Description

    Editor
 カラム毎に、カラム名・既存の Description ・サンプルの値などを整理する 統計情報の確認 上記の情報をもとに、 LLMが新たな Descriptionを生成し、NULLの部分を補完し てくれる LLMによるDescription生成 Descriptionは手動でも編集でき、人間の 確認をもって(HITL)登録される Descriptionの登録 ※データはダミーです

  9. コード・プロンプトの紹介 
 以下の情報をヒントに、 データベースのテーブル内のカラムの説明を日本語で してください。 ただしヒントにある情報は別で参照できるので改めて説明する必要はありませ ん。以下の例を参考に考えてください。 また、追加情報に同じカラム名の項目があればそこを自分の考えよりも「優先 的」に参照してください。 ##

    悪い例 - 例1: カーディナリティは20です。理由:Cardinalityカラムを見ればわかる情 報だから不要。 - 例2: DAY変数は曜日を表しています。理由 : column_nameを見れば列名 はわかるので簡潔に「曜日を表しています。」だけで良い。 ## 追加情報 - {additional_context} ~~~(略)~~~ select RST.column_name ,EDT.existing_description ,EDT.ordinal ,SNOWFLAKE.CORTEX.COMPLETE( 'llama3.1-70b', concat( '{llm_prompt}', ' Column Name:', RST.column_name, ' Cardinality:', RST.cardinality, ' Distinct Values:',RST.distinct_values ) ) as description ,distinct_values as sample_value from random_sample_transpose RST left join existing_description_tabe EDT on RST.column_name=EDT.column_name order by EDT.ordinal ASC Snowflake Cortexを呼ぶ部分 
 LLMへのPrompt
 ユースケース #1 / Columns Description Editor

  10. Streamlit ユースケース #2
 背景・課題: 
 • 部署によってABテストが実施されていたりいなかったり 
 • 統計的な計算も全て正しいとは言えない状況

    
 • 判断基準も担当者の経験や感覚が重視 
 
 対象ユーザー: 
 • PdMやマーケティング担当者( not テックメンバー)
 
 効果:
 • ABテスト設計品質の向上 
 • 判断基準の標準化
 • 社内全体のデータリテラシー向上 
 ABテスト
 計算ツール
  11. ユースケース #2 / ABテスト計算ツール 
 Step1: ABテストの事前の設計を行い、必要なサンプルサイズを求める 
 事前の設定のもとで必要 なサンプルサイズを計算

    する サンプルサイズ確認 割合が前後した場合の サンプルサイズも 合わせて表示すること で、感応度分析のよう なことも可能に サンプルサイズ感応度 事前に有意水準や基準となる 割合などを定めておく テスト設計の設定 ※データはダミーです

  12. ユースケース #2 / ABテスト計算ツール 
 Step2: テスト結果を記入し、各種指標から結果を解釈する 
 テスト実施の結果を 記入する

    テスト結果の記入 一通りの統計的な計算を 行い、その結果を表示 してくれる テスト評価の確認 ※データはダミーです

  13. ユースケース #2 / ABテスト計算ツール 
 コードの紹介 
 @st.cache_data def create_sample_size_df(cvr_a_plan_100p,

    cvr_uplift_plan_100p, one_minus_beta, alpha, range_width=1.0, step=0.1): """ サンプルサイズテーブルを作成する Args: ~~~(略)~~~ Returns: pandas.DataFrame: サンプルサイズのテーブル """ # CVRの範囲を作成 cvr_a_plan_list = np.arange(start=max(0.1, return df_plan def set_page_style(): """ ページのスタイルを設定する """ st.markdown(""" <style> [data-testid=stSidebar] { background-color: #E1F5FE; } </style> """, unsafe_allow_html=True) UIの色もカスタマイズ可能 
 重い計算ではキャッシュを使用 

  14. Streamlit ユースケース #3
 背景・課題: 
 • 実施済みの不動産の商談データは Zoomで蓄積
 • 統一的に商談データを分析する仕組みが未整備

    
 
 対象ユーザー: 
 • 不動産販売に関わる BizDevやSalesのメンバー
 
 効果:
 • 蓄積された商談データを統一的に分析する仕組みの確立 
 • 各種KPIに重要な影響を与えているキーアクションの発見 
 キーアクションチェッ カー

  15. ユースケース #3 / キーアクションチェッカー 
 Step2: キーアクションを定義 
 ※キーアクションやチェック結果はダミーです 


    対象の商談を選択肢から選ぶ 商談種別の指定 チェックしたいアクションを テキストで定義する アクションの指定 「タスク作成と実行」を押すと Snowflakeのタスクが作成される タスクの作成
  16. ユースケース #3 / キーアクションチェッカー 
 Step4: キーアクションの実施有無と各種 KPIを確認
 ※キーアクションやチェック結果はダミーです 


    チェック項目を選ぶことで、その 項目と各種KPIとの相関を確認 することができる KPIとの相関チェック
  17. ユースケース #3 / キーアクションチェッカー 
 コード・プロンプトの紹介 
 あなたは、ZoomのTranscriptを分析するAIです。 不動産投資の販売に関する営業トークを分析します。 あなたは、Transcriptの中からKey

    Actionを見つけることが求められていま す。 Key Actionは、営業トークの中で重要な行動や発言を指します。 例えば、自己紹介や商品の説明、顧客のニーズの確認などが含まれます。 あなたは、Transcriptを読み取り、Key Actionが行われているかどうかのフラ グを立てる必要があります。 # 出力フォーマット 以下の通りで「0」か「1」の整数のみ出力してください。それ以外のテキストは 出力しないでください。 - 0: (Key Actionが行われていない) - 1: (Key Actionが行われている) ~~~(略)~~~ select * ,SNOWFLAKE.CORTEX.COMPLETE( 'llama3.1-8b', [{{ 'role': 'user', 'content': concat( '{llm_prompt}', ' # Key Action:', '{key_action}', ' # Transcript:', {input_column_name} ) }}], {{'max_tokens':100}} ):"choices"[0]:"messages" AS key_action_flag_temp from target_table Snowflake Cortexを呼ぶ部分 
 LLMへのPrompt

  18. 全体を通して気づき・コメント 
 UI/デザイン 計算の処理 ユーザーFB • 色での工夫は大切、     ただ使いすぎないように 


    • Stepが分かれている場合 の画面遷移は用途に合わ せて選択(ページ /スクロー ル/タブ)
 • キャッシュを使う 
 • 概算コストや処理時間を表 示することでユーザー体験 を向上
 • まずはリリースしてユー ザーに使ってもらうことが 大切
 • リリース後も何度も修正し ました