天天看點

【Best Practice】基于阿裡雲數加·MaxCompute及Quick BI建構網站使用者畫像分析資料報表展現

最近很多雲栖社群的網友們看了上面一篇文章後都在追我下一篇,由于時間關系先給各位抱歉。那本篇文章我們來闡述如何通過maxcompute和quick bi來完成網站使用者畫像分析。還是和以往一樣,看看整個資料架構圖如下:

【Best Practice】基于阿裡雲數加·MaxCompute及Quick BI建構網站使用者畫像分析資料報表展現

前提條件

資料來源于網站上的http通路日志資料,基于這份網站日志來實作如下分析需求:

n   統計并展現網站的pv和uv,并能夠按照使用者的終端類型(如android、ipad、iphone、pc等)分别統計。

n   統計并展現網站的流量來源。

n   統計并展現網站的使用者地域分布。

【說明】浏覽次數(pv)和獨立訪客(uv)是衡量網站流量的兩項最基本名額。使用者每打開一個網站頁面,記錄一個pv,多次打開同一頁面pv 累計多次。獨立訪客是指一天内,通路網站的不重複使用者數,一天内同一訪客多次通路網站隻計算1 次。

該資料的格式如下:

主要字段說明如下:

<b>字段名稱</b>

<b>字段說明</b>

$remote_addr

發送請求的用戶端ip位址

$remote_user

用戶端登入名

$time_local

伺服器本地時間

$request

請求,包括http請求類型+請求url+http協定版本号

$status

服務端傳回狀态碼

$body_bytes_sent

傳回給用戶端的位元組數(不含header)

$http_referer

該請求的來源url

$http_user_agent

發送請求的用戶端資訊,如使用的浏覽器等

真實源資料如下:

如上圖所示,紅色箭線部分為流式資料處理部分,主要拆解如下:

l  配置logstash,将coolshell.cn産生的日志實時采集至datahub。

l  申請開通datahub,建立項目project及topic(datahub服務訂閱和釋出的最小機關)。

l  開通maxcompute及大資料開發套件,建立項目project,并建立maxcompute表及資料同步任務。

l  将資料加工得到的結果表資料同步至analyticdb中便于quick bi進行分析。

離線分析的處理邏輯中主要設計到datahub topic、maxcompute表、analyticdb表。那這些表之間的邏輯結果以及資料鍊路是怎樣的呢?如下示例:

【Best Practice】基于阿裡雲數加·MaxCompute及Quick BI建構網站使用者畫像分析資料報表展現
【Best Practice】基于阿裡雲數加·MaxCompute及Quick BI建構網站使用者畫像分析資料報表展現

根據如上資料鍊路涉及到的datahub topic包括:coolshell_log_tracker。

coolshell_log_tracker

topic是datahub服務訂閱和釋出的最小機關,可以用來表示一類或者一種流資料。通過對日志結構的解析原始datahub topic:coolshell_log_tracker格式如下:

<b>字段類型</b>

ip

string

user

accesstime

method

url

protocol

status

bigint

byte_cnt

referer

agent

dt

ods_log_tracker

針對topic coolshell_log_tracker可進行歸檔至maxcompute 表中做進一步的離線分析和加工。(說明:資料歸檔的頻率為每個shard每5分鐘或者shard中新寫入的資料量達到64mb,connector服務會批量進行一次資料歸檔進入maxcompute表的操作。)

具體結構如下:

用戶端請求ip

請求方法

通路路徑或頁面

http協定版本号

伺服器傳回狀态碼

傳回給用戶端的位元組數

用戶端資訊,如浏覽器

時間分區yyyymmdd

dw_log_detail

根據agent字段的規律拆分出device(裝置)和identity(請求來源辨別)并将資料寫入maxcompute的dw_log_detail表中。表結果如下所示:

device

請求來源裝置情況

identity

請求來源辨別,如爬蟲

dim_user_info

假設基于簡單規則,ip、device、protocol、identity和agent字段資訊完全一緻可以認為是同一個使用者,來确認uid(識别唯一使用者)。同時根據ip2region的自定義函數将ip位址轉換為city字段,最終産生使用者次元表:dim_user_info,表結構如下所示:

uid

使用者唯一辨別

city

ip對應的城市

dw_log_fact

按照使用者維表進行聚合展現具體的資料産生事實表,具體表結構如下:

接着我們按照需要分析的主題進行加工資料,也就是資料倉庫領域中的adm(資料集市)層。具體如下:

