标签加工
标签上线流程
这周开始,算是真正开始在银河+系统的支持下,根据业务方的需求对标签进行加工并上线,整个流程一点点清晰起来了。就争取在思维清晰的情况下,对标签的上线流程做一些回忆总结吧。
根据需求建立新的标签。
A、老系统下,先生成窄表(如,DMT_UPF_NARROW_S_D_0000780),该表的字段规定为(常规字段 elt_dt,user_id,tag_cd;分区字段 dt,tag_value),后续步骤中生成宽表,进而为标签系统中的两个功能提供数据支持,(功能一,计算人群数量,数据推到clickhouse进行操作;功能二,生成用户画像,进行圈人的操作,对每一个标签产生一个bitmap的数据结构以提升操作速度,bitmap的大小由用户pin的个数决定)。
B、新系统下,通过perl脚本的配置:
直接构建小宽表(如,保险过保 -dmxupf_biz_jd_usr_pin_insu_bxpd_ordr_vaild_status_s_d;保险核保 -dmxupf_biz_jd_usr_pin_insu_bxpd_chk_ordr_s_d),每个小宽表紧接着都会和全量京东用户pin唯一编码表 - dmxbc_offset_jdpin_i_d进行撞击找出相应的pin。小宽表再构成中宽表(如保险用户标签聚合表(核保&过保)- dmxupf_width_biz_jd_usr_pin_insu_s_d;消费金融标签宽表-dmxupf_width_biz_jd_usr_pin_csf_s_d;理财用户标签聚合宽表-dmxupf_width_biz_jd_usr_pin_fin_s_d),所有中宽表再构成大宽表(京东用户pin全量标签表 -dmxupf_width_jd_usr_pin_all_tags_s_d)。其上中宽表和大宽表均放在模型(5K_实体标签汇总(width))下。值得注意的是,中宽表和大宽表在进行作业配置时,需在表结构中添加相应的字段(新引入的标签编号),同时,大、中宽表的表结构中引入了对于pin的offset值,将string转换成唯一数字编码。
窄表
user_pin | 名词英文名 | tag_value(枚举值) |
---|---|---|
pin1 | 是否用过商城app | 1 |
pin2 | 是否购买过保险 | 1 |
pin2 | 是否用过商城app | 1 |
pin1 | 是否购买过保险 | 0 |
宽表
user_pin | 是否用过商城app | 是否购买过保险 | 其他标签。。。 |
---|---|---|---|
pin1 | 1 | 0 | x |
pin2 | 1 | 1 | x |
标签加工流程
画像系统下,标签需求的加工流程: 重点
根据标签需求建立相应的perl脚本作业,通过指定buf[x]实现对相应标签需求的实现,作业线上布置时,需要根据标签字段定义实体表(pin,tag1,tag2,tag3…),所在表层为:biz业务实体表。
对于同一需求,单个作业无法在规定时间内跑完,可以将大作业拆成多个小作业并行执行,注意将各小作业生成的表提前合成小窄表(根据业务方所提需求-标签进行第一次自主归类)如,商城Alpha18个标签
每次需求合并的小窄表根据所属业务线依次并入各业务线的小宽表DMX_UPF_WIDTH_JD_USER_PIN_CRD_S_D 众筹DMX_UPF_WIDTH_JD_USER_PIN_JDMALL_ALL_ALPHA_ADD_S_D 商城
DMX_UPF_WIDTH_JD_USER_PIN_INSU_S_D 保险注意,新加标签所在小窄表,需要LEFT JOIN 所在业务线的小宽表;同时,对应小宽表作业的实体表中需要添加相应新标签字段(新需求)
得到各业务线的小宽表之后,整理并入画像系统的大宽表
DMXUPF_WIDTH_JD_USER_PIN_ALL_TAGS_S_D 用户标签全量表