最近剛剛做的adventure項(xiàng)目拣凹,接下來把我做項(xiàng)目的過程和步驟展示出來划咐,方便大家學(xué)習(xí)理解抡四。
以下先展示本次項(xiàng)目的結(jié)果:
一央串、項(xiàng)目概述:
1.背景介紹
Adventure Works Cycle是國(guó)內(nèi)一家生產(chǎn)和銷售自行車及和相關(guān)配件的制造公司蚂踊。利用每日商品銷售及相關(guān)客戶信息數(shù)據(jù)约谈,獲取商品銷售趨勢(shì)、地域分布情況以及簡(jiǎn)單用戶畫像犁钟,進(jìn)行可視化展示棱诱,為運(yùn)營(yíng)人員提供自主分析工具。
公司主營(yíng)業(yè)務(wù)有自行車涝动,服裝迈勋,配件,這里主要分析的是自行車業(yè)務(wù)醋粟。
2.指標(biāo)情況
從整體的角度:分析2019.1—2019.11自行車整體銷售表現(xiàn)?
從地域的角度:分析11月每個(gè)區(qū)域銷售量表現(xiàn)家淤、11月TOP10城市銷售量表現(xiàn)?
從產(chǎn)品的角度:分析11月類別產(chǎn)品銷售量表現(xiàn)、11月細(xì)分產(chǎn)品銷售量表現(xiàn)?
熱銷產(chǎn)品:分析11月TOP10產(chǎn)品銷量榜鹏控、11月TOP10銷量增速榜?
從用戶的角度:分析11月用戶年齡分布及每個(gè)年齡段產(chǎn)品購(gòu)買喜好短绸、11月男女用作者
3.數(shù)據(jù)獲取來源
1)ods_sales_orders 訂單明細(xì)表:? ? ? ?
2)ods_customer 每日新增用戶表:
3)dim_date_df 日期維度表:
dw_order_by_day? ? ? ?每日環(huán)比表? ?
輸出:dw_order_by_day銷量訂單聚合目標(biāo)及日期維度表
dw_customer_order? ? 時(shí)間地區(qū)產(chǎn)品聚合表
輸出:每日新增用戶表,銷售訂單表育苟,日期維度表的訂單聚合
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聚合,求總銷量/訂單量/客單價(jià)
利用空列表及循環(huán)生成對(duì)應(yīng)隨機(jī)值,與銷量訂單聚合表合并形成sum_amount_order_goal(銷量訂單聚合目標(biāo)表)
讀取dim_date_df日期維度表
連接(sum_amount_order_goal銷量訂單聚合目標(biāo)表)和(date_info日期維度表), 輸出:(dw_order_by_day銷量訂單聚合目標(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來搭建可視化看板
1.使用poweibi連接mysql數(shù)據(jù)庫(kù)
獲取數(shù)據(jù) --- 選擇mysql數(shù)據(jù)庫(kù)
2.可視化報(bào)表布置與展示
運(yùn)用切片器來聯(lián)動(dòng)不同地區(qū)和城市的展示情況,KPI肥照、卡片圖主要展示銷售量金額的變化脚仔,運(yùn)用表格、環(huán)形圖舆绎,地圖根據(jù)不同地區(qū)和城市展示
利用書簽跳轉(zhuǎn)各階段的對(duì)比展示
這里就先展示兩個(gè)階段的看板鲤脏,后面幾個(gè)的展示跟這個(gè)差不多
四、 使用Hive和SQL完成ETL過程
1.Sqoop抽取數(shù)據(jù)到hive
通過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腳本代碼寫hivesql語(yǔ)句做聚合努溃,聚合內(nèi)容主要是根據(jù)實(shí)際業(yè)務(wù)需要自主分析一些指標(biāo)
在shell腳本基本框架:hive -e''hive sql語(yǔ)句''
五硫嘶、 報(bào)告輸出
1.指標(biāo)搭建
1.1目的
如何制定銷售策略,調(diào)整產(chǎn)品結(jié)構(gòu)梧税,才能保持高速增長(zhǎng)沦疾,獲取更多的收益,占領(lǐng)更多市場(chǎng)份額第队,是公司最關(guān)心的問題哮塞。
報(bào)告通過對(duì)整個(gè)公司的自行車銷量持續(xù)監(jiān)測(cè)和分析,掌握公司自行車銷售狀況凳谦、走勢(shì)的變化忆畅,為客戶制訂、調(diào)整和檢查銷售策略尸执,完善產(chǎn)品結(jié)構(gòu)提供依據(jù)家凯。
1.2數(shù)據(jù)來源
數(shù)據(jù)來源與表名,基礎(chǔ)表存于Mysql數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)名:adventure_ods
dw_customer_order 產(chǎn)品銷售信息事實(shí)表
ods_customer?每天新增客戶信息表
dim_date_df 日期表
ods_sales_orders? 訂單明細(xì)表
1.3 指標(biāo)制定
a.從整體的角度:分析2019.1—2019.11自行車整體銷售表現(xiàn)
b.從地域的角度:分析11月每個(gè)區(qū)域銷售量表現(xiàn)如失、11月TOP10城市銷售量表現(xiàn)
c.從產(chǎn)品的角度:分析11月類別產(chǎn)品銷售量表現(xiàn)绊诲、11月細(xì)分產(chǎn)品銷售量表現(xiàn)
d.熱銷產(chǎn)品:分析11月TOP10產(chǎn)品銷量榜、11月TOP10銷量增速榜
e.從用戶的角度:分析11月用戶年齡分布及每個(gè)年齡段產(chǎn)品購(gòu)買喜好岖常、11月男女用戶比例及產(chǎn)品購(gòu)買喜好
2. pandas、numpy加工數(shù)據(jù)
部分代碼如下:
從數(shù)據(jù)庫(kù)讀取源數(shù)據(jù):dw_customer_order
查看數(shù)據(jù)類型
增加create_year_month月份字段葫督。按月維度分析時(shí)使用
篩選產(chǎn)品類別為自行車的數(shù)據(jù)
自行車整體銷售量表現(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ù)
通過上述數(shù)據(jù)加工竭鞍,將存入mysql的數(shù)據(jù)接入powerbi與Excel板惑,分別繪制圖像與表格,通過python把以下5個(gè)方面圍繞銷售表現(xiàn)情況進(jìn)行處理
a.整體銷售表現(xiàn)
b.地域銷售表現(xiàn)
c.產(chǎn)品銷售表現(xiàn)
d.熱品銷售分析
e.用戶行文分析
5個(gè)方面偎快,完成線上自行車業(yè)務(wù)分析報(bào)告