データ登録
データ登録を行う前に、MaxCompute(旧称 ODPS)をアクティブ化し、MaxComputeプロジェクトをバインドし、MaxComputeテーブルを登録していることを確認してください。 このテーブルは、パフォーマンス統計収集のための中間テーブルであり、実験レポートのソーステーブルでもあります。このテーブルは、user_id、exp_id、およびディメンションフィールドを複合主キーとして使用します。複合主キーは、特定の実験におけるユーザーの指標(インプレッション数やクリック数など)を示します。たとえば、国をディメンションフィールドとして設定し、このテーブルを user_id、国、および exp_id によって収集される中間統計テーブルとして使用できます。単一次元指標と派生指標の設定は、この中間テーブルに依存します。実験レポートのソーステーブルを理解する前に、次の図に示すように、実験全体のアーキテクチャを理解しておく必要があります。

PAI-Rec は、Alibaba Cloud が提供する推奨サービスです。このサービスは、実験情報が取得される設定センターの SDK を統合します。推奨サービスから返される応答には、実験 ID (exp_id) とリクエスト ID (reqid) が含まれます。
ユーザーがアプリで操作を実行すると、アプリのフロントエンドイベント追跡タスクによって行動ログが MaxCompute に返されます。実験レポートのソーステーブルは、SQL ベースの統計収集中に生成されます。設定センターで複数の指標が設定されると、SQL ステートメントが動的に組み立てられ、実験レポートのソーステーブルから統計が収集され、結果が Hologres データベースに保存されます。PAI-Rec コンソールの パフォーマンスレポート ページで指標データをクエリできます。
I. オフライン実験レポート
オフライン実験レポートのソーステーブルを生成するためのコード
CREATE TABLE IF NOT EXISTS experiment_report (
user_id STRING COMMENT 'ユーザー ID',
exp_id STRING COMMENT '実験 ID',
exposure_count BIGINT COMMENT '露出回数',
click_count BIGINT COMMENT 'クリック数',
like_comment_collect_count BIGINT COMMENT 'いいね数'
)
PARTITIONED by (dt STRING COMMENT '日付')
STORED AS ALIORC;
INSERT OVERWRITE TABLE experiment_report PARTITION (dt = '${bdp.system.bizdate}')
SELECT user_id
,exp_id
,SUM(IF(event == 'expose',1,0))
,SUM(IF(event == 'click',1,0))
,SUM(IF(event IN ('like','comment','collect'),1,0))
FROM rec_sln_demo_behavior_table_v1
WHERE ds = '${bdp.system.bizdate}'
GROUP BY user_id
,exp_idオフライン実験レポートのソーステーブルのフィールド
フィールド | 説明 | 必須 | 備考 |
user_id | ユーザー ID | はい | このフィールドの値には、ユーザー ID、デバイス ID、または国際モバイル機器識別番号(IMEI)を指定できます。 |
exp_id | 実験 ID | はい | このフィールドの値は、A/B テストによって返される実験 ID であり、イベント追跡タスクによってログに記録されます。セルフマネージド レコメンデーションサービスを使用する場合は、カスタム実験 ID を指定できます。例: exp_id:ER1_L1#EG1#E1_L2#EG2#E2 |
ディメンションフィールド | より詳細なパフォーマンスレポート統計に使用されます | いいえ | このディメンションフィールドを使用して、統計を収集し、対応するメトリックを表示できます。 たとえば、province フィールドを設定して統計を収集し、さまざまな省での製品パフォーマンスを分析できます。 province や city など、最大 2 つのフィールドを設定できます。3 番目のフィールドを設定すると、組み合わせが多すぎて計算が遅くなります。 共通ディメンションフィールドには、リコール ID (recall_id) を含めることもできます。これは、さまざまなリコールソースのパフォーマンスを分析するために使用されます。まず、PAI-Rec エンジンのバックエンドログを設定する必要があります。pairec_debug_log の詳細については、「その他の設定」をご参照ください。 |
計算フィールド | 複数の計算フィールドを指定できます( show_count (インプレッション) など、複数の計算フィールドを指定できます。 click_count (クリック) | はい | 計算フィールドには数値(インプレッション数、クリック数、表示時間など)を入力する必要があります。 |
dt | 日付フィールド。 | はい | このフィールドの値は yyyyMMdd フォーマットです。 |
hh | 時フィールド。 | いいえ | 24 時間制が使用されます。このフィールドの値の範囲は 00 から 23 です。 |
mm | 分フィールド。 | いいえ | このフィールドの値の有効値は 00 ~ 59 です。 |
ソーステーブルは、ビジネス要件に応じて、毎日オフラインで生成することも、1 時間ごとに生成することもできます (たとえば、DataWorks で 1 時間に 1 回スケジュールして、前の 1 時間のインプレッション、クリック、購入ログデータを収集するなど)。ソーステーブルがオフラインで生成される場合、user_id、exp_id、および dt フィールドが必要です。ソーステーブルが 1 時間ごとに生成される場合、user_id、exp_id、dt、および hh フィールドが必要です。mm フィールドはオプションです。
メトリックは、オフラインメトリックとリアルタイムメトリック (時間単位のレポートに対応) に分けられます。データソースがリアルタイムで生成される場合、オフラインメトリックとリアルタイムメトリックは同じデータソースを共有できます。データソースがオフラインで生成される場合、オフラインメトリックのみを作成でき、リアルタイムメトリックは作成できません。
上記の表のディメンションフィールドはオプションです。ディメンションフィールドを指定すると、指定したディメンションごとに指標を分析できます。たとえば、性別や OS(iOS や Android など)などの一般的なディメンションフィールド別にレポートデータを表示できます。
II. 実験レポートのリアルタイムソーステーブル
実験レポートのソーステーブルを生成するためのコード
CREATE TABLE IF NOT EXISTS experiment_report_real (
user_id STRING COMMENT 'ユーザー ID',
exp_id STRING COMMENT '実験 ID',
exposure_count BIGINT COMMENT '露出回数',
click_count BIGINT COMMENT 'クリック数',
like_comment_collect_count BIGINT COMMENT 'いいね数'
)
PARTITIONED by (
dt string
,hh string
)
STORED AS ALIORC;
INSERT OVERWRITE TABLE experiment_report_real PARTITION (dt = '${bdp.system.bizdate}',hh = '${hour}')
SELECT user_id
,exp_id
,SUM(IF(event == 'expose',1,0))
,SUM(IF(event == 'click',1,0))
,SUM(IF(event IN ('like','comment','collect'),1,0))
FROM rec_sln_demo_behavior_table_v1
WHERE ds = '${bdp.system.bizdate}'
AND hh = hour(now()) -1
GROUP BY user_id
,exp_id;実験レポートのリアルタイムソーステーブルのフィールド
フィールド | 説明 | 必須 | 備考 |
user_id | ユーザー ID | はい | このフィールドの値は、ユーザー ID、デバイス ID、または国際移動体装置識別番号 (IMEI) 番号にすることができます。 |
exp_id | 実験 ID | はい | このフィールドの値は、A/B テストによって返される実験 ID であり、イベントトラッキングタスクによってログに記録されます。セルフマネージドの推奨サービスを使用する場合は、カスタムの実験 ID を指定できます。例: exp_id:ER1_L1#EG1#E1_L2#EG2#E2 |
ディメンションフィールド | OS などのディメンションフィールド | いいえ | 指定したディメンションフィールドに基づいてメトリックをフィルターできます。 |
計算フィールド | show_count (インプレッション) や click_count (クリック) など、複数の計算フィールドを指定できます show_count (表示回数) や click_count (クリック数) など | はい | インプレッション数、クリック数、表示時間など、計算フィールドには数値を入力する必要があります。 |
dt | 日付パーティション | はい | このフィールドの値は yyyyMMdd 形式です。 |
hh | 時間パーティション | はい | 24 時間制が使用されます。このフィールドの値の範囲は 00 から 23 です。 |
mm | 分パーティション | いいえ | このフィールドの値の範囲は 00 から 59 です。 |
結果テーブルのフィールドは、ディメンションフィールドを除いて固定です。結果テーブルのディメンションフィールドの定義がソーステーブルの定義と一致していることを確認してください。
オフライン指標とリアルタイム指標は結果テーブルを共有できません。3 つの時間フィールドのうち、オフライン指標の結果テーブルには dt フィールドのみが必須であり、リアルタイム指標の結果テーブルには dt フィールドと hh フィールドが必須です。
実験レポートのソーステーブルを取得したら、PAI-Rec コンソールの [データ登録] ページに移動して MaxCompute テーブルを追加できます。[データ登録] ページにアクセスするには、左側のナビゲーションウィンドウで [メトリック管理] > [データ登録] を選択します。
デフォルトの Hologres テーブルを使用して、指標の計算結果を書き戻すことをお勧めします。このテーブルはリソースを消費しません。システムによってテーブルが自動的に作成され、関連する指標データが保存されます。デフォルトの Hologres テーブルの代わりに、作成した Hologres テーブルを使用することもできます。
III. MaxCompute テーブルの登録
データテーブルの作成 をクリックします。表示されるパネルで、MaxCompute プロジェクトを選択し、追加する MaxCompute データテーブルを選択し、データテーブルの名前を指定して、インポート をクリックします。
登録したデータテーブルのフィールドが変更された場合は、できるだけ早くデータテーブルを再インポートすることをお勧めします。そうしないと、システムが変更されたフィールドを認識しない可能性があります。

フィールド設定
登録されたデータテーブルは自動的にリストに表示されます。データテーブルの [アクション] 列にある [フィールドの表示] をクリックして、データテーブルのフィールドを表示または変更できます。user_id、exp_id、および dt フィールドは必須です。これらのフィールドは、特定の日 (dt) の一連の実験 (exp_id) におけるユーザー (user_id) のインプレッション、クリック、いいねなどの行動の総数を表します。カスタムメトリックは、このテーブルに基づいて定義および計算されます。

ディメンションフィールド
前のテーブルに 1 つまたは 2 つのディメンションフィールドを追加できます。たとえば、city をディメンションフィールドとして設定すると、実験レポートでさまざまな都市ディメンションでの実験の比較効果を表示できます。city と gender をディメンションフィールドとして設定すると、実験の比較結果はこれら 2 つのフィールドの組み合わせに基づきます。