知識點:
sparksession.createDataset 需要對元素序列化(發送到task), import sparksession.implicits_ 只支持基本數據類型和case class 序列化
自定義序列化 Encoders.kryo(clazz)
hive本地運行:set hive.exec.mode.local.auto=true 本地模式
with view as(select *from) 創建臨時表
hive分區dt 字段爲表默認字段
數據校驗方法: 可以用總數對比校驗
多維模型 數據立方體 全維度 group by fileds with cube
自由維度組合 grouping set((f1,f2),(f3))
更寬範圍取維度 rollup 從右到左維度變寬 (省 市 區 街道)
下鑽 | 上卷 | 切片切塊 | 旋轉 |
---|---|---|---|
取更細維度 | 取更寬維度 | 取部分維度 | 改變group by字段順序 |
需求:
日新日活主題分析: 對uid分組, 獲取日活 通過歷史中間表獲取日新
日活: 每日從日誌中獲取的用戶
日新: 當日日活左連接歷史表 歷史表中沒有的即爲日新
歷史表設計
歷史表由自己和當日日活求出:
日活中沒有在歷史表中的(即日新) 則添加到歷史表並且首登日期和末登日期爲當日, 如果存在歷史表中則 將末登日期修改爲當日 使用full join實現
認知(儘量使用if 不使用where union)
首登日期可求出日新 最後登錄日期可求出日活(爲留存和新鮮度打基礎)
日期 | 用戶id | 用戶首登日期 | 最後登錄日期 |
---|
對比流量主題分析: 通過對uid sessionid 分區統計出pv uv 時長 訪問次數