日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2024/3/13 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用户标签(三):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与用户标签之间的相互打通 实现用户标签的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。