hive使用者標籤體系的任務怎麼寫
背景:
最近有接到業務上的這麼個需求,每天計算圈定使用者的一些標籤,同時把新增和移除標籤的資訊及當前使用者的資訊發給下游,舉例:
這個使用者昨日新增了tag3和tag2這個標籤,同時當前codes也是這2個
任務設計:
首先,儲存每天的全量的計算結果,因為新增和減少都需要和之前的資料作比較才知道,同時全部的codes用全量的結果
然後,用昨天的資料和前天的資料full join下,這樣形成一個新增和減少的關係表
最後,按照指定格式取出來新增和減少的code及當前的codes值
帖下最後一步的處理邏輯:
insert overwrite table ba_user_push partition (dt)
select concat(
'{"add":['
,if(add_code is null,'',add_code)
,'],"client_str":'
,stringaddquotation(t1.client_str)
,',"registration_id":'
,stringaddquotation(t1.registration_id)
,',"codes":'
,if(all_code is null,'""',all_code)
,',"remove":['
,if(remove_code is null,'',remove_code)
,']}'
) as message
from (
select if(client_str1 is null,client_str2,client_str1) as client_str
,if(registration_id1 is null,registration_id2,registration_id1) as registration_id
,if(hupu_uid1 is null,hupu_uid2,hupu_uid1) as hupu_uid
from tmp_push_step1
where dt = ${bdp.system.bizdate}
and (registration_id1 is null --有減少
or registration_id2 is null) --有新增 只處理這2部分
group by if(client_str1 is null,client_str2,client_str1)
,if(registration_id1 is null,registration_id2,registration_id1)
) t1 left
join (
select client_str1 as client_str
,registration_id1 as registration_id
,stringaddquotation(wm_concat(',',code1)) as all_code
from bigdata2c.tmp_shihuo_push_step1
where dt = ${bdp.system.bizdate}
and client_str1 is not null
group by client_str1
,registration_id1
) t2
on t1.client_str = t2.client_str
and t1.registration_id = t2.registration_id left
join (
select client_str1 as client_str
,registration_id1 as registration_id
,wm_concat(',',stringaddquotation(code1)) as add_code
from bigdata2c.tmp_shihuo_push_step1
where dt = ${bdp.system.bizdate}
and registration_id2 is null
group by client_str1
,registration_id1
) t3
on t1.client_str = t3.client_str
and t1.registration_id = t3.registration_id left
join (
select client_str2 as client_str
,registration_id2 as registration_id
,wm_concat(',',stringaddquotation(code2)) as remove_code
from bigdata2c.tmp_shihuo_push_step1
where dt = ${bdp.system.bizdate}
and registration_id1 is null
group by client_str2
,registration_id2
) t4
on t1.client_str = t4.client_str
and t1.registration_id = t4.registration_id
;
相關文章
- 前期任務怎麼寫:《最終幻想12》的遊戲敘事技巧遊戲
- 這個code標籤怎麼回事?
- linux系統怎麼新增每天定時任務? linux系統新增定時任務的教程Linux
- tag標籤是怎麼用OT實現的?
- html中a標籤的下劃線怎麼去掉HTML
- 印表機怎麼取消列印任務 取消印表機列印任務的方法
- 標籤列印軟體中出現預覽空白,列印空白怎麼辦?
- 標籤管理體系之業務應用
- 讓 A 標籤失效的 CSS 寫法CSS
- 陪玩遊戲系統釋出動態,是怎麼新增話題標籤的遊戲
- win10任務檢視怎麼關閉歷史記錄 關閉任務檢視的具體方法Win10
- 什麼是JSTL標籤?常用的標籤庫有哪些?JS
- 如何用jsp:setproperty標籤為自己寫的標籤類賦屬性JS
- 使用者畫像標籤體系——從零開始搭建實時使用者畫像(三)
- JavaScript有同步任務和非同步任務,瀏覽器是怎麼處理的?JavaScript非同步瀏覽器
- 1.2.6. 任務6:增加系統使用者
- 【資料治理】 第2話 - 標籤治理體系
- 財務分析指標體系指標
- PbootCMS 列表置頂文章istop標籤失效怎麼辦?boot
- HTML標籤(基本標籤的使用)HTML
- java <%!%>標籤和<%%>標籤的使用Java
- 深入淺出自定義標籤(三)操作標籤體薦
- win10快捷鍵任務視角怎麼用_win10怎麼快捷鍵切換任務檢視Win10
- HTML 標籤與屬性大小寫HTML
- 標籤評分:海量標籤如何進行系統治理?
- 自媒體怎麼寫標題?快把這6個公式學會公式
- HTML的標籤分為哪幾類?各標籤語法格式是怎樣的?HTML
- onethink自帶的kindeditor遮蔽dl,dt,dd標籤怎麼破!?
- 怎麼用Word做資料夾側面標籤?Word做資料夾側面標籤教程
- 標籤系統測試
- 任務系統之Jenkins子任務Jenkins
- 資料應用場景之標籤管理體系
- html中常用的標籤-表格標籤HTML
- 任務預測指標整理指標
- 大量佇列任務總是 MaxAttemptsExceededException,怎麼辦?佇列Exception
- 分散式微服務架構體系該怎麼建?分散式微服務架構
- Java編寫定時任務Java
- HTML標籤簡寫及全稱大全HTML