用户标签(三):oneid与用户标签之间的相互打通 实现用户标签

附录说明:

打个标签盯住他
打个标签盯住雷碧
实现完整的用户标签需要以完整的oneid生成且oneid定时更新新增用户 才可以实现

整个流程:

    所用组件 hive-》es(与hive产生映射的表)
    数据处理流程  

1、使用数据源数据进行数据清理(整理出关联数据与将要打标的数据值)

ods_tds_ddc_sqoop.crmc01c样例数据
在这里插入图片描述

2、将关联键值与oneid对应关联起来 并整理好将要打标值的外部关联格式化

oneid_data.oneid_data_sink_id_mapping数据样式在这里插入图片描述
lable.lable_new_dict标签字典样例数据
在这里插入图片描述

3、数据打标形成格式

							(oneid    label1)
                             (oneid    label2)
                             (oneid    label3)
        的格式也可以(oneid   label1,label2,label3)均可

–数据插入中间表 处理出每条数据的唯一ID和对应ID身份 以及每个打标职位

insert into lable.dws_oneid_hq_app_lable
select
   null AS user_name
   ,user_id
   ,null AS user_mobile
   ,null AS user_birthday
   ,null AS user_registime
   ,null AS user_lastlogintime
   ,null AS user_address
   ,label_code
   ,uni
   ,label_name
   ,id_mapping
from
   (--关联键值用作与字典表对接使用
   select
       user_id
       ,uni
       ,id_mapping
   from
       (--选出每个id对应的最大数值用于去重
       select
               user_id
               ,CONCAT_WS('&&',max(vsex),max(VMARRIGE)) AS valu
               ,id_mapping
       from
       (
           --数据格式化处理 与对接外部值关联选择
           select 
               case 
                   when  length(VMOBILE)=11 then VMOBILE
                   when  length(VLKMOBILE)=11 then VLKMOBILE
                   when  length(VCERTIFICATENO) is not null then VCERTIFICATENO
                   else null end ss
               ,case
                   when  vsex="0" then "男"
                   when  vsex
  • 2
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
首先,我们需要创建两个实体类,一个是一的一方的实体类,另一个是多的一方的实体类。 一的一方实体类: ```java public class OneEntity { private Integer id; private String name; private List<ManyEntity> manyList; //getters and setters } ``` 多的一方实体类: ```java public class ManyEntity { private Integer id; private String name; private Integer oneId; //getters and setters } ``` 接下来,我们需要在一的一方实体类中添加一个集合属性,用来存储多的一方实体类的数据。 然后,我们需要编写一个DAO层的方法,使用mybatis进行查询操作,查询一的一方表的数据,并使用mybatis的一对多映射功能,将多的一方表的数据映射到一的一方表的集合属性中。 ```java public List<OneEntity> queryOneManyList() { SqlSession sqlSession = MybatisUtil.getSqlSession(); OneMapper oneMapper = sqlSession.getMapper(OneMapper.class); List<OneEntity> oneList = oneMapper.queryAll(); for (OneEntity one : oneList) { ManyMapper manyMapper = sqlSession.getMapper(ManyMapper.class); List<ManyEntity> manyList = manyMapper.queryByOneId(one.getId()); one.setManyList(manyList); } sqlSession.close(); return oneList; } ``` 最后,在jsp页面中使用collection标签来展示一的一方表的数据和多的一方表的数据。 ```jsp <c:forEach var="one" items="${oneList}"> <tr> <td>${one.id}</td> <td>${one.name}</td> <td> <c:forEach var="many" items="${one.manyList}"> ${many.name}, </c:forEach> </td> </tr> </c:forEach> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值