构建画像系统体系

数据架构

标签体系

用户属性标签体系

用户行为标签体系

用户风险指标体系

用户消费维度指标体系

集团会员基础标签体系

支付会员基础标签体系

保险会员基础标签体系

信贷会员基础标签体系

会员标签体系

理财会员基础标签体系

消费金融会员基础标签体系

标签表模型设计

横表

以 Hive 为例,我们最常用的就是横表,也就是一个 key,跟上它的所有标签。

横表有什么问题?

1:标签的数量会随时增加,横表需要不断新增字段并重刷数据
2:不同的标签计算频率可能不一致
3:不同标签的生成时间可能不一致
4:大量空缺的标签会导致存储稀疏

竖表

竖表其实就是将标签都拆开,一个用户有多少标签,那么在这里面就会有几条数据。

竖表有什么问题?

不利于查询。
比如:
“我们想看年龄在 23-30 之间,月薪在 10-20k 之间,喜欢听古典音乐的女性”,这种多标签查询条件组合情况在竖表中就不太容易支持。

两者结合,标签生成阶段使用竖表,最终生成一个标签横表,对外提供标签查询服务。

标签开发流程

需要开发的表梳理

竖表加工示例

-----------------------------------------------step01建表:用户消费属性标签表
CREATE TABLE dw.dw_member_trade_action_d(
user_id          string   comment '用户id'
,tag_id          string   comment '标签id'
,tag_name        string   comment '标签名称'
,cnt             string   comment '标签值'
,tag_type_id     string   comment '标签类型'
,reserve1        string   comment '预留字段1'
,reserve2        string   comment '预留字段2'
)
comment '用户消费属性标签表' 
PARTITIONED BY (data_date STRING COMMENT '数据日期',business_cd STRING COMMENT '业务线');


---------------------------------------------step02标签计算(这几标签计算只列举部分标签的计算逻辑,其他标签相同)
---------------------------------------------计算会员近1个月的成功支付订单数
insert overwrite table dw.dw.dw_member_trade_action_d partition(data_date= "${hivevar:statis_date}",business_cd='jt')
select		
        t.acct_no     as user_id                             --用户id
		,'030000122'    as tag_id                            --自定义的标签id
		,'pay_cnt_1m'     as tag_name                          --标签名称
		,,sum(t2.pay_cnt_1m)        as pay_cnt_1m        as cnt       		 --近1个月的成功支付订单数
        ,'01'      as tag_type_id                               --标签类型
		,null      as reserve1
		,null      as reserve2
FROM      dws.mls_member_visit_base_info_all
WHERE     PV_DATE>FINANCE.AddMonth('${hivevar:statis_date}',-3) 
AND       PV_DATE<=${hivevar:yesterday} 
GROUP BY  acct_no
;


---------------------------------------------基金历史购买总金额
insert overwrite table dw.dw.dw_member_trade_action_d partition(data_date= "${hivevar:statis_date}",business_cd='fin')
select		
        t.acct_no     as user_id                             --用户id
		,'030000123'    as tag_id                            --自定义的标签id
		,'fnd_prch_amt'     as tag_name                          --标签名称
		,SUM(T1.TOT_AMT)  as cnt     ----基金历史购买总金额
        ,'01'      as tag_type_id                               --标签类型
		,null      as reserve1
		,null      as reserve2
FROM dwd.sor_txn_fnd_prch_order T1
WHERE t1.fund_id not in('1','2','106100','105450','105451')   ----剔除天天利财
  and t1.SYS_ST='14'  --申购成功
  and T1.PAY_DATE IS NOT NULL 
GROUP BY  acct_no
;



---------------------------------------------近7天理财次数
insert overwrite table dw.dw.dw_member_base_info_d partition(data_date= "${hivevar:statis_date}",business_cd='fin')
select		
        t.acct_no     as user_id                             --用户id
		,'030000223'    as tag_id                            --自定义的标签id
		,'fin_prch_cnt_7days'     as tag_name                          --标签名称
		 , count(CASE WHEN t.order_date>=${hivevar:before7day}  and t.order_date<=${hivevar:yesterday} THEN t.order_id END)    as cnt        --近7天理财次数
        ,'01'      as tag_type_id                               --标签类型
		,null      as reserve1
		,null      as reserve2
 from dwd.dpa_fin_order_collection t
GROUP BY  acct_no
;




---------------------------------------------保险理财收益金额-12个月内 
insert overwrite table dw.dw.dw_member_base_info_d partition(data_date= "${hivevar:statis_date}",business_cd='ins')
select		
        t.acct_no     as user_id                             --用户id
		,'030000423'    as tag_id                            --自定义的标签id
		,'ifs_pft_amt_12m'     as tag_name                          --标签名称
		,round(sum(case when income_date>=${hivevar:month12day} and income_date<=${hivevar:yesterday} then t2.account_value end)/100,2) as cnt        --保险理财收益金额-12个月内 
        ,'01'      as tag_type_id                               --标签类型
		,null      as reserve1
		,null      as reserve2
from fdm_sor.SOR_TXN_INS_DAILY_INCOME t2
where t2.income_date is not null
  and t2.income_date>=${hivevar:month12day} 
  and t2.income_date<=${hivevar:yesterday}
GROUP BY  acct_no
;


---------------------------------------------信贷累计贷款-6个月内 
insert overwrite table dw.dw.dw_member_base_info_d partition(data_date= "${hivevar:statis_date}",business_cd='pls')
select		
        t.acct_no     as user_id                             --用户id
		,'030000428'    as tag_id                            --自定义的标签id
		,'tb_loan_amt_1m'     as tag_name                          --标签名称
		 round(sum(case when substr(t.loan_time,1,10)>=${hivevar:month1day} and substr(t.loan_time,1,10)<=${hivevar:yesterday} then t.loan_amount/100 end),2)   as cnt        --信贷累计贷款-1个月内 
        ,'01'      as tag_type_id                               --标签类型
		,null      as reserve1
		,null      as reserve2
