全部產品
Search
文件中心

Artificial Intelligence Recommendation:資料註冊與欄位配置

更新時間:Jul 18, 2025

資料註冊

資料註冊需要您已經開通MaxCompute、繫結項目,再註冊MaxCompute表,該註冊表是效果統計的中間表(實驗報表來源表),即以user_id、exp_id、維度指標作為聯合主鍵統計的資料表。表示某個使用者在某個實驗下的曝光、點擊等指標,也可以增加國家維度作為“user_id+國家+exp_id”下的中間統計表。後面配置單維指標和衍生指標都依賴這個中間表。在具體講實驗報表來源表之前,我們回顧一下實驗的整體架構,如下圖:

image.png

PAI-Rec 引擎是我們的建議服務,裡面整合了配置中心的 SDK,實驗資訊從配置中心擷取到。在建議服務返回介面中,會記錄實驗id(exp_id), 以及請求的標識(reqid)等。

當使用者在App上操作產生行為時,行為日誌會通過App上的前端埋點迴流到 ODPS(即MaxCompute) 中。在“SQL統計”環節,產出“實驗報表來源表”。在配置中心配置了若干個指標後,我們會動態組裝 SQL, 然後對“實驗報表來源表”進行計算、統計,並把結果存到 Hologres 中。在實驗報表頁面,可以查詢到指標資料。

一、離線實驗報表

產生離線“實驗報表來源表”的代碼

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

使用者標識,可以是使用者的 uid, 也可以是裝置 devcie_id, imei 等

exp_id

實驗ID

ab 服務返回的實驗id, 通過埋點迴流。如果是使用者的自己的建議服務,設定自訂的標識即可。exp_id:ER1_L1#EG1#E1_L2#EG2#E2

維度欄位

用於更細粒度的統計效果報表

可以根據此維度欄位統計、展示對應的指標。

例如設定一個省(province)欄位,按照不同的省來統計,分析產品在不同省的效果。

最多設定兩個欄位如province和city,當設定第三個欄位的時候組合太多,導致計算非常慢。

常見的維度欄位還可以是召回ID(recall_id),即分析不同的召回源的效果。需要先設定PAI-Rec引擎的後端日誌,參考其他配置中的pairec_debug_log。

計算欄位

計算欄位可以是多個,

如曝光次數:show_count;

點擊次數:click_count

計算欄位是使用者填寫的數實值型別,比如曝光數,點擊數,觀看時間長度等

dt

日期分區

格式:yyyyMMdd

hh

小時分區

24小時制, 00 ~ 23

mm

分鐘分區

00 ~ 59

來源表可以離線按天產出,也可以小時級報表產出(例如DataWorks中每小時調度一次,統計前一個小時的曝光、點擊、購買日誌資料),主要看客戶的業務需求。如果是離線產出, user_id, exp_id, dt 是必須的。 如果是小時級報表,user_id,exp_id,dt,hh 是必須的,mm 分區不是必須的。

指標分為離線和即時(對應小時級報表)。如果是即時產出的資料來源,離線、即時指標可以共用一個資料來源。如果是離線產出的資料來源,只能建立離線指標,無法建立即時指標。

上面的維度欄位也不是必需的,加上維度欄位可以對指標進行維度分析。比如常見的維度欄位有性別、作業系統(IOS, 安卓)等。這樣報表的資料可以分 男女,ios 和 安卓進行查看。

二、即時實驗報表來源表

產生“實驗報表來源表”的代碼

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

使用者標識,可以是使用者的 uid, 也可以是裝置 devcie_id, imei 等

exp_id

實驗id

ab 服務返回的實驗id, 通過埋點迴流。如果是使用者的自己的建議服務,設定自訂的標識即可。exp_id:ER1_L1#EG1#E1_L2#EG2#E2

維度欄位

比如作業系統 os

可以根據此維度欄位過濾對應的指標

計算欄位

計算欄位可以是多個,

如曝光:show_count;點擊:click_count

計算欄位是使用者填寫的數實值型別,比如曝光數,點擊數,觀看時間長度等

dt

日期分區

格式:yyyyMMdd

hh

小時分區

24小時制, 00 ~ 23

mm

分鐘分區

00 ~ 59

結果表欄位基本都是固定的,只有維度欄位是可變的。維度欄位的定義與來源表中的定義保持一致即可。

離線指標和即時指標不能混用一個結果表。離線指標結果表只需要有 dt 日期欄位即可。即時指標至少要有 hh 小時欄位 。

有了“實驗報表來源表”之後開啟控制台“指標管理-資料註冊”頁面,即可選擇新增MaxCompute資料表。

建議使用者直接使用系統預設的Hologres表(不佔用使用者資源)用於指標計算結果的回寫,系統會自動為您建表、儲存相關指標資料。當然客戶也可以使用自己的Hologres執行個體表,而不用預設的Hologres表。

三、新增註冊MaxCompute表

單擊新增資料表,需要選擇綁定好的MaxCompute專案空間,並選擇要新增的MaxCompute當中的資料表,並自訂一個名稱,點擊開始匯入即可匯入表中資料。

說明

若您註冊的資料表欄位結構發生變化,請及時執行重新匯入的操作,否則系統可能無法識別到欄位變更。

image.png

欄位配置

註冊好的資料表會自動出現在列表中,您可以點擊查看欄位按鈕查看資料表中的欄位,對欄位和相關資訊進行核對或編輯。其中user_id 、exp_id 、dt欄位是必須要有的欄位,表示某個使用者(user_id)在某天(dt)在一組實驗(exp_id)中的曝光、點擊、點贊等行為的次數總和。自訂指標就是基於這個表來定義和計算。

image

維度欄位

在上面的表中可以增加1到2個維度欄位,例如設定一個city欄位作為維度,則在實驗報表中可以查看不同city維度下的實驗對比效果。如果設定city和gender兩個維度欄位,則是這兩個欄位組合的實驗對比結果。