需求分析
為保證您可以順利完成本次實(shí)驗(yàn),請(qǐng)先了解實(shí)驗(yàn)業(yè)務(wù)背景并完成準(zhǔn)備工作。
注意事項(xiàng)
本實(shí)驗(yàn)提供教程所需用戶信息數(shù)據(jù)與網(wǎng)站訪問(wèn)測(cè)試數(shù)據(jù),您可直接使用。
本實(shí)驗(yàn)提供數(shù)據(jù)僅作為阿里云大數(shù)據(jù)開(kāi)發(fā)治理平臺(tái)DataWorks數(shù)據(jù)應(yīng)用實(shí)操使用,所有數(shù)據(jù)均為人工Mock數(shù)據(jù)。
本實(shí)驗(yàn)中,數(shù)據(jù)同步和數(shù)據(jù)加工部分的任務(wù)可以通過(guò)ETL工作流模板一鍵導(dǎo)入。在導(dǎo)入模板后,您可以前往目標(biāo)空間進(jìn)行操作,并自行完成后續(xù)的數(shù)據(jù)質(zhì)量監(jiān)控和數(shù)據(jù)可視化操作。
僅空間管理員角色可導(dǎo)入ETL模板至目標(biāo)工作空間,為賬號(hào)授權(quán)空間管理員角色詳情請(qǐng)參見(jiàn)空間級(jí)模塊權(quán)限管控。
導(dǎo)入ETL工作流模板,詳情請(qǐng)參見(jiàn)ETL工作流快速體驗(yàn)。
ETL工作流模板快捷入口,請(qǐng)點(diǎn)擊網(wǎng)站用戶行為分析。
業(yè)務(wù)背景
為了更好的制定企業(yè)經(jīng)營(yíng)策略,現(xiàn)需要從用戶網(wǎng)站行為中獲取網(wǎng)站用戶群體基本畫(huà)像數(shù)據(jù),例如,用戶群體地理屬性、社會(huì)屬性等,實(shí)現(xiàn)定時(shí)定點(diǎn)進(jìn)行畫(huà)像分析,進(jìn)而實(shí)現(xiàn)網(wǎng)站流量精細(xì)化運(yùn)營(yíng)操作。
步驟一:了解已有業(yè)務(wù)數(shù)據(jù)
實(shí)際操作前,請(qǐng)先了解該項(xiàng)目背景下企業(yè)已有的業(yè)務(wù)數(shù)據(jù)及其數(shù)據(jù)格式,以及業(yè)務(wù)背景分析需要的目標(biāo)用戶畫(huà)像基本結(jié)構(gòu)。
OSS原始日志數(shù)據(jù)分析(user_log.txt)
以下為OSS中存儲(chǔ)的user_log.txt文件原始數(shù)據(jù)。
$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent"$http_referer" "$http_user_agent" [unknown_content];
可根據(jù)原始日志數(shù)據(jù)獲取到如下有效信息。
字段名稱 | 字段說(shuō)明 |
$remote_addr | 發(fā)送請(qǐng)求的客戶端IP地址。 |
$remote_user | 客戶端登錄名。 |
$time_local | 服務(wù)器本地時(shí)間。 |
$request | 請(qǐng)求,包括HTTP請(qǐng)求類型+請(qǐng)求URL+HTTP協(xié)議版本號(hào)。 |
$status | 服務(wù)端返回狀態(tài)碼。 |
$body_bytes_sent | 返回給客戶端的字節(jié)數(shù)(不含header)。 |
$http_referer | 該請(qǐng)求的來(lái)源URL。 |
$http_user_agent | 發(fā)送請(qǐng)求的客戶端信息,如使用的瀏覽器等。 |
MySQL用戶信息數(shù)據(jù)結(jié)構(gòu)(ods_user_info_d)
字段名稱 | 字段說(shuō)明 |
uid | 用戶名 |
gender | 性別 |
age_range | 年齡分段 |
zodiac | 星座 |
步驟二:分析產(chǎn)出目標(biāo)用戶畫(huà)像數(shù)據(jù)結(jié)構(gòu)
根據(jù)原始數(shù)據(jù)分析可獲得的有效數(shù)據(jù),并基于業(yè)務(wù)需求確認(rèn)最終數(shù)據(jù)表結(jié)構(gòu)。
字段名稱 | 字段說(shuō)明 |
uid | 用戶名 |
region | 地域 |
device | 終端類型 |
pv | 瀏覽量 |
gender | 性別 |
age_range | 年齡分段 |
Zodiac | 星座 |
步驟三:數(shù)據(jù)流與工作流設(shè)計(jì)
根據(jù)規(guī)范設(shè)計(jì)表名:
參考規(guī)范設(shè)計(jì)表名。本案例設(shè)計(jì)5張表。表命名規(guī)范詳情請(qǐng)參見(jiàn):ODS層設(shè)計(jì)規(guī)范。
用戶基本信息表:ods_user_info_d
網(wǎng)站訪問(wèn)日志原始數(shù)據(jù)表:ods_raw_log_d
網(wǎng)站訪問(wèn)日志明細(xì)表:dwd_log_info_di
用戶網(wǎng)站訪問(wèn)信息寬表:dws_user_info_all_di
用戶畫(huà)像數(shù)據(jù):ads_user_info_1d
根據(jù)規(guī)范設(shè)計(jì)數(shù)據(jù)流:
本實(shí)驗(yàn)使用數(shù)據(jù)集成離線同步任務(wù)將用戶信息數(shù)據(jù)與用戶網(wǎng)站訪問(wèn)記錄數(shù)據(jù)分別同步至MaxCompute各表,并通過(guò)ODPS SQL任務(wù),基于MaxCompute計(jì)算引擎進(jìn)行逐級(jí)加工處理,產(chǎn)出最終目標(biāo)用戶畫(huà)像數(shù)據(jù),具體邏輯參見(jiàn)圖示。
根據(jù)規(guī)范設(shè)計(jì)節(jié)點(diǎn)名:
為更好地定位節(jié)點(diǎn)與產(chǎn)出表,當(dāng)前實(shí)驗(yàn)將節(jié)點(diǎn)產(chǎn)出表默認(rèn)作為節(jié)點(diǎn)名,建議實(shí)際開(kāi)發(fā)時(shí)也保持該規(guī)范。
根據(jù)規(guī)范設(shè)計(jì)工作流(即業(yè)務(wù)流程):
基于數(shù)據(jù)流設(shè)計(jì)工作流:DataWorks上任務(wù)上下游關(guān)系遵循節(jié)點(diǎn)名與表名一一對(duì)應(yīng)原則,基于數(shù)據(jù)流設(shè)計(jì)工作流。節(jié)點(diǎn)命名規(guī)范詳情請(qǐng)參見(jiàn):配置同周期調(diào)度依賴。
新增業(yè)務(wù)流程管理設(shè)計(jì):由于OSS同步任務(wù)(ods_raw_log_d)與MySQL同步任務(wù)(ods_user_info_d)為原始業(yè)務(wù)數(shù)據(jù)寫(xiě)入數(shù)倉(cāng),數(shù)倉(cāng)側(cè)均沒(méi)有實(shí)際血緣依賴,且兩個(gè)任務(wù)間沒(méi)有統(tǒng)一的根節(jié)點(diǎn),所以需要新增虛擬節(jié)點(diǎn)workshop_start用于統(tǒng)籌管理該用戶畫(huà)像分析業(yè)務(wù)流程。
本案例中,通過(guò)將虛擬節(jié)點(diǎn)workshop_start的定時(shí)時(shí)間設(shè)置為每日00:15執(zhí)行,實(shí)現(xiàn)整個(gè)用戶畫(huà)像分析每日00:15開(kāi)始調(diào)度執(zhí)行的需求。
當(dāng)前案例基于DataWorks上游執(zhí)行完成才會(huì)觸發(fā)下游執(zhí)行的背景,以及虛擬節(jié)點(diǎn)執(zhí)行時(shí),系統(tǒng)直接返回成功,不會(huì)真正執(zhí)行的特性,將虛擬節(jié)點(diǎn)workshop_start作為同步任務(wù)ods_raw_log_d和ods_user_info_d的上游節(jié)點(diǎn),從而達(dá)到虛擬節(jié)點(diǎn)workshop_start統(tǒng)籌管理整個(gè)用戶畫(huà)像分析業(yè)務(wù)流程的目的。
步驟四:匯總需求
階段 | 操作對(duì)象 | 說(shuō)明 |
數(shù)據(jù)同步階段 | ods_user_info_d | 將MySQL中的用戶數(shù)據(jù)ods_user_info_d同步至MaxCompute的ods_user_info_d表。 |
ods_raw_log_d | 將OSS中的網(wǎng)站訪問(wèn)日志user_log.txt同步至MaxCompute的ods_raw_log_d表。 | |
數(shù)據(jù)加工階段 | dwd_log_info_di | 通過(guò)函數(shù)正則等方式對(duì)MaxCompute日志數(shù)據(jù)的表ods_raw_log_d進(jìn)行加工,拆解為可分析字段(例如根據(jù)IP獲取地域信息),寫(xiě)入dwd_log_info_di表中。 |
dws_user_info_all_di | 通過(guò)將用戶基本信息ods_user_info_d和初步加工后的日志數(shù)據(jù)dwd_log_info_di進(jìn)行匯總產(chǎn)出用戶信息寬表 dws_user_info_all_di。 | |
ads_user_info_1d | 通過(guò)對(duì)用戶信息寬表dws_user_info_all_di進(jìn)一步加工產(chǎn)出目標(biāo)用戶畫(huà)像數(shù)據(jù)。 | |
數(shù)據(jù)質(zhì)量監(jiān)控階段 | ods_raw_log_d | 對(duì)每日同步的原始日志數(shù)據(jù)進(jìn)行表行數(shù)非0監(jiān)控,避免后續(xù)無(wú)效加工,及時(shí)止損。 |
ods_user_info_d | 對(duì)每日同步的用戶信息數(shù)據(jù)進(jìn)行表行數(shù)非0校驗(yàn)(強(qiáng)規(guī)則)和業(yè)務(wù)主鍵唯一性校驗(yàn)(弱規(guī)則),避免后續(xù)無(wú)效加工,及時(shí)止損。 | |
ads_user_info_1d | 對(duì)每日用戶數(shù)據(jù)進(jìn)行表行數(shù)波動(dòng)監(jiān)測(cè)(弱規(guī)則)及業(yè)務(wù)主鍵唯一性校驗(yàn)(強(qiáng)規(guī)則),以此觀察每日UV的波動(dòng),以便及時(shí)了解應(yīng)用動(dòng)態(tài)。 | |
數(shù)據(jù)可視化階段 | ads_user_info_1d | 通過(guò)DataWorks數(shù)據(jù)分析對(duì)用戶畫(huà)像數(shù)據(jù)進(jìn)行可視化與分析展示。包括:
|