このトピックでは、MaxCompute を使用してオフラインコンピューティングを行い、Quick BI を使用して e コマース シナリオ向けのファネル モデルを作成する方法について説明します。
背景情報
ファネル モデルは、コンバージョン レートを使用してプロダクトのパフォーマンスを測定します。各ステップでのコンバージョンを追跡することで、ユーザーがどこで離脱しているかを特定し、継続的なプロダクトの最適化を可能にします。e コマースでは、このモデルにより、商品の閲覧から注文完了までのユーザーの購買ジャーニーを可視化できます。このトピックでは、このジャーニーに対してファネル分析を実行し、その結果を可視化する方法を紹介します。
前提条件
Simple Log Service を有効化しました。詳細については、「Simple Log Service 購入ガイド」をご参照ください。
MaxCompute を有効化済みであり、MaxCompute プロジェクトを作成済みである必要があります。詳細については、「MaxCompute の有効化」および「MaxCompute プロジェクトの作成」をご参照ください。
DataWorks を有効化しました。詳細については、「DataWorks 購入ガイド」をご参照ください。
Quick BI を有効化しました。詳細については、「Quick BI 購入ガイド」をご参照ください。
操作手順
Simple Log Service を使用してログデータを収集します。
MaxCompute を使用してオフラインコンピューティングのデータモデルを構築します。
DataWorks DataStudio で、次の SQL ステートメントを実行して、
ods_user_trace_dataという名前のオペレーショナルデータストア (ODS) テーブルを作成します。-- dt 列に基づき、テーブルを日単位でパーティション化します。 CREATE TABLE IF NOT EXISTS ods_user_trace_data ( md5 STRING COMMENT 'ユーザー ID (UID) の MD5 ハッシュの先頭 8 文字。', uid STRING COMMENT 'ユーザー ID (UID)。', ts BIGINT COMMENT 'ユーザー操作のタイムスタンプ。', ip STRING COMMENT 'IP アドレス。', status BIGINT COMMENT 'サーバーが返す状態コード。', bytes BIGINT COMMENT 'クライアントに返されるバイト数。', device_brand STRING COMMENT 'デバイスブランド。', system_type STRING COMMENT 'オペレーティングシステム(例:Android、iOS、iPad、Windows Phone)。', customize_event STRING COMMENT 'カスタムイベント(例:ログイン、ログアウト、購入、登録、クリック、バックグラウンド、ユーザー切り替え、閲覧、コメント)。', use_time BIGINT COMMENT '単一アプリセッションの持続時間。このフィールドは、ログアウト、バックグラウンド、ユーザー切り替えイベントに対して記録されます。', customize_event_content STRING COMMENT 'ユーザーが操作したコンテンツに関する情報。この列は、閲覧およびコメントイベントに対して含まれます。' ) PARTITIONED BY ( dt STRING );説明このステートメントのフィールドはサンプルデータに基づいています。DataWorks でのテーブル作成方法の詳細については、「ODPS SQL タスクの開発」をご参照ください。
ODS の詳細については、「オペレーショナルデータストア (ODS)」をご参照ください。
次のコマンドを実行して、
ods_user_trace_dataテーブルにパーティションを追加します。ALTER TABLE ods_user_trace_data ADD PARTITION (dt=${bdp.system.bizdate});収集したログデータを MaxCompute に移行します。
収集したログデータを MaxCompute に移行する方法の詳細については、「ログデータを MaxCompute に移行する」をご参照ください。
DataWorks DataStudio で、次の SQL ステートメントを実行して、
dw_user_trace_dataという名前のデータウェアハウスの詳細 (DWD) テーブルを作成します。-- dt 列に基づき、テーブルを日単位でパーティション化します。 CREATE TABLE IF NOT EXISTS dw_user_trace_data ( uid STRING COMMENT 'ユーザー ID (UID)。', device_brand STRING COMMENT 'デバイスブランド。', system_type STRING COMMENT 'オペレーティングシステム(例:Android、iOS、iPad、Windows Phone)。', customize_event STRING COMMENT 'カスタムイベント(例:ログイン、ログアウト、購入、登録、クリック、バックグラウンド、ユーザー切り替え、閲覧、コメント)。', use_time BIGINT COMMENT '単一アプリセッションの持続時間。このフィールドは、ログアウト、バックグラウンド、ユーザー切り替えイベントに対して記録されます。', customize_event_content STRING COMMENT 'ユーザーが操作したコンテンツに関する情報。この列は、閲覧およびコメントイベントに対して含まれます。' ) PARTITIONED BY ( dt STRING );説明DWD の詳細については、「データウェアハウスの詳細 (DWD)」をご参照ください。
次のコマンドを実行して、
dw_user_trace_dataテーブルにデータを挿入します。INSERT INTO dw_user_trace_data PARTITION (dt = '${bdp.system.bizdate}') SELECT uid ,device_brand ,system_type ,customize_event ,use_time ,customize_event_content FROM ods_user_trace_data WHERE dt = '${bdp.system.bizdate}' ;DataWorks DataStudio で、次の SQL ステートメントを実行して、
rpt_user_trace_dataという名前のアプリケーションデータサービス (ADS) テーブルを作成します。-- dt 列に基づき、テーブルを日単位でパーティション化します。 CREATE TABLE IF NOT EXISTS rpt_user_trace_data ( browse STRING COMMENT 'ページビュー数', click STRING COMMENT 'クリック数', purchase STRING COMMENT '購入数量', browse_rate STRING COMMENT 'クリックコンバージョンレート', click_rate STRING COMMENT '購入コンバージョンレート' ) PARTITIONED BY ( dt STRING );説明ADS の詳細については、「データウェアハウスのレイヤー構造」をご参照ください。
DataWorks DataStudio で、次の SQL ステートメントを実行してビジネスロジックを記述します。
INSERT OVERWRITE TABLE rpt_user_trace_data PARTITION (dt=${bdp.system.bizdate}) SELECT browse AS "Page views" ,click AS "Clicks" ,purchase AS "Purchase quantity" ,concat(round((click/browse)*100,2),'%') AS "Click conversion rate" ,concat(round((purchase/click)*100,2),'%') AS "Purchase conversion rate" FROM (SELECT dt,count(1) browse FROM dw_user_trace_data WHERE customize_event='browse' AND dt = ${bdp.system.bizdate} GROUP BY dt) a LEFT JOIN (SELECT dt,count(1) click FROM dw_user_trace_data WHERE customize_event='click' AND dt = ${bdp.system.bizdate} GROUP BY dt) b ON a.dt=b.dt LEFT JOIN (SELECT dt,count(1) purchase FROM dw_user_trace_data WHERE customize_event='purchase' AND dt = ${bdp.system.bizdate} GROUP BY dt)c ON a.dt=c.dt ;説明ユーザーのジャーニーは「閲覧 → クリック → 購入」となります。各ステップのコンバージョンレートは、次のステップに進んだユーザーの割合です。たとえば、クリックコンバージョンレートは、クリックしたユーザー数を閲覧したユーザー数で割った値です。
rpt_user_trace_dataテーブル内の計算結果を照会します。サンプル SQL:
SELECT * FROM rpt_user_trace_data WHERE dt='20231126';照会結果:
+------------+------------+------------+-------------+------------+------------+ | browse | click | purchase | browse_rate | click_rate | dt | +------------+------------+------------+-------------+------------+------------+ | 35 | 16 | 2 | 45.71% | 12.5% | 20231126 | +------------+------------+------------+-------------+------------+------------+
データを可視化します。
Quick BI を使用してダッシュボードを作成し、ファネル分析の結果を可視化します。詳細については、「クラウドデータソース MaxCompute の追加」および「じょうごグラフ」をご参照ください。
重要Quick BI でデータセットを作成する際は、まず MaxCompute プロジェクトで 3 階層モデルが有効になっているかどうかを確認し、それに応じてデータセットを作成してください。
MaxCompute では、
setproject;コマンドを実行して、プロジェクトプロパティ内の odps.namespace.schema パラメーターの値を確認できます。値が true の場合、プロジェクトで 3 階層モデルが有効になっています。この場合、Quick BI は MaxCompute の 3 階層モデルを公式にサポートしていないため、カスタム SQL を使用してデータセットを作成する必要があります。フィールドをドラッグしてデータセットを作成すると、内部で生成される SQL により「table not found」エラーが発生します。
値が false の場合、3 階層モデルは有効になっていません。カスタム SQL を使用するか、フィールドをドラッグしてデータセットを作成できます。
以下のじょうごグラフを生成するには、テーブルオブジェクトが
ods_user_trace_dataであるデータセットを選択し、customize_eventフィールドを じょうごレイヤー / ディメンション として使用する必要があります。