from fdm_sor.SOR_TXN_INS_DAILY_INCOME t2
where t2.income_date is not null
  and t2.income_date>=${hivevar:month12day} 
  and t2.income_date<=${hivevar:yesterday}
GROUP BY  acct_no
;

先计算竖表中的每个标签,然后写进竖表不同分区中。

最后将竖表合并成横表,对外提供标签查询服务。

横表加工示例


-----------------------------------------------step01建表:理财会员标签表
CREATE TABLE `dw.dw_member_userprofile_fin`(
 acct_no                    string COMMENT '用户id' 
,fin_mem_sts                string  comment '理财开户日期'
,fin_is_fzn                 string  comment '基金会员用户类型'
,fin_is_bind_card           string  comment '是否设置零钱宝自动转入'
,fin_is_cur_bind_card       string  comment '零钱宝非定期理财大客户'
,fin_is_epp_bag_user        string  comment '理财资产大额变动用户'
,fin_is_scan                string  comment '定期理财沉睡用户'
,fin_is_by_scan             string  comment '定期理财到期还款'
,fin_is_quick_fin           string  comment '理财AUM(资产管理规模)分级'
,fin_is_fin_user            string  comment '理财用户整体生命周期'
,fin_is_bill_fin_user       string  comment '理财会员活跃度等级'
,fin_is_fnd_user            string  comment '零钱宝会员活跃度等级'
,fin_is_bof_prch            string  comment '基金会员活跃度等级'
,fin_is_chp_user            string  comment '定期理财会员活跃度等级'
,fin_is_ins_user            string  comment '理财会员价值度等级'
,fin_is_cfc_user            string  comment '基金会员价值度等级'
,fin_is_ccr_user            string  comment '定期理财会员价值等级'
,fin_lifecycle              string  comment '是否零钱宝潜逃用户'
,fin_actv_lvl_tm            string  comment '是否零钱宝流失用户'
,fin_actv_lvl               string  comment '是否零钱宝僵尸用户'
,fin_value_lvl              string  comment '是否基金潜逃用户'
,fin_loyal_lvl              string  comment '是否基金流失用户'
,fin_cosm_drive             string  comment '是否基金僵尸用户'
,fin_disposition            string  comment '是否基金0元用户'
,fin_gds_cgy_love           string  comment '是否定期理财变现用户'
,fin_work_dt_vst_lvl        string  comment '定期理财变现频次'
,fin_weekend_vst_lvl        string  comment '定期理财持有类型'
,fin_work_tm_vst_lvl        string  comment '定期理财用户-年化收益偏好'
,fin_rest_tm_vst_lvl        string  comment '定期理财用户-投资期限偏好'
,fin_night_vst_lvl          string  comment '会员访问终端偏好'
,fin_commute_vst_lvl        string  comment '会员访问深度_页面数'
,fin_rgst_from              string  comment '会员访问深度_次数'
,fin_rgst_tml               string  comment '会员访问深度_跳出率'
,fin_tml_love               string  comment '会员访问深度_访问停留时间'
,fin_chn_love               string  comment '会员访问深度_页面停留时间'
,fin_vst_pg_lvl             string  comment '首次购买时间'
,fin_vst_cnt_lvl            string  comment '浏览票据/定期理财产品列表页,且不包含已经理财成功(含pc&客户端)'
,fin_vst_bounce_lvl         string  comment '浏览基金理财详情页,且不包含已经理财成功(含pc&客户端)'
,fin_vst_staytm_lvl         string  comment '浏览零钱宝首页,未转入(含pc&客户端)'
,fin_pg_staytm_lvl          string  comment '是否定期理财未转入用户'
,fin_epp_lifecycle          string  comment '定期理财-到期剩余时间'
,fin_epp_bag_actv_lvl       string  comment '最近被动扫码时间'
,fin_epp_scan_actv_lvl      string  comment '是否金融APP交易用户'
,fin_epp_byscan_actv_lvl    string  comment '是否交易用户'
,fin_is_epp_tran            string  comment '最近一次交易使用终端'
,fin_epp_tran_lvl           string  comment '最近一次交易类型'
,fin_is_bank_tran           string  comment '最近一次交易理财渠道'
,fin_bank_tran_lvl          string  comment '余额不足交易次数'
,fin_is_crdt_crd_tran       string  comment '最新登陆时间'
,fin_crdt_crd_tran_lvl      string  comment '首笔消费-理财方式'
,fin_is_mbl_fill            string  comment '最近消费-理财方式'
,fin_mbl_fill_lvl           string  comment '最近一笔消费时间'
,fin_is_sch_crd_user        string  comment '消费笔数'
,fin_sch_crd_lvl            string  comment '消费金额'
,fin_is_water_chrg          string  comment '消费笔数-理财'
,fin_water_chrg_lvl         string  comment '消费金额-理财'
,fin_is_ele_chrg            string  comment '理财交易笔数占比'
,fin_ele_chrg_lvl           string  comment '理财交易金额占比'
,fin_is_gas_chrg            string  comment '连续两次未使用理财用户'
,fin_gas_chrg_lvl           string  comment '线上消费用户'
,fin_is_tel_chrg            string  comment '线上消费用户'
,fin_tel_chrg_lvl           string  comment '微信上绑定的银行卡'
,fin_is_adsl_chrg           string  comment '花呗理财用户'
,fin_adsl_chrg_lvl          string  comment '信用卡分期理财用户'
,fin_is_mbl_bill_user       string  comment 'PP视频付费会员包用户'
,fin_mbl_bill_lvl           string  comment 'PP体育付费会员包用户'
,fin_is_tv_chrg             string  comment '付费会员'
,fin_tv_chrg_lvl            string  comment '首次消费时间'
,fin_is_gas_crd_user        string  comment '最近一次消费时间'
,fin_gas_crd_lvl            string  comment '最近一次理财方式'
,fin_epp_vst_pg_lvl         string  comment '首次使用理财时间'
,fin_epp_vst_cnt_lvl        string  comment '消费笔数'
,fin_epp_vst_bounce_lvl     string  comment '消费金额'
,fin_epp_vst_staytm_lvl     string  comment '消费笔数-理财'
,fin_epp_pg_staytm_lvl      string  comment '消费金额-理财'
,fin_fin_rgst_dt            string  comment '理财交易笔数占比'
,fin_fin_rgst_days          string  comment '理财交易金额占比'
,fin_fin_rgst_drtn          string  comment '消费笔数-微信理财'
,fin_is_auto_bof_tran       string  comment '消费金额-微信理财'
,fin_fin_aum_lvl            string  comment '消费笔数-理财宝'
,fin_fin_hold_amt           string  comment '消费金额-理财宝'
,fin_fin_lifecycle          string  comment '连续两次未使用理财用户'
,fin_fin_actv_lvl           string  comment '消费时间段偏好(不限理财方式)'
,fin_bof_actv_lvl           string  comment '理财渠道选择偏好(近180天)'
,fin_fnd_actv_lvl           string  comment '用户交易城市(不限理财方式,近180天)'
,fin_bill_actv_lvl          string  comment '用户交易城市(限理财,近180天)'
,fin_fin_value_lvl          string  comment '是否随时会员'
,fin_bof_value_lvl          string  comment '购买随时会员次数(近180天)'
,fin_fnd_value_lvl          string  comment '随时会员线下消费笔数(不限理财方式,近180天)'
,fin_bill_value_lvl         string  comment '随时会员线下消费笔数(限理财,近180天)'
,fin_is_fnd_prch            string  comment '促销类订单数-1个月内(限理财)'
,fin_is_bof_zero_hold       string  comment '促销类订单数-1个月内(限理财)'
,fin_is_bill_cash_user      string  comment '促销类订单数-6个月内(限理财)'
,fin_inv_prd_love           string  comment '促销交易占比(限理财,近180天)'
,fin_inv_risk_love          string  comment '最近7天优惠券领取次数'
,fin_inv_term_love          string  comment '最近15天优惠券领取次数'
,fin_fin_tml_love           string  comment '最近30天优惠券领取次数'
,fin_fin_vst_pg_lvl         string  comment '最近15天优惠券使用率'
,fin_fin_vst_cnt_lvl        string  comment '最近30天优惠券使用率'
,fin_fin_vst_bounce_lvl     string  comment '最近60天优惠券使用率'
,fin_fin_vst_staytm_lvl     string  comment '理财成功页奖励领取偏好'
,fin_fin_pg_staytm_lvl      string  comment '银联码开通与解约'
,fin_fin_fin_tm_1st         string  comment '银联码使用'
,fin_fin_fin_days_1st       string  comment '银联码-交易笔数'
,fin_fin_fin_1st_drtn       string  comment '银联码-交易金额'
,fin_bof_fin_1st_drtn       string  comment '最近一次使用银联码时间'
,fin_bof_fin_last_drtn      string  comment '银联码理财渠道选择偏好'
,fin_bof_hold_drtn          string  comment '交易商户类型偏好'
,fin_is_7d_fnd_fail         string  comment '交易商户城市'
,fin_is_7d_bof_fail         string  comment '银联码优惠券领取次数'
,fin_is_7d_bil_fail         string  comment '银联码优惠券使用次数'
,fin_is_bil_vip             string  comment '银联码优惠券使用率'
,fin_is_fnd_vip             string  comment '促销订单占比'
,fin_is_bof_vip             string  comment '用户累计补贴金额-月度'
,fin_bof_new_prch_7d        string  comment '用户累计补贴金额-年度'
,fin_fin_new_non_prch_7d    string  comment '银联码理财成功页权益领取偏好'
,fin_fin_new_prch_7d        string  comment '是否参加过分享领红包活动'
,fin_bof_new_prch_30d       string  comment '分享领红包参与频次-月度(近30天)'
,fin_fin_new_non_prch_30d   string  comment '分享领红包参与频次-月度(近60天)'
,fin_fin_new_prch_30d       string  comment '自助贩卖机-交易笔数'
,fin_non_2nd_prch           string  comment '自助贩卖机-交易金额'
,fin_non_prch_af_refin      string  comment '最近一次在自助贩卖机理财时间'
,fin_bil_cash_cnt_1m        string  comment '自助贩卖机场景理财方式偏好'
,fin_bil_cash_amt_1m        string  comment '自助贩卖机购买时间段偏好'
,fin_is_chp_focus_user      string  comment '自助贩卖机是否促销偏好用户'
,fin_chp_foucs_attr         string  comment '是否开通乘车码'
,fin_chp_focus_lvl          string  comment '是否解约乘车码'
,fin_is_chp_fin_user        string  comment '乘车开通城市'
,fin_is_chp_lotto_user      string  comment '是否使用乘车码'
,fin_chp_fin_tm_1st         string  comment '是否开通NFC卡'
,fin_chp_fin_days_1st       string  comment '是否解约NFC卡'
,fin_chp_fin_1st_drtn       string  comment 'NFC开通城市'
,fin_chp_first_gz_type      string  comment '是否使用NFC卡(现在拿不到数据)'
,fin_chp_lifecycle          string  comment '公交与地铁偏好'
,fin_chp_actv_lvl           string  comment '交易笔数'
,fin_chp_value_lvl          string  comment '消费金额'
,fin_chp_tml_love           string  comment '最近一次乘车时间'
,fin_chp_vst_pg_lvl         string  comment '是否有过高速扫码消费'
,fin_chp_vst_cnt_lvl        string  comment '高速-最近一次消费时间'
,fin_chp_vst_bounce_lvl     string  comment '是否有过停车消费'
,fin_chp_vst_staytm_lvl     string  comment '停车-最近一次消费时间'
,fin_chp_pg_staytm_lvl      string  comment '工作日乘车偏好'
,fin_chp_is_click_farm      string  comment '否通勤时间乘车偏好度'
,fin_chp_lucky_draw_amt     string  comment '促销类订单数'
,fin_chp_last_buy_cyc       string  comment '促销偏好用户'
,fin_chp_buy_gz_types       string  comment '优惠券领取次数'
,fin_chp_buy_cnt            string  comment '优惠券使用次数'
,fin_chp_reward_type_amt    string  comment '理财成功页奖励领取偏好'
,fin_chp_income_type_amt    string  comment '高速-是否促销偏好用户'
,fin_chp_pv_cyc             string  comment '停车-是否促销偏好用户'
,fin_chp_pv_types           string  comment '停车-理财成功页奖励领取偏好'
,fin_chp_pv_cnt             string  comment '停车-理财方式偏好-30天内'
,fin_chp_7days_nobuys       string  comment '停车-最近15天随机立减使用频次'
,fin_chp_15days_nobuys      string  comment '交易笔数'
,fin_chp_is_1yuan           string  comment '消费金额'
,fin_chp_is_use_coupon      string  comment '是否是便民场景用户'
,fin_chp_coupon_use_cat     string  comment '话费-手机号码充值个数-近30天'
,fin_chp_coupon_use_cyc     string  comment '是否设置话费定期充值'
,fin_chp_coupon_use_cnt     string  comment '生活缴费是否为本人缴费'
,fin_chp_coupon_use_amt     string  comment '电费平均客单价-近30天'
,fin_chp_coupon_ord_amt     string  comment '缴费时间段统计-近180天'
,fin_chp_buy_cat            string  comment '优惠券领取次数'
,fin_chp_buy_dept           string  comment '优惠券使用次数'
,fin_cfc_rgst_dt            string  comment '理财方式偏好-30天内'
,fin_cfc_rgst_days          string  comment '话费-用户充值面值偏好-近30天'
,fin_cfc_rgst_drtn          string  comment '乘坐火车票日期偏好-近60天'
,fin_cfc_open_dt            string  comment '是否购买出行保险'
,fin_cfc_open_drtn          string  comment '加油卡-用户充值面值偏好-近30天'
,fin_cfc_fin_dt_1st         string  comment '转账到银行卡-对象偏好(本人卡/他人卡)-近30天'
,fin_cfc_fin_1st_drtn       string  comment '转账到银行卡-是否理财手续费-近30天'
,fin_cfc_user_src           string  comment '转账到卡-出款银行名称分布'
,fin_cfc_amt                string  comment '还款-对象偏好-近30天'
,fin_cfc_bal                string  comment '还款-是否理财手续费-近30天'
,fin_is_cfc_stages          string  comment '还款金额累计-近3个月'
,fin_is_cfc_flex_use        string  comment '还款金额累计-近6个月'
,fin_is_cfc_overdue         string  comment '信用卡还款张数'
,fin_cfc_overdue_days       string  comment '信用卡还款名称'
,fin_cfc_tml_love           string  comment '是否开通理财'
,fin_is_nonfnc_mem          string  comment '是否开通付款码'
,fin_pupsec_status          string  comment '是否使用付款码'
,fin_chnel_lvl              string  comment '最近一次交易记录'
,fin_chnel_cnt              string  comment '政务-消费笔数-周度(近7天)'
,fin_mbl_auth               string  comment '政务-消费笔数-周度(近15天)'
,fin_actv_type              string  comment '政务-消费笔数-月度(近30天)'
,fin_app_hold               string  comment '政务-是否促销偏好用户'
,fin_cfc_black_list         string  comment '是否关注理财公众号'
,fin_malicious_rgst         string  comment '大转盘参与次数—周度(7天)'
,fin_is_scalper             string  comment '消息提醒点击次数'
,fin_fin_black_list         string  comment '发文点击次数'
  )
