Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Treasure Data TechTalk 2022 - TD CDP in 30 minutes
Search
Minero Aoki
November 29, 2022
Technology
3.5k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Treasure Data TechTalk 2022 - TD CDP in 30 minutes
Treasure Data TechTalk 2022
で発表した「30分でわかるTreasure Data CDP」のスライドです。
Minero Aoki
November 29, 2022
More Decks by Minero Aoki
See All by Minero Aoki
Data Engineering Study #20 "Introduction to Data Analytics with SQL" Book
aamine
15
5.4k
Why Cookpad Is Choosing Redshift as Our Data Platform
aamine
6
3.4k
Amazon Redshift事例祭り2020 - ぼくのかんがえたさいきょうのデータ活用基盤
aamine
2
1.1k
Cookpad TechKitchen #8: Breaking BatchJobs Beautifully
aamine
3
1.5k
Cookpad 2016 Summer Intern: Programming Paradigm
aamine
4
19k
Other Decks in Technology
See All in Technology
GCASアップデート(202607-202610)
techniczna
1
200
ゼロから作るWebアプリの新定番!?Amplify Gen 2 × AWS Blocksで実現する「開発速度とRDBの柔軟性のいいとこ取り」
amixedcolor
1
160
詳解 never 型 - ボトム型の性質を深掘り
nealle
0
150
re:Invent2026 事前勉強会 歴史と愉しみ方10分LT編
toshi_atsumi
0
140
令和の今、あらためて IAM を考える。アクセスキーを「無くせない現実」との向き合い方
kazzpapa3
0
320
慶應義塾大学 AI実践05 論文執筆の仕組み化
keio_smilab
PRO
7
3.7k
Copilot Coworkで「みのるん式」やってみた
minorun365
PRO
2
1.6k
In-Context Learning再入門。ICLの勾配降下的解釈の研究動向を追ってみる。
dai08srhg
1
400
`go get`したらELFが降ってきた件
taiyow
0
180
Context Ontology Accelerator 入門 (業務データの意味を、AI エージェントに渡す)
inariku
PRO
2
280
続・ソフトウェアアーキテクトのための意思決定術: Decision Readiness, Revisited — When AI Changes the Economics of Software Architecture
snoozer05
PRO
9
2.5k
Kiro 入門 (1 つのエージェントを、どの画面からでも) | 目指せ Kiro マスター 01
inariku
PRO
3
790
Featured
See All Featured
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.8k
Test your architecture with Archunit
thirion
2
2.5k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
630
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.8k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
470
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
450
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Deep Space Network (abreviated)
tonyrice
0
410
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
350
How to make the Groovebox
asonas
2
2.5k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Technical Leadership for Architectural Decision Making
baasie
3
640
Transcript
2022-11-29 30分でわかる! Treasure Data CDP 〜Applicationsチームプレゼンツ・おもしろ技術博覧会〜 Minero Aoki
© 2022 Treasure Data, Inc. 自己紹介 • 青木峰郎(あおき みねろう) •
元Rubyコミッター、著書多数→ • 前々職 並列RDBMSベンダー ◦ 並列データベースと出会う • 前職 クックパッド ◦ 検索分析サービス「たべみる」の開発 ◦ DWHの構築 • 現職 Treasure Data(3月から) ◦ Apps BE(Applications Backend)チーム にてCDPの開発
© 2022 Treasure Data, Inc. 3 Agenda 1. CDPとは 2.
Treasure Data CDPの概要 3. IDの統合 4. Parent Segmentの構築 5. 顧客セグメントの活用 6. Treasure Data CDPの最新機能
© 2022 Treasure Data, Inc. 4 1. CDPとは
© 2022 Treasure Data, Inc. CDPとは?
© 2022 Treasure Data, Inc. CDP: Customer Data Platformとは…… CDPは(1)統合された顧客データベースを持ち、(
2)他システムから利用することができます。定 義: https://www.cdpinstitute.org/learning-center/what-is-a-cdp/ 6 顧客データをマーケティングに 活用するためのシステムのこと
© 2022 Treasure Data, Inc. それってDWHやらDMPって やつらとは違うの?
© 2022 Treasure Data, Inc. CDPはアプリ+DB、DWHはデータ自体 • CDPはアプリケーション+データベースの全体 • DWH(Data
Warehouse)は履歴データを収集し統合する という点ではCDPと非常に似ているが、アプリケーションは 含まない • CDPは顧客データに特化しているが、DWHは他のサブ ジェクト(例: 仕入れとか生産とか)も持つ app CDP DWH DWHの定義: https://en.wikipedia.org/wiki/Data_warehouse#Data_warehouse_characteristics
© 2022 Treasure Data, Inc. CDPとDMPの区別は難しい • CDPは主にマーケティングで使われる • DMPは広告領域で使われる
• public DMPはanonymous userに主眼があり CDPはnamed userに主眼がある • private DMPはnamed userも持つので CDPと区別がつかない app CDP? DMP?
© 2022 Treasure Data, Inc. 10 2. Treasure Data CDPの概要
© 2022 Treasure Data, Inc. Treasure Data CDPは…… 11 顧客をセグメントに分割し、
セグメントごとに施策を打つシステム
© 2022 Treasure Data, Inc. Plazma Treasure Data CDPアーキテクチャの概要 fluentd
バルク embulk Digdag ストリーム ジョブ起動 ID Unifi- cation Audience workflow Activation KVS RDB Appsチーム
© 2022 Treasure Data, Inc. Applications Backendチームの主要な担当領域 Audience Workflow ID統合済み
テーブル Parent Segment 最適化・情報付与 セグメント計算・転送 各種システムへ…… Activation ID Unification (optional) ソース テーブル ID統合 ユーザー管理 CDP管理
© 2022 Treasure Data, Inc. Applications Backendチームの担当領域 領域 担当メンバー チームリーダー
@spikeolaf 新機能1 @k_tsj, @hkdnet 新機能2 @chezou, @ganmacs, @dmikurube, iwabuchi 新機能3 @inohiro 新機能4 @uu59 CJO @Lewuathe ID Unification, Audience Workflow @mineroaoki 黒幕 @naruse 基本的に1機能1人で担当しています
© 2022 Treasure Data, Inc. 一人一殺 必殺仕事人が新機能を一人一殺で倒していくアットホームなチームです
© 2022 Treasure Data, Inc. 3. IDの統合: ID Unification
© 2022 Treasure Data, Inc. ID統合とは…… • 例: 実店舗のポイントカードのユーザー IDとウェブのユーザーID
• 同じ人に対応するユーザーIDは1つになっていてほしいが、現実にはそうでないことが多い。 そこでIDをできるだけ1つにまとめる処理がID統合 • いわゆる「名寄せ」に近い 複数系列のユーザーIDなどを つないで1つのIDにすること
© 2022 Treasure Data, Inc. ID UnificationによるID統合 • TDのID Unificationはテーブルのリレーションシップだけを元に統合する
• 曖昧性のある統合はサポートしていない • 例: 住所と電話番号とメアドのうち2つが一致していたら統合 id card_id cookie_id 3533895 984676 2353466 3544896 984677 1216623 3544896 984679 6325606 cookie_id web_user_id 2201857 15320509 1216623 15320510 4425606 15320511 ポイントカードマスター ウェブアクセスログ
© 2022 Treasure Data, Inc. ID UnificationのID統合アルゴリズム(超簡略版) 1. IDカラムだけをすべて抜き出す 2.
リレーションシップを元に、関連付けられたキーをグループにしていく 3. グループ化が収束するまで2を繰り返す card_id cookie_id 984676 2353466 984677 1216623 984679 6325606 cookie_id web_user_id 2201857 15320509 1216623 15320510 4425606 15320511 web_user_id cmpn_cid 15320509 5320577 15320510 5320578 15320511 5320579 1回目 2回目
© 2022 Treasure Data, Inc. (SQLで) 計算が収束するまで 繰り返す……だと……?
© 2022 Treasure Data, Inc. ID UnificationのDigdagワークフロー(抜粋) +unify_loop: loop>: <%=
マージ回数 %> _do: +iteration: td>: query: IDグループ化クエリー 確かになんかループしている ……
© 2022 Treasure Data, Inc. 4. Parent Segmentの構築: Audience Workflow
© 2022 Treasure Data, Inc. Audience Workflowの機能 機能 効果 Parent
Segmentのビルド セグメント計算に最適化したテーブルを構築する 地域コード付与 IPアドレスから国や地域を特定し、そのコードを付与する テキスト特徴量付与 訪問したウェブページの特徴を抽出して付与する Predictive Scoring 機械学習を使って計算したスコアを付与する
© 2022 Treasure Data, Inc. 何のための最適化? Audience Workflow ソース テーブル
Parent Segment Activation 最適化・情報付与 セグメント計算 各種シス テムへ…… バッチ つど計算 セグメントはコンソール操作や Activationのたびにその場で計算されるので、 それなりのレイテンシで完了するように最適化しなければならない
© 2022 Treasure Data, Inc. アカウントごとに環境はまったく異なる (1)データ量 a, b, c
(2)テーブル定義 x,y,z,m,n,p,. (3)偏り → すべてに対応するには動的な仕組みが必要
© 2022 Treasure Data, Inc. Digdagワークフローは基本的に静的 Digdagサーバーに事前に登録したワークフローがスケジュール起動される Digdag timezone: UTC
schedule: daily>: 06:00:00 +create_database: td_ddl>: create_databases: [${matrix_database_name}] _retry: 5 +create_table_customers: td>: create_empty_table.sql engine: 'presto' table_name: ${matrix_customers_tmp_table_name} _retry: 5 +customers: td>:customers.sql engine: hive insert_into: ${matrix_customers_tmp_table_name} _retry: 5 …… Plazma SQL SQL SQL スケジュール 起動 xxxx.dig この食い違いをどう解決するか?
© 2022 Treasure Data, Inc. ワークフローの一部だけが 外部から読み込まれる
© 2022 Treasure Data, Inc. 『静的』だけど『静的』じゃない それがAudience Workflowレクイエム ワークフローの冒頭で APIサーバーから動的パラメーターを読み込んで注入する
Digdag timezone: UTC schedule: daily>: 06:00:00 +create_database: td_ddl>: create_databases: [${matrix_database_name}] _retry: 5 +create_table_customers: td>: create_empty_table.sql engine: 'presto' table_name: ${matrix_customers_tmp_table_name} _retry: 5 +customers: td>:customers.sql engine: hive insert_into: ${matrix_customers_tmp_table_name} _retry: 5 …… Plazma SQL SQL SQL スケジュール 起動 audience.dig CDP-API 動的に注入する
© 2022 Treasure Data, Inc. Audience WorkflowのDigdagワークフロー(抜粋) +get_queries: http>: <%=
escape_yaml_literal @queries_uri %> headers: 略 store_content: true +customers: td>: query: ${JSON.parse(http.last_content)["customers"]} engine: ${JSON.parse(http.last_content)["customers_engine"]} insert_into: <%= escape_yaml_literal @matrix_customers_tmp_table_name %> <%- if @special_behavior_workflow -%> +behaviors: for_each>: behavior_workflow_name: <%= escape_yaml_literal @behavior_workflow_names %> _do: +run_behavior_workflow: require>: ${behavior_workflow_name} <%- else -%> +behaviors: for_each>: behavior: ${Object.keys(JSON.parse(http.last_content)["behaviors"])} _do: CDP-APIを呼んで動的パラメーターを取得 動的なパラメーターの埋め込み これは静的な分岐 静的なパラメーター また動的なパラメーター (静的パラメーターからの派生値なので)これも静的 セグメント作成時、ワークフロー起動時、ワークフロー実行中に 評価タイミングがバラまかれている酷いワークフロー ぼくと契約して動的 ワークフローになってよ! CDP-API(悪)
© 2022 Treasure Data, Inc. 動的パラメーターの一部 • クエリーエンジン • データ量によってPresto
/ Hiveを切り替える • パーティション数 • これもデータ量によって変わる • カラム一覧 • 実行のたびに変わる可能性があるため、つど取得する • クエリー • Presto / Hive両対応の時点で不可避
© 2022 Treasure Data, Inc. かわいいワークフローと思った? 残念! 悪クフローちゃんでした! ワークフローとAPIの 双方にバージョンがあります
© 2022 Treasure Data, Inc. 現代における解決策 • 現在はワークフロー全体を動的に生成するhttp_call>オペレーターがDigdagに追 加されており、これを使うとスマートに解決できる。 •
すべてを動的に変え放題! • 評価タイミングのズレがなくなる! • あらゆるお客さんが自動的に最新バージョン! • 最高!
© 2022 Treasure Data, Inc. 5. 顧客セグメントの活用: ActivationとCDP KVS
© 2022 Treasure Data, Inc. セグメントの計算 セグメントの構築条件はIonという形式で表現されており、 それをSQLにコンパイルして実行する。 Ion SQL
Plazma コンパイル 出力 TDウェブ コンソール クエリー
© 2022 Treasure Data, Inc. Ionとは…… SQLの条件節のASTを JSONで表現したもの
© 2022 Treasure Data, Inc. IonはSQLの構文木(AST)そのもの { type: “And”, conditions:
[ { type: “Value”, left_value: { database: “cdp_audience_1”, table: “customers”, column: “country_id” }, operator: { type: “Equal”, not: false, right_value: “Japan” } }, { type: “Value”, left_value: { name: “age” }, operator: { type: “Equal”, not: false, right_value: 36 } ] } And country_id = ‘Japan’ age = 36 対応するSQLのAST Ion 余談: IonはCDP-APIのリクエストパラメーターなの で、OpenAPIでSQLの構文を書くことに……
© 2022 Treasure Data, Inc. Activation • セグメントはいろいろなシステムに転送して活用できる。 • メール
• プッシュ通知 • 広告 • クーポンを出す • などなど様々なコネクターがある。 • ActivationはCDP最大の目的。CDPはActivationのためにある。
© 2022 Treasure Data, Inc. リアルタイムアクセスを実現するCDP KVS • セグメントはPostgreSQL /
DynamoDBに書き込んで、オンラインアプリケーション からAPI経由でアクセスすることが可能。 Plazma CDP KVS バッチ転送 Ignite Dynamo DB lookup APIアクセス
© 2022 Treasure Data, Inc. 6. CDPの最新機能
© 2022 Treasure Data, Inc. CJO: Customer Journey Orchestration 「店舗に3回以上来店したらロイヤルカスタマーに昇格」のような
複雑な状態遷移(いわゆるカスタマージャーニー)を顧客ごとに保持し、 状態に対応するセグメントを作ることができる
© 2022 Treasure Data, Inc. CJOの内部実装 超巨大な横長テーブルにカラムとして全ステートを並べて、行を更新することで状態遷移を表現する customer_id st_1 st_2
st_3 st_4 st_5 st_6 st_7 st_8 st_9 …… aaaaaaaaa ◯ bbbbbbbbb ◯ cccccccccc ◯ ddddddddd ◯ ◯ eeeeeeeee ◯ fffffffffffff ◯ ggggggggg ◯ UPDATE(状態遷移)
© 2022 Treasure Data, Inc. まとめ
© 2022 Treasure Data, Inc. まとめ 1. CDPは顧客データをマーケティングに活用するた めのプラットフォーム 2.
TD CDPは顧客のセグメントを作って様々な施策 を行うことができる 3. TD CDPはまだまだ新機能を開発中です 4. ……
© 2022 Treasure Data, Inc. 4. We are hiring! >
https://www.treasuredata.com/company/careers/
© 2022 Treasure Data, Inc. 45 ご清聴ありがとうございました