用户标签(三):oneid与用户标签之间的相互打通 实现用户标签
oneid与用户标签之间的相互打通 实现用户画像打标行为
- 附录说明:
- 整个流程:
- 1、使用数据源数据进行数据清理(整理出关联数据与将要打标的数据值)
- 2、将关联键值与oneid对应关联起来 并整理好将要打标值的外部关联格式化
- 3、数据打标形成格式
- 4、数据输入中间表 目的是汇总多个源产生的数据标签方便下一步汇总使用
- 5、创建hive最终结果表
- 6、对应创建es表建立映射关系
- 7、从中间表读取数据进行汇总
- 8、数据结果输入到建立映射的hive表中在es中查询
- 辛苦码字如有转载请标明出处谢谢!——拜耳法
- 参考链接
附录说明:
打个标签盯住他
实现完整的用户标签需要以完整的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
selectnull 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(--关联键值用作与字典表对接使用selectuser_id,uni,id_mappingfrom(--选出每个id对应的最大数值用于去重selectuser_id,CONCAT_WS('&&',max(vsex),max(VMARRIGE)) AS valu,id_mappingfrom(--数据格式化处理 与对接外部值关联选择select case when length(VMOBILE)=11 then VMOBILEwhen length(VLKMOBILE)=11 then VLKMOBILEwhen length(VCERTIFICATENO) is not null then VCERTIFICATENOelse null end ss,casewhen vsex="0" then "男"when vsex="1" then "女"else "性别_其他" end vsex,CASE WHEN VMARRIGE ='01' or VMARRIGE ='已婚' THEN '已婚'WHEN VMARRIGE ='02' or VMARRIGE ='未婚' THEN '未婚'ELSE '婚姻_其他' END VMARRIGEfrom ods_tds_ddc_sqoop.crmc01c)souleft join ( --使用行转列的方式 将oneid转换成对应多行selectuser_id,id_mapping,split(unio,'#&')[1] AS confrom oneid_data.oneid_data_sink_id_mapping lateral view explode(split(id_mapping, ','))tt as unio where dt='${dt}' ) oneidon sou.ss=oneid.con where sou.ss is not null and oneid.user_id is not nullgroup by user_id,id_mapping) tt lateral view explode(split(valu, '&&'))tt as uni) etl
left join (select label_name_data,label_code,label_name from lable.lable_new_dict where label_name_data is not null )dict
on etl.uni=dict.label_name_data;
4、数据输入中间表 目的是汇总多个源产生的数据标签方便下一步汇总使用
HIVE建表语句:
dws_oneid_hq_app_lable(中间层建表)CREATE TABLE `lable.dws_oneid_hq_app_lable`(user_name String COMMENT '用户名称',user_id String COMMENT '用户id',user_mobile String COMMENT '用户手机号',user_birthday String COMMENT '用户生日',user_registime String COMMENT '用户注册时间',user_lastlogintime String COMMENT '用户最后登录时间',user_address String COMMENT '用户地址',lable String COMMENT '标签',label_name String COMMENT '标签名称',label_name_data String COMMENT '数据标签名称',id_mapping String COMMENT '用户身份集合')COMMENT 'oneid打通标签数据汇总第一步中间表';
5、创建hive最终结果表
--结果表对应 es的表创建
tdm_oneid_hq_app_lable(对应es表标签汇总表)
add jar hdfs:///user/es_hadoop/elasticsearch-hadoop-7.3.2.jar;CREATE EXTERNAL TABLE `lable.tdm_oneid_hq_app_lable`(user_name String COMMENT '用户名称',user_id String COMMENT '用户id',user_mobile String COMMENT '用户手机号',user_birthday String COMMENT '用户生日',user_registime String COMMENT '用户注册时间',user_lastlogintime String COMMENT '用户最后登录时间',user_address String COMMENT '用户地址',lable String COMMENT '标签',id_mapping String COMMENT '用户身份集合')COMMENT '标签数据汇总'STORED BY 'org.elasticsearch.hadoop.hive.EsStorageHandler'TBLPROPERTIES ('es.resource' = 'tdm_oneid_hq_app_lable', 'es.nodes'='prod.dbaas.private','es.port'='19204','es.mapping.id' = 'user_id','es.write.operation'='upsert','es.mapping.names'='user_name:user_name,user_id:user_id,user_mobile:user_mobile,user_birthday:user_birthday,user_registime:user_registime,user_lastlogintime:user_lastlogintime,user_address:user_address,lable:lable,id_mapping:id_mapping')
6、对应创建es表建立映射关系
部分因为业务需求需要创建成分词形式以便于后期查询使用
ES建表语句
PUT tdm_oneid_hq_app_lable/?include_type_name=true{"mappings":{"_doc":{"properties":{"user_name":{"type":"keyword"},"user_id":{"type":"keyword"},"user_mobile":{"type":"keyword"},"user_birthday":{"type":"keyword"},"user_registime":{"type":"keyword"},"user_lastlogintime":{"type":"keyword"},"user_address":{"type":"keyword"},"lable":{"type":"text","analyzer": "standard"},"id_mapping":{"type":"text","analyzer": "standard"}}}}}
7、从中间表读取数据进行汇总
add jar hdfs:///user/es_hadoop/elasticsearch-hadoop-7.3.2.jar;
add jar hdfs:///user/es_hadoop/httpclient-4.5.5.jar;
add jar hdfs:///user/es_hadoop/org.apache.commons.httpclient.jar;
insert into lable.tdm_oneid_hq_app_lable
selectmax(user_name) -- '用户名称',,max(user_id) -- '用户id',,max(user_mobile) -- '用户手机号',,max(user_birthday) -- '用户生日',,max(user_registime) -- '用户注册时间',,max(user_lastlogintime) -- '用户最后登录时间',,max(user_address) -- '用户地址',,CONCAT_WS(',',collect_set(lable)),id_mapping -- '用户身份集合'
from lable.dws_oneid_hq_app_lable
group by user_id -- '用户id',,id_mapping -- '用户身份集合'
8、数据结果输入到建立映射的hive表中在es中查询
GET tdm_oneid_hq_app_lable/_search
辛苦码字如有转载请标明出处谢谢!——拜耳法
都看到这里了非常感谢!
本片章暂未完结 有疑问请+vx :baierfa
参考链接
链接: 用户标签(一):图计算实现ID_Mapping、Oneid打通数据孤岛.
链接: 用户标签(二):增量版ID_Mapping、Oneid图计算打通数据孤岛实现.
链接: 用户标签(三):oneid与用户标签之间的相互打通 实现用户标签.
链接: 用户标签(四):MD5代替Hashcode生成唯一数字编码.
用户标签(三):oneid与用户标签之间的相互打通 实现用户标签相关推荐
- 中国互联网家装用户超三千万,95后成为家装消费主力用户群体
Z世代正在重新定义家装消费:2020年中国家装行业市场规模达到2.61万亿元,经过多年的快速发展,中国家装行业市场环境已经发生改变,家装市场进入存量博弈阶段,行业竞争白热化,马太效应尽显,中小&quo ...
- 用户画像标签体系——从零开始搭建实时用户画像(三)
用户画像标签体系 用户画像的核心在于给用户"打标签",每一个标签通常是人为规定的特征标识,用高度精炼的特征描述一类人,例如年龄.性别.兴趣偏好等,不同的标签通过结构化的数据体系整合 ...
- ML之CatBoost:金融风控之通过数据预处理(中位数填充/校验同分布/文本型日期拆解/平均数编码-标签编码)利用CatBoost算法+模型可解释性(Shap/LIME)预测用户的车险是否为欺诈行为
ML之CatBoost:金融风控之通过数据预处理(中位数填充/校验同分布/文本型日期拆解/平均数编码-标签编码)利用CatBoost算法+模型可解释性(Shap/LIME)预测用户的车险是否为欺诈行为 ...
- python随机产生100个整数二进制_PYTHON练习题 二. 使用random中的randint函数随机生成一个1~100之间的预设整数让用户键盘输入所猜的数。...
Python 练习 标签: Python Python练习题 Python知识点 二. 使用random中的randint函数随机生成一个1~100之间的预设整数让用户键盘输入所猜的数,如果大于预设的 ...
- html插入图像标签是什么,初学HTML 常见的标签(三) 插入类标签
第三篇博客, 这次说的是插入链接类标签, 我们平常在网页中经常能看到蓝色的链接类标签, 或者是一张图片, 一个电邮, 这些都是插入链接类的标签起的作用. 链接标签 链接标签可实现超链接, 它在网页中是 ...
- python让用户输入一个整数_PYTHON练习题 二. 使用random中的randint函数随机生成一个1~100之间的预设整数让用户键盘输入所猜的数。...
Python 练习 标签: Python Python练习题 Python知识点 二. 使用random中的randint函数随机生成一个1~100之间的预设整数让用户键盘输入所猜的数,如果大于预设的 ...
- php爱奇艺筛选标签,三种排序 快速筛选好视频_软件资讯技巧应用-中关村在线
使用在线视频播放器来观看视频,通常有可以分为有目标和无目标两种.即是用户如果定点找一部视频和随意查看喜欢的视频,这两种模式往往查找视频的方法也是不一样的.我们这里要和大家讲解的是,用户在没有目标视频的 ...
- 用户运营中,培养种子用户的三种模式
在现在的用户运营中,企业一定要重视一个用户运营概念,那就是用户体验运营,为什么这么说呢?这是因为体验是用户接触企业产品或者说接触企业的一个重要的渠道,只要用户在企业这里能够获得很好地体验,那么用户就会 ...
- 【查看linux中所有用户的三种方式】
查看linux中所有用户的三种方式学习目标: 提示:通过使用 /etc/passwd 文件,getent 命令,compgen 命令这三种方法查看系统中用户的信息 用户信息存放位置: 提示:Linux ...
最新文章
- linux运维实战练习
- centos 6.4 FTP安装和配置
- Effective Java之通过私有构造器强化不可实例化能力(四)
- Docker上安装运行Hbase
- redis学习-NoSQL数据库的四大分类
- 谷歌Chrome 紧急修复已遭利用的两个0day
- python 怎么得到图像深度图 软件_Python为8bit深度图像应用color map
- flask-mail扩展基本使用
- 《数字图像处理》空间滤波学习感悟1:空间滤波原理
- 好中的计算机英文ei,电子信息类容易中的英文EI期刊有哪些
- 计算机网络ip地址划分范围,ip地址分类及范围划分有哪些
- 更改web.config,让godady的win主机启用gzip压缩
- 密码技术的典型应用——电子印章
- CAS单点登录-配置数据库认证方式
- bat 自定义位数随机密码生成器
- Glib学习笔记(1)
- H5 Handlebars的简单使用
- 3.3.3 消费者拉取线程
- PreScan快速入门到精通第四十二讲点云传感器
- android 人生日历,人生日历Android版 安卓版人生日历功能初体验