COMMENT '理财会员标签表'
PARTITIONED BY (data_date STRING COMMENT '数据日期')
;
    

	
	
-----------------------------------------------step01建表:集团会员基础信息标签表
--------1小时10分钟
insert overwrite table dw.dw_member_userprofile_fin
partition(data_date= "${hivevar:statis_date}")
select	
 acct_no                          
,max(if(t1.tag_name='fin_mem_sts'               ,cnt,null)) as   fin_mem_sts                
,max(if(t1.tag_name='fin_is_fzn'                ,cnt,null)) as   fin_is_fzn                 
,max(if(t1.tag_name='fin_is_bind_card'          ,cnt,null)) as   fin_is_bind_card           
,max(if(t1.tag_name='fin_is_cur_bind_card'      ,cnt,null)) as   fin_is_cur_bind_card       
,max(if(t1.tag_name='fin_is_epp_bag_user'       ,cnt,null)) as   fin_is_epp_bag_user        
,max(if(t1.tag_name='fin_is_scan'               ,cnt,null)) as   fin_is_scan                
,max(if(t2.tag_name='fin_is_by_scan'            ,cnt,null)) as   fin_is_by_scan             
,max(if(t2.tag_name='fin_is_quick_fin'          ,cnt,null)) as   fin_is_quick_fin           
,max(if(t2.tag_name='fin_is_fin_user'           ,cnt,null)) as   fin_is_fin_user            
,max(if(t2.tag_name='fin_is_bill_fin_user'      ,cnt,null)) as   fin_is_bill_fin_user       
,max(if(t2.tag_name='fin_is_fnd_user'           ,cnt,null)) as   fin_is_fnd_user            
,max(if(t2.tag_name='fin_is_bof_prch'           ,cnt,null)) as   fin_is_bof_prch            
,max(if(t2.tag_name='fin_is_chp_user'           ,cnt,null)) as   fin_is_chp_user            
,max(if(t2.tag_name='fin_is_ins_user'           ,cnt,null)) as   fin_is_ins_user            
,max(if(t2.tag_name='fin_is_cfc_user'           ,cnt,null)) as   fin_is_cfc_user            
,max(if(t2.tag_name='fin_is_ccr_user'           ,cnt,null)) as   fin_is_ccr_user            
,max(if(t2.tag_name='fin_lifecycle'             ,cnt,null)) as   fin_lifecycle              
,max(if(t2.tag_name='fin_actv_lvl_tm'           ,cnt,null)) as   fin_actv_lvl_tm            
,max(if(t2.tag_name='fin_actv_lvl'              ,cnt,null)) as   fin_actv_lvl               
,max(if(t2.tag_name='fin_value_lvl'             ,cnt,null)) as   fin_value_lvl              
,max(if(t2.tag_name='fin_loyal_lvl'             ,cnt,null)) as   fin_loyal_lvl              
,max(if(t2.tag_name='fin_cosm_drive'            ,cnt,null)) as   fin_cosm_drive             
,max(if(t2.tag_name='fin_disposition'           ,cnt,null)) as   fin_disposition            
,max(if(t2.tag_name='fin_gds_cgy_love'          ,cnt,null)) as   fin_gds_cgy_love           
,max(if(t2.tag_name='fin_work_dt_vst_lvl'       ,cnt,null)) as   fin_work_dt_vst_lvl        
,max(if(t2.tag_name='fin_weekend_vst_lvl'       ,cnt,null)) as   fin_weekend_vst_lvl        
,max(if(t2.tag_name='fin_work_tm_vst_lvl'       ,cnt,null)) as   fin_work_tm_vst_lvl        
,max(if(t2.tag_name='fin_rest_tm_vst_lvl'       ,cnt,null)) as   fin_rest_tm_vst_lvl        
,max(if(t2.tag_name='fin_night_vst_lvl'         ,cnt,null)) as   fin_night_vst_lvl          
,max(if(t2.tag_name='fin_commute_vst_lvl'       ,cnt,null)) as   fin_commute_vst_lvl        
,max(if(t2.tag_name='fin_rgst_from'             ,cnt,null)) as   fin_rgst_from              
,max(if(t2.tag_name='fin_rgst_tml'              ,cnt,null)) as   fin_rgst_tml               
,max(if(t2.tag_name='fin_tml_love'              ,cnt,null)) as   fin_tml_love               
,max(if(t1.tag_name='fin_chn_love'              ,cnt,null)) as   fin_chn_love               
,max(if(t1.tag_name='fin_vst_pg_lvl'            ,cnt,null)) as   fin_vst_pg_lvl             
,max(if(t1.tag_name='fin_vst_cnt_lvl'           ,cnt,null)) as   fin_vst_cnt_lvl            
,max(if(t1.tag_name='fin_vst_bounce_lvl'        ,cnt,null)) as   fin_vst_bounce_lvl         
,max(if(t1.tag_name='fin_vst_staytm_lvl'        ,cnt,null)) as   fin_vst_staytm_lvl         
,max(if(t1.tag_name='fin_pg_staytm_lvl'         ,cnt,null)) as   fin_pg_staytm_lvl          
,max(if(t1.tag_name='fin_epp_lifecycle'         ,cnt,null)) as   fin_epp_lifecycle          
,max(if(t1.tag_name='fin_epp_bag_actv_lvl'      ,cnt,null)) as   fin_epp_bag_actv_lvl       
,max(if(t1.tag_name='fin_epp_scan_actv_lvl'     ,cnt,null)) as   fin_epp_scan_actv_lvl      
,max(if(t1.tag_name='fin_epp_byscan_actv_lvl'   ,cnt,null)) as   fin_epp_byscan_actv_lvl    
,max(if(t1.tag_name='fin_is_epp_tran'           ,cnt,null)) as   fin_is_epp_tran            
,max(if(t1.tag_name='fin_epp_tran_lvl'          ,cnt,null)) as   fin_epp_tran_lvl           
,max(if(t1.tag_name='fin_is_bank_tran'          ,cnt,null)) as   fin_is_bank_tran           
,max(if(t1.tag_name='fin_bank_tran_lvl'         ,cnt,null)) as   fin_bank_tran_lvl          
,max(if(t1.tag_name='fin_is_crdt_crd_tran'      ,cnt,null)) as   fin_is_crdt_crd_tran       
,max(if(t2.tag_name='fin_crdt_crd_tran_lvl'     ,cnt,null)) as   fin_crdt_crd_tran_lvl      
,max(if(t2.tag_name='fin_is_mbl_fill'           ,cnt,null)) as   fin_is_mbl_fill            
,max(if(t2.tag_name='fin_mbl_fill_lvl'          ,cnt,null)) as   fin_mbl_fill_lvl           
,max(if(t2.tag_name='fin_is_sch_crd_user'       ,cnt,null)) as   fin_is_sch_crd_user        
,max(if(t2.tag_name='fin_sch_crd_lvl'           ,cnt,null)) as   fin_sch_crd_lvl            
,max(if(t2.tag_name='fin_is_water_chrg'         ,cnt,null)) as   fin_is_water_chrg          
,max(if(t2.tag_name='fin_water_chrg_lvl'        ,cnt,null)) as   fin_water_chrg_lvl         
,max(if(t2.tag_name='fin_is_ele_chrg'           ,cnt,null)) as   fin_is_ele_chrg            
,max(if(t2.tag_name='fin_ele_chrg_lvl'          ,cnt,null)) as   fin_ele_chrg_lvl           
,max(if(t2.tag_name='fin_is_gas_chrg'           ,cnt,null)) as   fin_is_gas_chrg            
,max(if(t2.tag_name='fin_gas_chrg_lvl'          ,cnt,null)) as   fin_gas_chrg_lvl           
,max(if(t2.tag_name='fin_is_tel_chrg'           ,cnt,null)) as   fin_is_tel_chrg            
,max(if(t2.tag_name='fin_tel_chrg_lvl'          ,cnt,null)) as   fin_tel_chrg_lvl           
,max(if(t2.tag_name='fin_is_adsl_chrg'          ,cnt,null)) as   fin_is_adsl_chrg           
,max(if(t2.tag_name='fin_adsl_chrg_lvl'         ,cnt,null)) as   fin_adsl_chrg_lvl          
,max(if(t2.tag_name='fin_is_mbl_bill_user'      ,cnt,null)) as   fin_is_mbl_bill_user       
,max(if(t2.tag_name='fin_mbl_bill_lvl'          ,cnt,null)) as   fin_mbl_bill_lvl           
,max(if(t2.tag_name='fin_is_tv_chrg'            ,cnt,null)) as   fin_is_tv_chrg             
,max(if(t2.tag_name='fin_tv_chrg_lvl'           ,cnt,null)) as   fin_tv_chrg_lvl            
,max(if(t2.tag_name='fin_is_gas_crd_user'       ,cnt,null)) as   fin_is_gas_crd_user        
,max(if(t2.tag_name='fin_gas_crd_lvl'           ,cnt,null)) as   fin_gas_crd_lvl            
,max(if(t2.tag_name='fin_epp_vst_pg_lvl'        ,cnt,null)) as   fin_epp_vst_pg_lvl         
,max(if(t2.tag_name='fin_epp_vst_cnt_lvl'       ,cnt,null)) as   fin_epp_vst_cnt_lvl        
,max(if(t2.tag_name='fin_epp_vst_bounce_lvl'    ,cnt,null)) as   fin_epp_vst_bounce_lvl     
,max(if(t2.tag_name='fin_epp_vst_staytm_lvl'    ,cnt,null)) as   fin_epp_vst_staytm_lvl     
,max(if(t1.tag_name='fin_epp_pg_staytm_lvl'     ,cnt,null)) as   fin_epp_pg_staytm_lvl      
,max(if(t1.tag_name='fin_fin_rgst_dt'           ,cnt,null)) as   fin_fin_rgst_dt            
,max(if(t1.tag_name='fin_fin_rgst_days'         ,cnt,null)) as   fin_fin_rgst_days          
,max(if(t1.tag_name='fin_fin_rgst_drtn'         ,cnt,null)) as   fin_fin_rgst_drtn          
,max(if(t1.tag_name='fin_is_auto_bof_tran'      ,cnt,null)) as   fin_is_auto_bof_tran       
,max(if(t1.tag_name='fin_fin_aum_lvl'           ,cnt,null)) as   fin_fin_aum_lvl            
,max(if(t1.tag_name='fin_fin_hold_amt'          ,cnt,null)) as   fin_fin_hold_amt           
,max(if(t1.tag_name='fin_fin_lifecycle'         ,cnt,null)) as   fin_fin_lifecycle          
,max(if(t1.tag_name='fin_fin_actv_lvl'          ,cnt,null)) as   fin_fin_actv_lvl           
,max(if(t1.tag_name='fin_bof_actv_lvl'          ,cnt,null)) as   fin_bof_actv_lvl           
,max(if(t1.tag_name='fin_fnd_actv_lvl'          ,cnt,null)) as   fin_fnd_actv_lvl           
,max(if(t1.tag_name='fin_bill_actv_lvl'         ,cnt,null)) as   fin_bill_actv_lvl          
,max(if(t1.tag_name='fin_fin_value_lvl'         ,cnt,null)) as   fin_fin_value_lvl          
,max(if(t1.tag_name='fin_bof_value_lvl'         ,cnt,null)) as   fin_bof_value_lvl          
,max(if(t1.tag_name='fin_fnd_value_lvl'         ,cnt,null)) as   fin_fnd_value_lvl          
,max(if(t1.tag_name='fin_bill_value_lvl'        ,cnt,null)) as   fin_bill_value_lvl         
,max(if(t1.tag_name='fin_is_fnd_prch'           ,cnt,null)) as   fin_is_fnd_prch            
,max(if(t1.tag_name='fin_is_bof_zero_hold'      ,cnt,null)) as   fin_is_bof_zero_hold       
,max(if(t1.tag_name='fin_is_bill_cash_user'     ,cnt,null)) as   fin_is_bill_cash_user      
,max(if(t1.tag_name='fin_inv_prd_love'          ,cnt,null)) as   fin_inv_prd_love           
,max(if(t1.tag_name='fin_inv_risk_love'         ,cnt,null)) as   fin_inv_risk_love          
,max(if(t1.tag_name='fin_inv_term_love'         ,cnt,null)) as   fin_inv_term_love          
,max(if(t1.tag_name='fin_fin_tml_love'          ,cnt,null)) as   fin_fin_tml_love           
,max(if(t1.tag_name='fin_fin_vst_pg_lvl'        ,cnt,null)) as   fin_fin_vst_pg_lvl         
,max(if(t1.tag_name='fin_fin_vst_cnt_lvl'       ,cnt,null)) as   fin_fin_vst_cnt_lvl        
,max(if(t1.tag_name='fin_fin_vst_bounce_lvl'    ,cnt,null)) as   fin_fin_vst_bounce_lvl     
,max(if(t1.tag_name='fin_fin_vst_staytm_lvl'    ,cnt,null)) as   fin_fin_vst_staytm_lvl     
,max(if(t1.tag_name='fin_fin_pg_staytm_lvl'     ,cnt,null)) as   fin_fin_pg_staytm_lvl      
,max(if(t1.tag_name='fin_fin_fin_tm_1st'        ,cnt,null)) as   fin_fin_fin_tm_1st         
,max(if(t1.tag_name='fin_fin_fin_days_1st'      ,cnt,null)) as   fin_fin_fin_days_1st       
,max(if(t1.tag_name='fin_fin_fin_1st_drtn'      ,cnt,null)) as   fin_fin_fin_1st_drtn       
,max(if(t1.tag_name='fin_bof_fin_1st_drtn'      ,cnt,null)) as   fin_bof_fin_1st_drtn       
,max(if(t1.tag_name='fin_bof_fin_last_drtn'     ,cnt,null)) as   fin_bof_fin_last_drtn      
,max(if(t1.tag_name='fin_bof_hold_drtn'         ,cnt,null)) as   fin_bof_hold_drtn          
,max(if(t1.tag_name='fin_is_7d_fnd_fail'        ,cnt,null)) as   fin_is_7d_fnd_fail         
,max(if(t1.tag_name='fin_is_7d_bof_fail'        ,cnt,null)) as   fin_is_7d_bof_fail         
,max(if(t1.tag_name='fin_is_7d_bil_fail'        ,cnt,null)) as   fin_is_7d_bil_fail         
,max(if(t1.tag_name='fin_is_bil_vip'            ,cnt,null)) as   fin_is_bil_vip             
,max(if(t1.tag_name='fin_is_fnd_vip'            ,cnt,null)) as   fin_is_fnd_vip             
,max(if(t1.tag_name='fin_is_bof_vip'            ,cnt,null)) as   fin_is_bof_vip             
,max(if(t1.tag_name='fin_bof_new_prch_7d'       ,cnt,null)) as   fin_bof_new_prch_7d        
,max(if(t1.tag_name='fin_fin_new_non_prch_7d'   ,cnt,null)) as   fin_fin_new_non_prch_7d    
,max(if(t1.tag_name='fin_fin_new_prch_7d'       ,cnt,null)) as   fin_fin_new_prch_7d        
,max(if(t1.tag_name='fin_bof_new_prch_30d'      ,cnt,null)) as   fin_bof_new_prch_30d       
,max(if(t1.tag_name='fin_fin_new_non_prch_30d'  ,cnt,null)) as   fin_fin_new_non_prch_30d   
,max(if(t1.tag_name='fin_fin_new_prch_30d'      ,cnt,null)) as   fin_fin_new_prch_30d       
,max(if(t1.tag_name='fin_non_2nd_prch'          ,cnt,null)) as   fin_non_2nd_prch           
,max(if(t1.tag_name='fin_non_prch_af_refin'     ,cnt,null)) as   fin_non_prch_af_refin      
,max(if(t1.tag_name='fin_bil_cash_cnt_1m'       ,cnt,null)) as   fin_bil_cash_cnt_1m        
,max(if(t1.tag_name='fin_bil_cash_amt_1m'       ,cnt,null)) as   fin_bil_cash_amt_1m        
,max(if(t1.tag_name='fin_is_chp_focus_user'     ,cnt,null)) as   fin_is_chp_focus_user      
,max(if(t1.tag_name='fin_chp_foucs_attr'        ,cnt,null)) as   fin_chp_foucs_attr         
,max(if(t1.tag_name='fin_chp_focus_lvl'         ,cnt,null)) as   fin_chp_focus_lvl          
,max(if(t1.tag_name='fin_is_chp_fin_user'       ,cnt,null)) as   fin_is_chp_fin_user        
,max(if(t1.tag_name='fin_is_chp_lotto_user'     ,cnt,null)) as   fin_is_chp_lotto_user      
,max(if(t1.tag_name='fin_chp_fin_tm_1st'        ,cnt,null)) as   fin_chp_fin_tm_1st         
,max(if(t3.tag_name='fin_chp_fin_days_1st'      ,cnt,null)) as   fin_chp_fin_days_1st       
,max(if(t3.tag_name='fin_chp_fin_1st_drtn'      ,cnt,null)) as   fin_chp_fin_1st_drtn       
,max(if(t3.tag_name='fin_chp_first_gz_type'     ,cnt,null)) as   fin_chp_first_gz_type      
,max(if(t3.tag_name='fin_chp_lifecycle'         ,cnt,null)) as   fin_chp_lifecycle          
,max(if(t3.tag_name='fin_chp_actv_lvl'          ,cnt,null)) as   fin_chp_actv_lvl           
,max(if(t3.tag_name='fin_chp_value_lvl'         ,cnt,null)) as   fin_chp_value_lvl          
,max(if(t3.tag_name='fin_chp_tml_love'          ,cnt,null)) as   fin_chp_tml_love           
,max(if(t3.tag_name='fin_chp_vst_pg_lvl'        ,cnt,null)) as   fin_chp_vst_pg_lvl         
,max(if(t3.tag_name='fin_chp_vst_cnt_lvl'       ,cnt,null)) as   fin_chp_vst_cnt_lvl        
,max(if(t3.tag_name='fin_chp_vst_bounce_lvl'    ,cnt,null)) as   fin_chp_vst_bounce_lvl     
,max(if(t3.tag_name='fin_chp_vst_staytm_lvl'    ,cnt,null)) as   fin_chp_vst_staytm_lvl     
,max(if(t3.tag_name='fin_chp_pg_staytm_lvl'     ,cnt,null)) as   fin_chp_pg_staytm_lvl      
,max(if(t3.tag_name='fin_chp_is_click_farm'     ,cnt,null)) as   fin_chp_is_click_farm      
,max(if(t3.tag_name='fin_chp_lucky_draw_amt'    ,cnt,null)) as   fin_chp_lucky_draw_amt     
,max(if(t3.tag_name='fin_chp_last_buy_cyc'      ,cnt,null)) as   fin_chp_last_buy_cyc       
,max(if(t3.tag_name='fin_chp_buy_gz_types'      ,cnt,null)) as   fin_chp_buy_gz_types       
,max(if(t3.tag_name='fin_chp_buy_cnt'           ,cnt,null)) as   fin_chp_buy_cnt            
,max(if(t3.tag_name='fin_chp_reward_type_amt'   ,cnt,null)) as   fin_chp_reward_type_amt    
,max(if(t3.tag_name='fin_chp_income_type_amt'   ,cnt,null)) as   fin_chp_income_type_amt    
,max(if(t3.tag_name='fin_chp_pv_cyc'            ,cnt,null)) as   fin_chp_pv_cyc             
,max(if(t3.tag_name='fin_chp_pv_types'          ,cnt,null)) as   fin_chp_pv_types           
,max(if(t3.tag_name='fin_chp_pv_cnt'            ,cnt,null)) as   fin_chp_pv_cnt             
,max(if(t3.tag_name='fin_chp_7days_nobuys'      ,cnt,null)) as   fin_chp_7days_nobuys       
,max(if(t3.tag_name='fin_chp_15days_nobuys'     ,cnt,null)) as   fin_chp_15days_nobuys      
,max(if(t3.tag_name='fin_chp_is_1yuan'          ,cnt,null)) as   fin_chp_is_1yuan           
,max(if(t3.tag_name='fin_chp_is_use_coupon'     ,cnt,null)) as   fin_chp_is_use_coupon      
,max(if(t3.tag_name='fin_chp_coupon_use_cat'    ,cnt,null)) as   fin_chp_coupon_use_cat     
,max(if(t3.tag_name='fin_chp_coupon_use_cyc'    ,cnt,null)) as   fin_chp_coupon_use_cyc     
,max(if(t3.tag_name='fin_chp_coupon_use_cnt'    ,cnt,null)) as   fin_chp_coupon_use_cnt     
,max(if(t3.tag_name='fin_chp_coupon_use_amt'    ,cnt,null)) as   fin_chp_coupon_use_amt     
,max(if(t3.tag_name='fin_chp_coupon_ord_amt'    ,cnt,null)) as   fin_chp_coupon_ord_amt     
,max(if(t3.tag_name='fin_chp_buy_cat'           ,cnt,null)) as   fin_chp_buy_cat            
,max(if(t3.tag_name='fin_chp_buy_dept'          ,cnt,null)) as   fin_chp_buy_dept           
,max(if(t3.tag_name='fin_cfc_rgst_dt'           ,cnt,null)) as   fin_cfc_rgst_dt            
,max(if(t1.tag_name='fin_cfc_rgst_days'         ,cnt,null)) as   fin_cfc_rgst_days          
,max(if(t1.tag_name='fin_cfc_rgst_drtn'         ,cnt,null)) as   fin_cfc_rgst_drtn          
,max(if(t4.tag_name='fin_cfc_open_dt'           ,cnt,null)) as   fin_cfc_open_dt            
,max(if(t4.tag_name='fin_cfc_open_drtn'         ,cnt,null)) as   fin_cfc_open_drtn          
,max(if(t4.tag_name='fin_cfc_fin_dt_1st'        ,cnt,null)) as   fin_cfc_fin_dt_1st         
,max(if(t4.tag_name='fin_cfc_fin_1st_drtn'      ,cnt,null)) as   fin_cfc_fin_1st_drtn       
,max(if(t4.tag_name='fin_cfc_user_src'          ,cnt,null)) as   fin_cfc_user_src           
,max(if(t4.tag_name='fin_cfc_amt'               ,cnt,null)) as   fin_cfc_amt                
,max(if(t4.tag_name='fin_cfc_bal'               ,cnt,null)) as   fin_cfc_bal                
,max(if(t4.tag_name='fin_is_cfc_stages'         ,cnt,null)) as   fin_is_cfc_stages          
,max(if(t4.tag_name='fin_is_cfc_flex_use'       ,cnt,null)) as   fin_is_cfc_flex_use        
,max(if(t4.tag_name='fin_is_cfc_overdue'        ,cnt,null)) as   fin_is_cfc_overdue         
,max(if(t4.tag_name='fin_cfc_overdue_days'      ,cnt,null)) as   fin_cfc_overdue_days       
,max(if(t4.tag_name='fin_cfc_tml_love'          ,cnt,null)) as   fin_cfc_tml_love           
,max(if(t4.tag_name='fin_is_nonfnc_mem'         ,cnt,null)) as   fin_is_nonfnc_mem          
,max(if(t4.tag_name='fin_pupsec_status'         ,cnt,null)) as   fin_pupsec_status          
,max(if(t4.tag_name='fin_chnel_lvl'             ,cnt,null)) as   fin_chnel_lvl              
,max(if(t4.tag_name='fin_chnel_cnt'             ,cnt,null)) as   fin_chnel_cnt              
,max(if(t4.tag_name='fin_mbl_auth'              ,cnt,null)) as   fin_mbl_auth               
,max(if(t4.tag_name='fin_actv_type'             ,cnt,null)) as   fin_actv_type              
,max(if(t4.tag_name='fin_app_hold'              ,cnt,null)) as   fin_app_hold               
,max(if(t4.tag_name='fin_cfc_black_list'        ,cnt,null)) as   fin_cfc_black_list         
,max(if(t4.tag_name='fin_malicious_rgst'        ,cnt,null)) as   fin_malicious_rgst         
,max(if(t4.tag_name='fin_is_scalper'            ,cnt,null)) as   fin_is_scalper             
,max(if(t4.tag_name='fin_fin_black_list'        ,cnt,null)) as   fin_fin_black_list   
from  dw.dw_member_base_info_d t1
left join(select * from  dw.dw_member_action_attr_d where data_date='${hivevar:statis_date}' and business_cd ='jt') t2
on t1.user_id=t2.user_id
left join(select * from  dw.dw_member_action_attr_d where data_date='${hivevar:statis_date}' and business_cd ='jt') t3
on t1.user_id=t3.user_id
left join(select * from  dw.dw_member_action_attr_d where data_date='${hivevar:statis_date}' and business_cd ='jt') t4
on t1.user_id=t4.user_id
where  t1.data_date='${hivevar:statis_date}' and t1.business_cd ='jt'
group by t1.user_id
;

涉及到的表梳理

个人会员标签体系

作者 张, 宴银

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注