最近剛剛做的adventure項(xiàng)目,接下來(lái)把我做項(xiàng)目的過(guò)程和步驟展示出來(lái),方便大家學(xué)習(xí)理解。
以下先展示本次項(xiàng)目的結(jié)果:


一、項(xiàng)目概述:
1.背景介紹
Adventure Works Cycle是國(guó)內(nèi)一家生產(chǎn)和銷(xiāo)售自行車(chē)及和相關(guān)配件的制造公司。利用每日商品銷(xiāo)售及相關(guān)客戶(hù)信息數(shù)據(jù),獲取商品銷(xiāo)售趨勢(shì)、地域分布情況以及簡(jiǎn)單用戶(hù)畫(huà)像,進(jìn)行可視化展示,為運(yùn)營(yíng)人員提供自主分析工具。
公司主營(yíng)業(yè)務(wù)有自行車(chē),服裝,配件,這里主要分析的是自行車(chē)業(yè)務(wù)。
2.指標(biāo)情況
從整體的角度:分析2019.1—2019.11自行車(chē)整體銷(xiāo)售表現(xiàn)?
從地域的角度:分析11月每個(gè)區(qū)域銷(xiāo)售量表現(xiàn)、11月TOP10城市銷(xiāo)售量表現(xiàn)?
從產(chǎn)品的角度:分析11月類(lèi)別產(chǎn)品銷(xiāo)售量表現(xiàn)、11月細(xì)分產(chǎn)品銷(xiāo)售量表現(xiàn)?
熱銷(xiāo)產(chǎn)品:分析11月TOP10產(chǎn)品銷(xiāo)量榜、11月TOP10銷(xiāo)量增速榜?
從用戶(hù)的角度:分析11月用戶(hù)年齡分布及每個(gè)年齡段產(chǎn)品購(gòu)買(mǎi)喜好、11月男女用作者
3.數(shù)據(jù)獲取來(lái)源
1)ods_sales_orders 訂單明細(xì)表:? ? ? ?
2)ods_customer 每日新增用戶(hù)表:
3)dim_date_df 日期維度表:
dw_order_by_day? ? ? ?每日環(huán)比表? ?
輸出:dw_order_by_day銷(xiāo)量訂單聚合目標(biāo)及日期維度表
dw_customer_order? ? 時(shí)間地區(qū)產(chǎn)品聚合表
輸出:每日新增用戶(hù)表,銷(xiāo)售訂單表,日期維度表的訂單聚合
dw_amount_diff? ? ? ? ? 當(dāng)日維度表?
輸出:訂單數(shù)量和金額的同期變化
二、python數(shù)據(jù)處理
1.生成dw_order_by_day表
創(chuàng)建MySQL數(shù)據(jù)庫(kù)引擎
讀取ods_sales_orders(訂單明細(xì)表),根據(jù)create_date聚合,求總銷(xiāo)量/訂單量/客單價(jià)

利用空列表及循環(huán)生成對(duì)應(yīng)隨機(jī)值,與銷(xiāo)量訂單聚合表合并形成sum_amount_order_goal(銷(xiāo)量訂單聚合目標(biāo)表)


讀取dim_date_df日期維度表

連接(sum_amount_order_goal銷(xiāo)量訂單聚合目標(biāo)表)和(date_info日期維度表), 輸出:(dw_order_by_day銷(xiāo)量訂單聚合目標(biāo)及日期維度表)

2 生成dw_customer_order表
創(chuàng)建MySQL數(shù)據(jù)庫(kù)引擎
讀取數(shù)據(jù)ods_sales_orders和ods_customer、dim_date_df




把需要用到的字段用數(shù)據(jù)聚合提取,并且合并三表,最后輸出:dw_customer_order

3 生成dw_amount_diff表
創(chuàng)建MySQL數(shù)據(jù)庫(kù)引擎
讀取數(shù)據(jù)dw_order_by_day到dw_ods_sales_orders
求取各階段的總金額和訂單數(shù)(當(dāng)天,昨天,當(dāng)月,當(dāng)季度,當(dāng)年)與同期的數(shù)據(jù)作對(duì)比



最后輸出dw_amount_diff
三、使用powerbi來(lái)搭建可視化看板
1.使用poweibi連接mysql數(shù)據(jù)庫(kù)
獲取數(shù)據(jù) --- 選擇mysql數(shù)據(jù)庫(kù)

2.可視化報(bào)表布置與展示
運(yùn)用切片器來(lái)聯(lián)動(dòng)不同地區(qū)和城市的展示情況,KPI、卡片圖主要展示銷(xiāo)售量金額的變化,運(yùn)用表格、環(huán)形圖,地圖根據(jù)不同地區(qū)和城市展示
利用書(shū)簽跳轉(zhuǎn)各階段的對(duì)比展示


