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
Treasure Data TechTalk 2022 - TD CDP in 30 minutes
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Minero Aoki
November 29, 2022
Technology
3.1k
1
Share
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.3k
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
「できない」のアウトプット 同人誌『精神を壊してからの』シリーズ出版を 通して得られたこと
comi190327
3
570
Embeddings : Symfony AI en pratique
lyrixx
0
460
【AWS】CloudTrail LakeとCloudWatch Logs Insightsの使い分け方針
tsurunosd
0
130
Oracle AI Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
3
2.1k
AI時代に新卒採用、はじめました/junior-engineer-never-die
dmnlk
0
110
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
11k
マルチモーダル非構造データとの闘い
shibuiwilliam
1
180
組織的なAI活用を阻む 最大のハードルは コンテキストデザインだった
ixbox
1
470
GitHub Copilotを極める会 - 開発者のための活用術
findy_eventslides
4
2k
制約を設計する - 非決定性との境界線 / Designing constraints
soudai
PRO
6
1.7k
ハーネスエンジニアリング×AI適応開発
aictokamiya
3
1.5k
Oracle Cloud Infrastructure(OCI):Onboarding Session(はじめてのOCI/Oracle Supportご利⽤ガイド)
oracle4engineer
PRO
2
17k
Featured
See All Featured
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.3k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
210
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.5k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
990
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
350
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
250
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.9k
The agentic SEO stack - context over prompts
schlessera
0
730
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
27
3.4k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
110
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
10k
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 ご清聴ありがとうございました