用户标签(三):oneid与用户标签之间的相互打通 实现用户标签
生活随笔
收集整理的這篇文章主要介紹了
用户标签(三):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与用户标签之间的相互打通 实现用户标签的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: t-SNE数据降维(2维3维)及可视化
- 下一篇: APP乱查征信?小心你的隐私被卖了!