データマネジメントを担当している木部 弘也と申します。
先日、小売業のお客様向けにAudience Studioの実装・構築をしました。本記事では、Audience Studioの使用を開始するまでに実際にどのような実装・構築を行ったかを、「データ処理フロー編」と「Audience Studio編」の2回に分けてご紹介します。今回は「Audience Studio編」についてとなります。
Audience Studio構築の背景と目的
まずは、前回記事でもご紹介しましたがAudience Studio構築の背景となります。ある小売企業のエリア担当者の方が、今後の施策実行/検討をするにあたって、次のようなことを自分自身で柔軟かつタイムリーに行いたいという要望がありました。
- 顧客のセグメント化を行い、セグメント毎のボリューム確認や対象顧客の抽出を行いたい
- 商品カテゴリ毎に、かつ柔軟に期間を指定した上で、購入額が一定以上の顧客を抽出したい
- 各々の店舗からの距離を条件に加えて、顧客のボリューム感を把握したい
- 施策実行はアプリプッシュで行えるようにしたい
従来は、上記のような抽出や集計・把握は、IT部門に依頼して結果が出てくるまで待つ、そして、もし別の軸で確認したい場合には、再度依頼し結果が出てくるまで待つ、を繰り返しているという状況でした。
このような状況に対して、Audience Studioを導入・構築することで、エリア担当者の方が、SQLなどの言語を用いずに、アドホックに状況の確認・把握ができるようになり、簡単に対象者リストを生成することができるようになります。IT部門とのやりとりによるタイムラグの発生を抑制し、スムーズに集計や施策検討に進むことが可能となるわけです。
Audience Studioによる操作/設定
Audience Studioでは、SQLなどの言語を使用せずに、GUIからデータの抽出、セグメント作成、セグメント対象者リストの出力/連携が可能です。Audience Studioでの操作を行う前にMaster Segmentの作成が必要となります。Audience Studioの操作では、このMaster Segmentを参照して実施するかたちになります。
Master Segmentの定義は、Treasure Data Consoleの[Data Workbench] -> [Master Segments]から操作を開始します。その後、Treasure Data Consoleの[Audience Studio] -> [Master Segment]のプルダウンメニューで参照するMaster Segmentを選択した上で、セグメント作成などの操作に進みます。
Master Segmentの定義
下図は、Master Segmentの定義画面です。今回の事例では以下のようなイメージで、前回記事の「L1->L2」でご紹介したMaster Table、Attribute Table、Behavior Tableそれぞれを設定し、[Run]を実行することで、Master Segmentの作成が完了します。
Master Segmentの基本的な操作と共に具体的な設定をご紹介します。
Master Tableの指定
はじめに、Master Tableの指定から行います。ここでは、[Database]と[Table]をプルダウンメニューから選ぶというだけの操作となります。
Attribute Tableの指定
続いて、Attribute Tableの指定です。
[Foreign Key]はMaster Tableに存在するカラムから自動的に選択されているので、必要に応じて変更します。[Database]と[Table]を選択した後、[Join Key]を選択します。今回は、全て顧客番号でつながるようにしておいたので、迷わずkokyaku_noを選択すればOKです。
その後、[Columns]横の [+]ボタンをクリックして、Audience Studioで使用するカラムを追加していきます。追加したカラムに対しては、[Name]にわかりやすい日本語の名称を付けておきます。こうすることで、ビジネスユーザがAudience Studio上での操作を迷わずスムーズに行うことができるでしょう。
Behavior Tableの指定
最後にBehavior Tableの指定です。
Behavior Tableではまず[Name]を指定します。今回は、「購買履歴」と「クーポン利用履歴」をそれぞれBehavior Tableとして使用しますが、それぞれの日本語の名称を入れておきます。(後ほどAudience StudioでのSegment作成画面で指定する例を記載しています。)
ここでも、[Foreign Key]はMaster Tableに存在するカラムから自動的に選択されているので、必要に応じて変更します。また同様に[Database]と[Table]を選択した後、[Join Key]を選択します。ここでも迷わずkokyaku_noを選択すればOKです。その後、Attribute Tableと同様に各カラムに日本語名を付けておくと便利です。そのため、[All Columns]のチェックをOFFにして、日本語名を入れておきます。
以上が、Master Segmentの定義になります。各種指定が済んだら、[Save]と[Run]を実行しておきましょう。
Segments & Funnelによる操作/設定
続いて、セグメントの作成です。下図がセグメント作成画面です。こちらの画面へは、Treasure Data Consoleの[Audience Studio] -> [MASTER SEGMENT]のプルダウンメニューで参照するMaster Segmentを選択した後、[Segments & Funnels] -> [Create Batch Segment]にて表示します。
基本的には、Master Segmentの定義で指定した項目名をプルダウンメニューから選択する、演算子を選択する、その後に値を指定する、という非常に簡単な操作になります。以下に今回の事例で用いた具体的な操作をご紹介します。
店舗との距離
今回のケースでは、店舗との距離はAttribute Table側を参照することで指定が可能です。[Create Batch Segment]をクリックするとまず以下のような画面が表示されるので、ここでは[Add Attribute]をクリックします。
その後、セグメント作成(条件指定)の画面になりますので、ここで最初に「店舗Aまでの距離(m)」をプルダウンメニューから選択し、次に演算子をプルダウンメニューから選択し、最後に値を指定して、画面右の[Refresh]をクリックすると該当するユーザの一覧が取得できます。
以上が、特定の店舗からの〇〇m以内の顧客のボリュームが確認できるイメージです。
店舗×期間×商品カテゴリー×購買額
続いては、Behavior Tableを参照した条件指定のイメージになります。[Create Batch Segment]直後の画面では、[Add Behaivior]をクリックし、セグメント条件の指定画面でまず、Behavior Tableの内どのテーブルを参照するかを指定します。指定したい条件に合わせて選択してください。ここでは「購買履歴」を選択します。
その後、必要な条件を指定していきます。
一部の値の指定以外は、キーボードすら用いずマウス操作のみで完結します。例えば、Timestampで期間を指定するような場合、日時入力フィールドをクリックすると下図のような日付および時間指定の画面が表示されますので、この画面から容易に日時の入力が可能です。
また、ここでの商品カテゴリーなどのように、比較的候補値が多い場合でも、文字列での絞り込みができますので、素早く対象の値を指定することが可能となっています。
顧客セグメント
顧客セグメントは、Frequency と Monetoryそれぞれの分類の結果の組み合わせで「ランク」を定義しました。例えば、「ランクA」であれば、F=3かつM=5という具合です。ただし、下図の「ランクB」のように矩形ではなくL字型となるランクもありました。
このようなケースで「ランクB」の条件を設定する場合、事前に「ランクA」のセグメントを作成しておき、その「ランクA」の条件を除外するかたちで指定すると、比較的容易に設定することが可能です。
具体的には、まず「ランクB」の指定として、Attribute Tableを参照するかたちで、Fセグメントは「2または3」、Mセグメントは「4または5」を指定します。そして、同じ設定画面上で[ADD RULE] をクリックし、[Existing Segments]を選択します。すると、既存のセグメントを指定できるようになりますので、ここで事前に作成しておいた「ランクA」を[Exclude profiles]として指定します。
これにて、「ランクB」のセグメント指定が完了です。このように、セグメント作成画面では、複雑な条件もGUI操作のみで指定することができ、容易にボリュームなどを確認することができます。特定の施策などで利用するセグメントは保存しておきます。
Activationの設定
「Segments & Funnelによる操作/設定」によって抽出した対象者リストを他の施策ツール等に連携するために「Activationの設定」を行います。[Segments & Funnels] の画面右側の[ACTIVATIONS]をクリック、[Create]をクリックすると設定画面が表示されます。
事前に連携先の「Authentication」を設定しておく必要があります。Activationの設定画面では、指定した「Authentication」に連動して設定項目が変わりますので必要な項目を入力します。
必要な項目が入力できたら、[Create & Run Now]をクリックして、設定の完了&実行を行います。
アプリ連携用IDリストの作成
この事例では、アプリに連携するためのアプリユーザIDのリストを連携したい状況でした。前回記事で記載したように、顧客によってはアプリユーザIDを複数持っている場合がありますが、Attribute Tableは1顧客1レコードで構成したいため、顧客番号(kokyaku_no)に対してアプリユーザIDはArray型で保持させていました。そのため、単純にActivationの出力で得られる結果は下図上部のようなリストになります。
しかしながら、欲しいリストは上図下部のようなイメージであるケースが多いかと思います。そのような場合は、一度TDのテーブルにアウトプットしておき、SQLを使って所望のリストに変換するという後処理を行って、その後連携すると良いです。ちなみに、上図の変換には、以下のようなクエリで対応しました。
WITH prep AS( SELECT kokyaku_no, FLATTEN( array_agg(appuser_id) ) AS appuser_ids FROM mst_customer_label WHERE CARDINALITY(appuser_id) > 0 GROUP BY kokyaku_no ) SELECT kokyaku_no, appuser_id FROM prep CROSS JOIN unnest(appuser_ids) AS t(appuser_id) ORDER BY kokyaku_no, appuser_id
一部クエリの紹介も入りましたが、Audience Studioの操作は言語不要であり、非常に簡単なものになりますので、特にセグメント作成画面については、ビジネス寄りの方にも安心して操作いただけご活用いただけることがお分かりになったかと思います。
Workflowによる定期実行
最後に「Audience Studioによる操作/設定」で実施した内容は、定期的に実行することで最新の状態を保つことができます。Activationの結果を最新の状態にするためには、Master Segmentsが最新の状態になっていないとダメですし、さらにその前に前回記事でご紹介した前段の各種データが更新されている必要があります。
定期実行は、Master SegmentsやActivationそれぞれの設定画面で個々に指定することも可能ですが、特定のWorkflowから呼び出すようにし、そのWorkflowにスケジュール設定することで、データのIngestから施策連携リスト生成までの一連の処理を決められたスケジュールで開始し、以降は前の処理が終わったら次を実行させる、ということが可能になります。
今回の場合は、特にActivationの結果を後処理するクエリも用意したので、Workflowで一連の実行を制御できる方が便利です。以下がWorkflowの指定イメージになります。これで、前記事でご紹介した内容含めて一連の処理を指定したスケジュールに則って、順番に実行することができます。
timezone: Asia/Tokyo schedule: weekly>: Tue,00:00:00 +proc_100_cleanse_uploaded_table: require>: proc_100_cleanse_uploaded_tables rerun_on: all +proc_200_create_table_for_master_segments: require>: proc_200_create_table_for_master_segments rerun_on: all +proc_300_update_master_segments: require>: audience project_name: cdp_audience_xxxxx rerun_on: all +proc_400_create_appuser_id_list: require>: proc_400_create_appuser_id_list rerun_on: all
「+proc_300_update_master_segments:」に注目いただくと、ここはMaster Segmentの更新処理をするタスクとなっているのですが、「require>: audience」と「project_name: cdp_audience_xxxxxx」を指定しています。xxxxxxは数字の羅列となり、Master Segmentに振られるIDとなっています。このIDはMaster Segment設定画面から確認することができます。
また、「+proc_400_create_appuser_id_list:」は「proc_400_create_appuser_id_list」を呼び出していますが、「proc_400_create_appuser_id_list」内では以下のようにActivationの実行と後処理(appuser_id単位のリストにする処理)のタスクが流れるように指定しています。
timezone: Asia/Tokyo _export: td: database: l2_xxx +create_scuser_id_list: +step1_update_activation: require>: syndication_xxxxx project_name: cdp_segment_xxxxx rerun_on: all +step2_create_appuser_id_list: td>: queries/proc_400_create_appuser_id_list.sql create_table: scuser_id_list
「+step1_update_activation:」の部分でのrequire>:とproject_name:の指定については、前述のActivation設定画面での[Create & Run Now]をクリックして、実行された履歴を確認できます。設定したActivationの[View History]から、直近実行した履歴をクリックし、表示される画面の[Project] と [Workflow]をそれぞれ指定すればOKです。
以上が、Workflowによる定期実行の実装のご紹介となります。
最後に
前回に引き続き、小売業向けAudience Studio 構築事例をご紹介しました。今後Audience Studioを構築/運用される際の少しでも参考になれば幸いです。