PAI-Rec推荐系统开发平台-运营工具-数据准备

更新时间:
复制 MD 格式

本文档介绍为流量调控做数据准备、数据注册的过程

数据准备

1. 实时行为数据

DataHub准备一个实时行为Topic,至少需要包括用户ID、物品ID、实验ID和事件类型(如点击、购买、播放等)。用来统计生产环境下调控任务的实时流量。

2. 用户表

MaxCompute 上准备一张用户表,并在特征平台(FeatureStore)上注册为FeatureView,包含的字段至少包含用户ID和圈选用到的特征字段。如:您想只对一线城市的用户进行流量调控,那至少要有一个城市等级字段。

用来圈选流量调控对哪些用户生效,如果不需要对用户圈选,可以准备一张空表。

3. 物品表

MaxCompute 上准备一张物品表,并在特征平台(FeatureStore)上注册FeatureView,用来圈选调控池,即哪些物品参与调控,和用户表一样,至少要包含物品ID字段和特征字段。此处不能为空表。

数据注册

1. 行为表

数据注册页面,选择表类型为行为表,数据源类型选择DataHub数据表名称为自定义名称,选择Datahub项目名称和实时行为数据Topic ,选择完之后会自动导入TopicSchema。

然后分别指定 user_iditem_idevent_typeevent_timeevent_time_format实验ID字段分别是Schema中的哪个字段。

行为设置(行为枚举值)中,主要设置event_type有哪些值以及中文的行为名称,一般情况下,有 expose、click、like等,那可以设置为 expose:曝光、click:点击,like:喜欢。

2. 物品表

数据注册页面,选择表类型为物品表数据表名称为自定义名称,选择 FeatureStore项目,选择特征实体(item侧的),选择目标的特征视图

选品特征中,配置字段包括物品ID(STRING 类型)和选品特征字段,需要哪些选品特征字段就配置哪些。

3. 用户表

数据注册页面,选择表类型为用户表数据表名称为自定义名称,选择 FeatureStore项目,选择特征实体(user侧的),选择特征视图。和物品表一样,需要哪些圈人特征,就选择并配置哪些。

进阶用法

在正常召回路径,按量或者按照次数调控的物品可能不能被完全召回出来,需要单独做一张召回表和一路召回。为了提高召回效率,已经达成调控目标的物品就不再召回,需要每半小时更新一次召回表是否完成调控目标字段is_complated。

1. 同步实时行为数据

datahub的实时行为数据rec_sln_demo_behavior_table_v1,pairec_debug_log_prepub落到MaxCompute rec_sln_demo_behavior_table_json_online_v1,pairec_debug_log_prepub上。

  1. 登录 DataHub ,进入行为表的topic列表。

  2. 点击同步,新建MaxCompute connector。

  3. 填入信息后,点击创建。

2. 更新召回表

  1. 计算曝光次数,更新是否完成调控目标字段is_complated,在DataWorks内新建odps sql 节点内容如下,配置ODPS SQL 定时调度任务,以 30 分钟为周期增量更新曝光数据。

    INSERT OVERWRITE TABLE item_table PARTITION (ds = '${bdp.system.bizdate}')
    WITH tmp_a AS 
    (
        SELECT item_id
        FROM   item_table
        WHERE  ds = '${bdp.system.bizdate}'
    )
    ,tmp_b AS 
    (
        SELECT  *
        FROM  (
                SELECT item_id
                       ,COUNT(*) cnt
                FROM (
                        SELECT  CAST(GET_JSON_OBJECT(content,'$.item_id') AS BIGINT) item_id
                                ,GET_JSON_OBJECT(content,'$.exp_id') exp_id
                                ,GET_JSON_OBJECT(content,'$.request_id') request_id
                        FROM    rec_sln_demo_behavior_table_json_online_v1
                        WHERE   ds = TO_CHAR(DATEADD(TO_DATE('${bdp.system.bizdate}','yyyymmdd'),+1,'dd'),'yyyymmdd')
                        AND     GET_JSON_OBJECT(content,'$.request_id') != ''
                    ) 
                GROUP BY item_id
              ) 
        WHERE cnt > 30
    )SELECT a.item_id
            ,CASE WHEN b.item_id IS NOT NULL THEN 0
                  ELSE 1
            END AS is_complated
    FROM tmp_a a
    LEFT JOIN tmp_b b
    ON a.item_id = b.item_id
    ;
    
    INSERT OVERWRITE TABLE item_table_prepub PARTITION (ds = '${bdp.system.bizdate}')
    WITH tmp_a AS 
    (
        SELECT  item_id
        FROM    item_table_prepub
        WHERE   ds = '${bdp.system.bizdate}'
    )
    ,tmp_b AS 
    (
        SELECT  *
        FROM    (
                    SELECT  item_id
                            ,COUNT(*) cnt
                    FROM    (
                                SELECT  `request_id`
                                        ,SPLIT_PART(col1_new,':',1) AS item_id
                                        ,exp_id
                                FROM    pairec_debug_log_prepub
                                LATERAL VIEW EXPLODE(SPLIT(`items`,'},')) adTable AS col1_new
                                WHERE   `module` = 'recommend'
                                AND     ds = TO_CHAR(DATEADD(TO_DATE('${bdp.system.bizdate}','yyyymmdd'),+1,'dd'),'yyyymmdd')
                            ) 
                    GROUP BY item_id
                ) 
        WHERE   cnt > 30
    )SELECT  a.item_id
            ,CASE   WHEN b.item_id IS NOT NULL THEN 0
                    ELSE 1
            END AS is_complated
    FROM    tmp_a a
    LEFT JOIN tmp_b b
    ON      a.item_id = b.item_id
    ;
  2. 同步item_table 到featureDB用于召回。点击FeatureStore的数据同步,粘贴同步代码,依旧部署半小时粒度的 ODPS SQL 定时调度任务。

    在 FeatureStore 特征视图列表中,找到目标特征视图(如 home_feed_new_item_1500_v2),单击右侧的数据同步

    进入 DataWorks 数据同步任务配置页面,选择运行方式为集群独享资源组,在代码编辑区域粘贴 FeatureStore 提供的同步代码,完成后部署任务。