ダッシュボードビルダーでeコマースのOrder Placedイベントをレポートする
ecommerce.order_placed推奨イベントからカスタムの売上チャートや注文チャートを作成するには、クエリビルダーでSQLクエリを保存し、ダッシュボードビルダーで結果を可視化します。
この例について
架空の衣料小売ブランドFlash and Threadは、eコマース推奨イベントを使用して注文を記録しています。マーケティングチームは、プリビルトのラストタッチアトリビューションビューだけでなく、日次売上、平均注文額(AOV)、注文件数を1つのダッシュボードにまとめたいと考えています。
このパターンでは、クエリビルダーを使用してSnowflakeの共有イベントテーブルから ecommerce.order_placed をクエリし、保存したクエリをダッシュボードビルダーのカスタムクエリタイルとして追加します。追加の指標(新規購入者とリピート購入者、商品カテゴリ、セグメント別売上など)についても同じワークフローを繰り返すことができます。
組み込みのeコマースダッシュボードが必要な指標の組み合わせをカバーしていない場合に使用してください。ラストタッチアトリビューション売上については、Revenue - Last Touch Attributionダッシュボードを参照してください。
考慮事項
- イベントの実装: クエリがデータを返すには、
ecommerce.order_placedが実装され、total_value(および必要に応じて商品データ)を送信している必要があります。Shopifyコネクターを使用している場合、推奨イベントはすでに利用可能な場合があります。 - クエリビルダーへのアクセス: クエリビルダーを使用するには、「View PII」ユーザー権限が必要です。
- データ保持: クエリビルダーはデフォルトで過去60日間のデータを返します。Snowflake Data Sharingを使用すると、最大2年間の保持データをクエリできます。クエリビルダーを参照してください。
- タイムアウト: 6分以上実行されるクエリはタイムアウトします。レポートが失敗した場合は、日付範囲を狭めるか、
TIMEでフィルターするか、オーディエンスサイズを縮小してください。イベントテーブルはTIMEでクラスタリングされているため、イベント発生時刻でのフィルタリングが推奨されます。 - 売上フィールド: サンプルクエリはイベントの
propertiesからtotal_valueを合計します。Brazeの標準化されたeコマース売上は、プロダクトレポートでは各商品のpriceとquantityから算出されることが多いです。total_valueを商品の明細と一致させるか、スキーマに合わせてSQLを調整してください。 - 列ラベル: 表示列名はダブルクォーテーションで囲んでください(例:
"Date"、"Total Revenue")。これにより、ダッシュボードビルダーで読みやすい軸やテーブルヘッダーが表示されます。 - テスト: この記事のSQLは例として提供されています。ダッシュボードを広く共有する前に、ワークスペースでクエリを検証してください。
設定
ステップ1:日次売上のSQLクエリを作成する
- Analytics > クエリビルダーに移動します。
- SQLクエリを作成を選択し、次にSQLエディターを選択します。
- クエリに名前を付けます(例:
Flash Thread — daily eCommerce revenue)。 - 過去60日間の暦日ごとの合計売上について、以下のクエリを貼り付けて調整します。
1
2
3
4
5
6
7
8
9
SELECT
DATE_TRUNC('day', TO_TIMESTAMP_NTZ(TIME))::DATE AS "Date",
SUM(PARSE_JSON(PROPERTIES):total_value::NUMBER(18, 2)) AS "Total Revenue"
FROM USERS_BEHAVIORS_CUSTOMEVENT_SHARED
WHERE NAME = 'ecommerce.order_placed'
AND TO_TIMESTAMP_NTZ(TIME) >= DATEADD(day, -60, CURRENT_TIMESTAMP())
AND TO_TIMESTAMP_NTZ(TIME) <= CURRENT_TIMESTAMP()
GROUP BY 1
ORDER BY 1;
- クエリを実行を選択し、次に保存を選択します。
クエリビルダーの設定の詳細については、クエリビルダーでレポートを実行するを参照してください。
ステップ2:クエリをダッシュボードビルダーのタイルに追加する
- Analytics > ダッシュボードビルダーに移動します。
- ダッシュボードを作成を選択します(または既存のダッシュボードを開きます)。
- データソースとしてカスタムクエリを選択します。
- + タイルを追加を選択し、ステップ1で保存したクエリを選択します。
- 鉛筆アイコンを選択してタイルを編集します。
- チャートタイプを折れ線グラフに設定します。
- X軸を
Dateに設定します。 - Y軸を
Total Revenueに設定します。
- 必要に応じてタイルのサイズを変更し、保存を選択します。
- ダッシュボードを表示 > ダッシュボードを実行を選択します。
ダッシュボードの生成には数分かかる場合があります。カスタムダッシュボードの作成を参照してください。
ステップ3:追加のOrder Placed指標を追加する(オプション)
保存済みクエリを個別に作成し、それぞれを独自のタイルとして追加します(ダッシュボードあたり最大10タイル)。
日次の平均注文額と注文件数
1
2
3
4
5
6
7
8
9
10
SELECT
DATE_TRUNC('day', TO_TIMESTAMP_NTZ(TIME))::DATE AS "Date",
AVG(PARSE_JSON(PROPERTIES):total_value::NUMBER(18, 2)) AS "Average Order Value",
COUNT(*) AS "No. of Orders"
FROM USERS_BEHAVIORS_CUSTOMEVENT_SHARED
WHERE NAME = 'ecommerce.order_placed'
AND TO_TIMESTAMP_NTZ(TIME) >= DATEADD(day, -60, CURRENT_TIMESTAMP())
AND TO_TIMESTAMP_NTZ(TIME) <= CURRENT_TIMESTAMP()
GROUP BY 1
ORDER BY 1;
X軸に Date、Y軸に両方の指標を設定した折れ線グラフまたは棒グラフを使用します(表示したくない列は選択を解除してください)。
日次の新規購入者とリピート購入者
このパターンは、各ユーザーの最初の ecommerce.order_placed 日とそれ以降の購入日を比較します。クエリビルダーのウィンドウがレポート期間全体をカバーしている場合(例: デフォルトの60日間ウィンドウ)に最も正確です。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
WITH order_days AS (
SELECT DISTINCT
USER_ID,
DATE_TRUNC('day', TO_TIMESTAMP_NTZ(TIME))::DATE AS purchase_day
FROM USERS_BEHAVIORS_CUSTOMEVENT_SHARED
WHERE NAME = 'ecommerce.order_placed'
),
first_purchase AS (
SELECT
USER_ID,
MIN(purchase_day) AS first_day
FROM order_days
GROUP BY USER_ID
),
per_day_purchasers AS (
SELECT DISTINCT
USER_ID,
purchase_day
FROM order_days
)
SELECT
p.purchase_day AS "Date",
COUNT(DISTINCT CASE
WHEN f.first_day = p.purchase_day THEN p.USER_ID
END) AS "New Purchasers",
COUNT(DISTINCT CASE
WHEN f.first_day < p.purchase_day THEN p.USER_ID
END) AS "Returning Purchasers"
FROM per_day_purchasers AS p
INNER JOIN first_purchase AS f
ON p.USER_ID = f.USER_ID
GROUP BY 1
ORDER BY 1;
注文明細からの商品カテゴリ
products 配列をフラット化し、カテゴリフィールドでフィルターします。異なる商品メタデータキーを使用している場合は、metadata.category を置き換えてください。
1
2
3
4
5
6
7
8
9
10
11
SELECT
f.value:metadata:category::STRING AS "Product Category",
COUNT(*) AS "Line Items"
FROM USERS_BEHAVIORS_CUSTOMEVENT_SHARED,
LATERAL FLATTEN(INPUT => PARSE_JSON(PROPERTIES):products) f
WHERE NAME = 'ecommerce.order_placed'
AND f.value:metadata:category::STRING IS NOT NULL
AND TRIM(f.value:metadata:category::STRING) != ''
AND LOWER(TRIM(f.value:metadata:category::STRING)) != 'undefined'
GROUP BY 1
ORDER BY 2 DESC;
セグメント別の購入数と売上(セグメント分析)
これには、レポート対象のセグメントでセグメント分析トラッキングが有効になっている必要があります。日付ピッカーにはSQL変数を使用してください。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
WITH event_conversions AS (
SELECT
user_id,
time,
TRY_CAST(GET_PATH(PARSE_JSON(PROPERTIES), 'total_value')::string AS FLOAT) AS price,
id AS purchase_event_id,
f.value::string AS user_segment_membership_id
FROM USERS_BEHAVIORS_CUSTOMEVENT_SHARED,
LATERAL FLATTEN(input => user_segment_membership_ids) AS f
WHERE NAME = 'ecommerce.order_placed'
AND time > {{start_date.${Start Date}}}
AND time < {{end_date.${End Date}}}
)
SELECT
user_segment_membership_id AS "Segment Analytics Id",
COUNT(DISTINCT purchase_event_id) AS "Total Purchases",
ROUND(SUM(price), 2) AS "Total Revenue"
FROM event_conversions
GROUP BY 1
ORDER BY 3 DESC;
その他の組み込みeコマースレポート
| レポート | 使用するタイミング |
|---|---|
| Revenue - Last Touch Attribution | キャンペーンまたはキャンバス別のラストタッチアトリビューション売上 |
| カスタムイベントレポート | 推奨イベントのイベント件数と頻度 |
| キャンペーンまたはキャンバスのコンバージョン | ecommerce.order_placed が1次コンバージョンイベントの場合 |