adm_refer_info

按照請求來源類型進行統計,具體表結構如下所示:

請求來源

referer_count

請求來源總數

adm_user_measures

按照pv/uv來進行統計,具體表結構如下所示:

裝置類型

pv

頁面浏覽量

uv

頁面訪客數

adm_user_info

按照地域來統計使用者數,具體表結構如下:

城市

user_count

每個城市的使用者數

由于maxcompute更适合于做離線資料加工分析,最終的展現要将資料導入analyticdb進行quickbi的展現,對應的表結構同adm_refer_info、adm_user_measures、adm_user_info。

datahub topic的結構與上一篇流式資料處理的結構相同。

【Best Practice】基于阿裡雲數加·MaxCompute及Quick BI建構網站使用者畫像分析資料報表展現

在大資料開發套件中建立好maxcompute表後,需要将adm資料集市層的表同步至analyticdb中,再利用quickbi進行資料分析和洞察。    

<a></a>

<a>操作步驟</a>

步驟1      點選操作欄中的進入,進入dms for analyticdb。

步驟2      建立analyticdb表組,具體如下:

create tablegroup coolshell_log options(minredundancy=2 executetimeout=30000);

步驟3      建立analyticdb資料表,ddl語句分别如下。

【Best Practice】基于阿裡雲數加·MaxCompute及Quick BI建構網站使用者畫像分析資料報表展現

各個處理邏輯的sql腳本如下

配置項說明如下:

函數名:getregion

類名:org.alidata.odps.udf.ip2region

資源:ip2region.jar

經過上述步驟,資料加工邏輯已經可以正常執行,那麼需要進行資料導出工作。建立三個同步任務将adm資料集市層的資料導入至分析型資料庫中,供後續quick bi更高效的洞察資料。    

選擇資料源為ads,填寫配置資訊并測試連通性通過後,點選 确定 儲存配置。(其中accessid和accesskey都是大資料開發套件對應項目的生産賬号)

在maxcompute console中需要對[email protected] 與 [email protected]。如下進行:    

在dms for analyticdb中建立授權,使用者為大資料開發套件項目對應的生産賬号(可從項目管理&gt;項目配置中擷取)。    

【Best Practice】基于阿裡雲數加·MaxCompute及Quick BI建構網站使用者畫像分析資料報表展現

配置好maxcompute2analyticdb資料導出後,需要針對工作流任務的排程屬性尤其是排程時間進行配置(需要根據具體業務需要來進行)。配置完這些任務屬性之後需要送出并上線任務。

針對資料加工的結果,采用quick bi進行分析。其不同于傳統bi工具,quick bi提供端到端的解決方案,可以與整個阿裡雲數加大資料處理邏輯無縫對接,分析使用者在maxcompute、analyticdb上的資料。    

經過資料大資料開發套件清洗/加工後的資料已經成功的寫入analyticdb,那麼通過quick bi可輕松的實作圖表、報表形式展現。    

【Best Practice】基于阿裡雲數加·MaxCompute及Quick BI建構網站使用者畫像分析資料報表展現

操作步驟

點選已經添加的資料源,在操作欄中分别點選 建立資料集。    

【Best Practice】基于阿裡雲數加·MaxCompute及Quick BI建構網站使用者畫像分析資料報表展現

點選adm_user_info

操作欄中的 分析。  

【Best Practice】基于阿裡雲數加·MaxCompute及Quick BI建構網站使用者畫像分析資料報表展現

在這裡需要特别注意的是,我們處理後的資料中city是字元型的,那麼如何轉為地圖可以識别的類型,需要進行類型轉化,如下圖所示:

【Best Practice】基于阿裡雲數加·MaxCompute及Quick BI建構網站使用者畫像分析資料報表展現

點選選擇 dt 右鍵選擇将其轉化為次元,繼而右鍵dt 選擇類型轉化&gt;日期(源資料格式)&gt;yyyymmdd,在儲存彈出框中儲存為 城市分布。  

點選左側

模闆 進入,選擇空白圖表模闆。按照自己需要的布局進行。

【Best Practice】基于阿裡雲數加·MaxCompute及Quick BI建構網站使用者畫像分析資料報表展現

針對每個圖示可以在右側進行關聯資料集,如來自工作表..等。最終實作的效果如下:

【Best Practice】基于阿裡雲數加·MaxCompute及Quick BI建構網站使用者畫像分析資料報表展現