這里就先展示兩個(gè)階段的看板,后面幾個(gè)的展示跟這個(gè)差不多
四、 使用Hive和SQL完成ETL過(guò)程
1.Sqoop抽取數(shù)據(jù)到hive
通過(guò)shell腳本,在Linux運(yùn)行,將mysql中的數(shù)據(jù)轉(zhuǎn)移至hive

sqoop_dim_date_df.sh
sqoop_ods_sales_orders.sh、sqoop_ods_customer.sh與上述方式相同
2 hive中數(shù)據(jù)聚合
shell腳本代碼寫(xiě)hivesql語(yǔ)句做聚合,聚合內(nèi)容主要是根據(jù)實(shí)際業(yè)務(wù)需要自主分析一些指標(biāo)
在shell腳本基本框架:hive -e''hive sql語(yǔ)句''
五、 報(bào)告輸出
1.指標(biāo)搭建
1.1目的
如何制定銷(xiāo)售策略,調(diào)整產(chǎn)品結(jié)構(gòu),才能保持高速增長(zhǎng),獲取更多的收益,占領(lǐng)更多市場(chǎng)份額,是公司最關(guān)心的問(wèn)題。
報(bào)告通過(guò)對(duì)整個(gè)公司的自行車(chē)銷(xiāo)量持續(xù)監(jiān)測(cè)和分析,掌握公司自行車(chē)銷(xiāo)售狀況、走勢(shì)的變化,為客戶(hù)制訂、調(diào)整和檢查銷(xiāo)售策略,完善產(chǎn)品結(jié)構(gòu)提供依據(jù)。
1.2數(shù)據(jù)來(lái)源
數(shù)據(jù)來(lái)源與表名,基礎(chǔ)表存于Mysql數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)名:adventure_ods
dw_customer_order 產(chǎn)品銷(xiāo)售信息事實(shí)表
ods_customer?每天新增客戶(hù)信息表
dim_date_df 日期表
ods_sales_orders? 訂單明細(xì)表
1.3 指標(biāo)制定
a.從整體的角度:分析2019.1—2019.11自行車(chē)整體銷(xiāo)售表現(xiàn)
b.從地域的角度:分析11月每個(gè)區(qū)域銷(xiāo)售量表現(xiàn)、11月TOP10城市銷(xiāo)售量表現(xiàn)
c.從產(chǎn)品的角度:分析11月類(lèi)別產(chǎn)品銷(xiāo)售量表現(xiàn)、11月細(xì)分產(chǎn)品銷(xiāo)售量表現(xiàn)
d.熱銷(xiāo)產(chǎn)品:分析11月TOP10產(chǎn)品銷(xiāo)量榜、11月TOP10銷(xiāo)量增速榜
e.從用戶(hù)的角度:分析11月用戶(hù)年齡分布及每個(gè)年齡段產(chǎn)品購(gòu)買(mǎi)喜好、11月男女用戶(hù)比例及產(chǎn)品購(gòu)買(mǎi)喜好
2. pandas、numpy加工數(shù)據(jù)
部分代碼如下:
從數(shù)據(jù)庫(kù)讀取源數(shù)據(jù):dw_customer_order

查看數(shù)據(jù)類(lèi)型

增加create_year_month月份字段。按月維度分析時(shí)使用

篩選產(chǎn)品類(lèi)別為自行車(chē)的數(shù)據(jù)

自行車(chē)整體銷(xiāo)售量表現(xiàn)

計(jì)算order_num環(huán)比增長(zhǎng)

將環(huán)比增長(zhǎng)數(shù)值添加到overall_sales_performance中

計(jì)算sum_amount環(huán)比增長(zhǎng)

查看數(shù)據(jù)

將數(shù)據(jù)存入數(shù)據(jù)庫(kù)

通過(guò)上述數(shù)據(jù)加工,將存入mysql的數(shù)據(jù)接入powerbi與Excel,分別繪制圖像與表格,通過(guò)python把以下5個(gè)方面圍繞銷(xiāo)售表現(xiàn)情況進(jìn)行處理
a.整體銷(xiāo)售表現(xiàn)
b.地域銷(xiāo)售表現(xiàn)
c.產(chǎn)品銷(xiāo)售表現(xiàn)
d.熱品銷(xiāo)售分析
e.用戶(hù)行文分析
5個(gè)方面,完成線(xiàn)上自行車(chē)業(yè)務(wù)分析報(bào)告

