本文是基于實(shí)現(xiàn)第一階段的業(yè)務(wù)目標(biāo)后,使用python、數(shù)據(jù)倉庫實(shí)現(xiàn)的自主更新可視化看板。
項(xiàng)目目錄
- 項(xiàng)目介紹
- 分析思路
- 數(shù)據(jù)自動(dòng)化處理過程
- 可視化報(bào)表搭建
一、項(xiàng)目介紹
基于已經(jīng)實(shí)現(xiàn)第一階段的業(yè)務(wù)需求后,公司希望業(yè)務(wù)部門能夠?qū)崿F(xiàn)自主分析,從而實(shí)現(xiàn)對市場的快速判斷,因此,要求數(shù)據(jù)部門和業(yè)務(wù)部門溝通需求的自主分析的數(shù)據(jù)指標(biāo),從而實(shí)現(xiàn)可視化看板。
二、分析思路
(一)項(xiàng)目操作流程

(二)項(xiàng)目解決思路

三、數(shù)據(jù)自動(dòng)化處理過程
(一)聚合生成dw_order_by_day表
從mysql數(shù)據(jù)庫中獲取ods_sales_orders訂單明細(xì)表并按日期分組聚合,得到每日銷量和每日銷售額。讀取日期維度表,與上表合并,得到dw_order_by_day每日環(huán)比表。
代碼如圖所示(部分):

(二)聚合生成dw_order_diff表
因?yàn)樵谏弦徊街幸呀?jīng)得到了dw_order_by_day每日環(huán)比表,將當(dāng)前時(shí)間維度和去年同期維度下相同字段進(jìn)行聚合,在計(jì)算銷售額,銷售量,和客單價(jià)的同比。
代碼如圖所示(部分):

(三)聚合生成update_sum_data表
獲取ods_sales_orders訂單明細(xì)表和ods_customer,并進(jìn)行連接,按照訂單日期/產(chǎn)品名/產(chǎn)品子類/產(chǎn)品類別/所在區(qū)域/所在省份/所在城市分組聚合,在獲取日期維度表,進(jìn)行連接,得到sum_customer_order
代碼如圖所示(部分):

(四)在Linux上做定時(shí)部署
把定時(shí)更新的任務(wù)寫到schedule.py上,然后將我們寫好的schedule.py文件掛到后臺(tái)
(1)定時(shí)更新dw_order_by_day,dw_order_diff,dw_customer_order表的schedule.py文件,導(dǎo)入schedule 模塊實(shí)現(xiàn)定時(shí)更新,設(shè)定時(shí)間是早上6:00更新
代碼如圖所示(部分):

(2)定時(shí)任務(wù)掛到linux服務(wù)器后臺(tái),等待更新
nohup python3 schedule_job.py > schedule_job.log 2>&1 &
nohup :不掛斷地運(yùn)行命令
2>&1 將錯(cuò)誤輸出到終端,這里將輸出定向到日志文件
& 放在命令到結(jié)尾,表示后臺(tái)運(yùn)行
(3)驗(yàn)證schedule程序是否順利掛在后臺(tái)
ps aux| grep schedule_job.py
四、可視化報(bào)表搭建
(一)總體銷售情況展示

(二)最近21天銷售趨勢圖

(三)區(qū)域銷售詳情圖

`