數倉開發常常須要與數據表打交道,那麼數倉表開發完成以後就萬事大吉了嗎?顯然不是,還須要思考一下如何分析數據以及如何呈現數據,由於這是發揮數據價值很重要的一個方面。經過數據的分析與可視化呈現能夠更加直觀的提供數據背後的祕密,從而輔助業務決策,實現真正的數據賦能業務。經過本文你能夠了解到:
web
-
帕累託分析方法與數據可視化 -
RFM分析與數據可視化 -
波士頓矩陣與數據可視化
帕累託分析與數據可視化
基本概念
帕累託(Pareto)分析法,又稱ABC分析法,即咱們平時所提到的80/20法則。關於帕累託(Pareto)分析法,在不一樣的行業都有不一樣的應用。微信
-
舉個栗子
在企業的庫存管理中,能夠發現少數品種在總需用量(或是總供給額、庫存總量、儲備金總額)中,佔了很大的比重,但在相應的量值中所佔的比重不多。所以能夠運用帕累託分析法,將企業所需的各類物品,按其需用量的大小、物品的重要程度、資源短缺和採購的難易程度、單價的高低、佔用儲備資金的多少等因素分爲若干類,實施分類管理。編輯器
商品銷售額分析中,某些商品的銷售額佔了總銷售額的很大部分,某些商品的銷售額僅佔很小的比例,這樣就能夠將其分爲A、B、C幾大類,對銷售額佔比較多的分類進行投入,以得到更多的銷售額。函數
在質量分析中,對某種緣由致使產品質量不合格的產品數量進行分析,使用帕累託(Pareto)分析法,能夠很直觀的看出哪些緣由形成了產品質量不合格以及哪些緣由比較嚴重。這樣就能夠着重解決重要的問題,明確目標,更易於操做。工具
-
另外一種表述方式
根據事物在技術或經濟方面的主要特徵,進行分類,分清重點與非重點。對每一種分類進行區別對待管理,把被分析的對象分紅 A、B、C 三類,三類物品沒有明確的劃分數值界限。大數據
分類與重要程度 | 描述 |
---|---|
A類(很是重要) | 數量佔比少,價值佔比大 |
B類(比較重要) | 沒有A類那麼重要,介於 A、C 之間 |
C類(通常重要) | 數量佔比大但價值佔比很小 |
分類的核心思想:少數貢獻了大部分價值。以商品品類和銷售額爲例:A 品類數量佔整體 10% ,卻貢獻了 80% 的銷售額。flex
數據分析案例
-
效果圖
-
實現步驟
假設有以下數據集格式:spa
品牌 | 銷售額 |
---|---|
NEW BALANCE(新百倫) | 8750 |
ZIPPO(之寶) | 9760 |
OCTMAMI(十月媽咪) | 5800 |
須要將數據加工成下面的格式:.net
品牌 | 銷售額 | 銷售總額 | 累計銷售額 | 累計銷售額佔比 |
---|---|---|---|---|
=∑全部品牌銷售額 | =當前品牌銷售額 +上一個品牌銷售額 | 累計銷售額/銷售總額 |
具體的SQL實現以下:3d
SELECT
brand, -- 品牌
total_money, -- 銷售額
sum(total_money) over() AS sum_total_money,-- 銷售總額
sum(total_money) over(ORDER BY total_money DESC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS acc_sum_total_money -- 累計銷售額
FROM sales_money
上面給出了具體的SQL實現,其實BI工具已經內置了許多的處理函數和拖拽式的數據處理,不須要寫SQL也能夠將一份明細數據加工成上面的形式。
-
結論分析
從上面的帕累託圖中能夠看出:A類的(綠色部分)佔了總銷售額的80%左右,B類(黃色部分)佔總銷售額的10%,C類(紅色部分)佔總銷售額的10%。接下來能夠進行長尾分析,制定營銷策略等等。
RFM分析與數據可視化
基本概念
RFM模型是在客戶關係管理(CRM)中經常使用到的一個模型,RFM模型是衡量客戶價值和客戶創利能力的重要工具和手段。該模型經過一個客戶的近期購買行爲、購買的整體頻率以及花了多少錢三項指標來描述該客戶的價值情況。
RFM模型較爲動態地層示了一個客戶的所有輪廓,這對個性化的溝通和服務提供了依據,同時,若是與該客戶打交道的時間足夠長,也可以較爲精確地判斷該客戶的長期價值(甚至是終身價值),經過改善三項指標的情況,從而爲更多的營銷決策提供支持。
在RFM模式中,包括三個關鍵的因素,分別爲:
-
R(Recency):表示客戶最近一次購買的時間有多遠,即最近的一次消費,消費時間越近的客戶價值越大 -
F(Frequency):表示客戶在最近一段時間內購買的次數,即消費頻率,常常購買的用戶也就是熟客,價值確定比偶爾來一次的客戶價值大 -
M (Monetary):表示客戶在最近一段時間內購買的金額,即客戶的消費能力,一般以客戶單次的平均消費金額做爲衡量指標,消費越多的用戶價值越大。
最近一次消費、消費頻率、消費金額是測算消費者價值最重要也是最容易的方法,這充分的表現了這三個指標對營銷活動的指導意義。而其中,最近一次消費是最有力的預測指標。
經過上面分析能夠對客戶羣體進行分類:
客戶類型與等級 | R | F | M | 客戶特徵 |
---|---|---|---|---|
重要價值客戶 (A級/111) |
高(1) | 高(1) | 高(1) | 最近消費時間近、消費頻次和消費金額都很高 |
重要發展客戶 (A級/101) |
高(1) | 低(0) | 高(1) | 最近消費時間較近、消費金額高,但頻次不高,忠誠度不高,頗有潛力的用戶,必須重點發展 |
重要保持客戶 (B級/011) |
低(0) | 高(1) | 高(1) | 最近消費時間交遠,消費金額和頻次都很高。 |
重要挽留客戶 (B級/001) |
低(0) | 低(0) | 高(1) | 最近消費時間較遠、消費頻次不高,但消費金額高的用戶,多是將要流失或者已經要流失的用戶,應當基於挽留措施。 |
通常價值客戶 (B級/110) |
高(1) | 高(1) | 低(0) | 最近消費時間近,頻率高,但消費金額低,須要提升其客單價。 |
通常發展客戶 (B級/100) |
高(1) | 低(0) | 低(0) | 最近消費時間較近、消費金額,頻次都不高。 |
通常保持客戶 (C級/010) |
低(0) | 高(1) | 低(0) | 最近消費時間較遠、消費頻次高,但金額不高。 |
通常挽留客戶 (C級/000) |
低(0) | 低(0) | 低(0) | 都很低 |
數據分析案例
-
效果圖
-
實現步驟
假設有以下的樣例數據:
客戶名稱 | 日期 | 消費金額 | 消費數量 |
---|---|---|---|
上海****有限公司 | 2020-05-20 | 76802 | 2630 |
須要將數據集加工成以下格式:
具體SQL實現
SELECT
customer_name,-- 客戶名稱
customer_avg_money,-- 當前客戶的平均消費金額
customer_frequency, -- 當前客戶的消費頻次
total_frequency,-- 全部客戶的總消費頻次
total_avg_frequency, -- 全部客戶平均消費頻次
customer_recency_diff, -- 當前客戶最近一次消費日期與當前日期差值
total_recency, -- 全部客戶最近一次消費日期與當前日期差值的平均值
monetary,-- 消費金額向量化
frequency, -- 消費頻次向量化
recency, -- 最近消費向量化
rfm, -- rfm
CASE
WHEN rfm = "111" THEN "重要價值客戶"
WHEN rfm = "101" THEN "重要發展客戶"
WHEN rfm = "011" THEN "重要保持客戶"
WHEN rfm = "001" THEN "重要挽留客戶"
WHEN rfm = "110" THEN "通常價值客戶"
WHEN rfm = "100" THEN "通常發展客戶"
WHEN rfm = "010" THEN "通常保持客戶"
WHEN rfm = "000" THEN "通常挽留客戶"
END AS rfm_text
FROM
(SELECT
customer_name,-- 客戶名稱
customer_avg_money,-- 當前客戶的平均消費金額
customer_frequency, -- 當前客戶的消費頻次
total_avg_money ,-- 全部客戶的平均消費總額
total_frequency,-- 全部客戶的總消費頻次
total_frequency / count(*) over() AS total_avg_frequency, -- 全部客戶平均消費頻次
customer_recency_diff, -- 當前客戶最近一次消費日期與當前日期差值
avg(customer_recency_diff) over() AS total_recency, -- 全部客戶最近一次消費日期與當前日期差值的平均值
if(customer_avg_money > total_avg_money,1,0) AS monetary, -- 消費金額向量化
if(customer_frequency > total_frequency / count(*) over(),1,0) AS frequency, -- 消費頻次向量化
if(customer_recency_diff > avg(customer_recency_diff) over(),0,1) AS recency, -- 最近消費向量化
concat(if(customer_recency_diff > avg(customer_recency_diff) over(),0,1),if(customer_frequency > total_frequency / count(*) over(),1,0),if(customer_avg_money > total_avg_money,1,0)) AS rfm
FROM
(SELECT
customer_name, -- 客戶名稱
max(customer_avg_money) AS customer_avg_money , -- 當前客戶的平均消費金額
max(customer_frequency) AS customer_frequency, -- 當前客戶的消費頻次
max(total_avg_money) AS total_avg_money ,-- 全部客戶的平均消費總額
max(total_frequency) AS total_frequency,-- 全部客戶的總消費頻次
datediff(CURRENT_DATE,max(customer_recency)) AS customer_recency_diff -- 當前客戶最近一次消費日期與當前日期差值
FROM
(SELECT
customer_name, -- 客戶名稱
avg(money) over(partition BY customer_name) AS customer_avg_money, -- 當前客戶的平均消費金額
count(amount) over(partition BY customer_name) AS customer_frequency, -- 當前客戶的消費頻次
avg(money) over() AS total_avg_money,-- 全部客戶的平均消費總額
count(amount) over() AS total_frequency, --全部客戶的總消費頻次
max(sale_date) over(partition BY customer_name) AS customer_recency -- 當前客戶最近一次消費日期
FROM customer_sales) t1
GROUP BY customer_name)t2) t3
經過上面的分析,能夠爲相對應的客戶打上客戶特徵標籤,這樣就能夠針對某類客戶指定不一樣的營銷策略。
波士頓矩陣與數據可視化
基本概念
波士頓矩陣BCG Matrix又稱市場增加率-相對市場份額矩陣、波士頓諮詢集團法、四象限分析法、產品系列結構管理法等。
BCG矩陣區分出4種業務組合:
-
1.明星型業務(Stars,指高增加、高市場份額) -
2.問題型業務(Question Marks,指高增加、低市場份額) -
3.現金牛業務(Cash cows,指低增加、高市場份額) -
4.瘦狗型業務(Dogs,指低增加、低市場份額)
波士頓矩陣經過銷售增加率(反映市場引力的指標)和市場佔有率(反映企業實力的指標)來分析決定企業的產品結構。
案例
-
效果圖
-
實現步驟
本案例以分析客戶爲背景,將客戶分類,找到明星客戶、現金牛客戶、問題客戶以及瘦狗客戶。
假設數據集的樣式以下:
客戶類型 | 客戶名稱 | 消費金額 | 消費日期 |
---|---|---|---|
A類 | 上海****公司 | 20000 | 2020-05-30 |
-
首先須要計算客單價:每一個客戶的平均消費金額,即客單價=某客戶總消費金額)/某客戶消費次數
-
其次須要計算記錄數:每一個客戶的消費次數,即某個客戶總共消費的次數
-
接着須要計算平均消費金額:全部客戶的平均消費金額,即全部客戶的總消費金額/全部客戶消費次數
-
最後計算平均消費次數:全部客戶的平均消費次數,即全部客戶的總消費次數/總客戶數
具體SQL實現:
SELECT
customer_name, -- 客戶名稱
customer_avg_money, -- 客單價
customer_frequency , -- 當前客戶的消費次數
total_avg_money,-- 全部客戶的平均消費金額
total_frequency / count(*) over() AS total_avg_frequency -- 平均消費次數
FROM
(SELECT
customer_name, -- 客戶名稱
max(customer_avg_money) AS customer_avg_money, -- 客單價
max(customer_frequency) AS customer_frequency , -- 當前客戶的消費次數
max(total_avg_money) AS total_avg_money,-- 全部客戶的平均消費金額
max(total_frequency) AS total_frequency --全部客戶的總消費頻次
FROM
(
SELECT
customer_name, -- 客戶名稱
avg(money) over(partition BY customer_name) AS customer_avg_money, -- 客單價
count(*) over(partition BY customer_name) AS customer_frequency, -- 當前客戶的消費次數
avg(money) over() AS total_avg_money,-- 全部客戶的平均消費金額
count(*) over() AS total_frequency --全部客戶的總消費頻次
FROM customer_sales ) t1
GROUP BY customer_name) t2
通過上面的分析,大體能夠看出客戶畫像:
-
某客戶的消費次數超過平均值,而且每次消費力度(客單價)也超過平均水平的客戶:斷定爲明星客戶,這類客戶須要重點關注; -
某客戶的消費次數超過平均值,但每次消費力度未達到平均水平的客戶:被斷定爲現金牛客戶,這類客戶一般消費頻次比較頻繁,能給企業帶來較爲穩定的現金流,這類客戶是企業利潤基石; -
某客戶的消費次數未達到平均值,但每次消費力度超過平均水平的客戶:是問題客戶,這類客戶最有但願轉化爲明星客戶,可是由於客戶存在必定的潛在問題,致使消費頻次不高,這類客戶須要進行重點跟進和長期溝通; -
消費次數未達到平均值,消費力度也未達到平均水平的客戶:屬於瘦狗客戶,這類客戶一般佔企業客戶的大多數,只須要通常性維護,若是企業資源有限,則能夠不用投入太多的精力。
總結
本文主要介紹了數倉開發應該要了解的常見的數據分析方法,主要有三種:帕累託分析、RFM分析以及波士頓矩陣分析。本文分別介紹了三種分析方法的基本概念、操做步驟以及SQL實現,並給出了相應的可視化分析圖表,每一個案例都是企業的真實應用場景。但願給數倉開發的同窗提供一些觀察數據的分析角度,從而在實際的開發過程當中可以多思考一下數據的應用價值以及數據如何賦能業務,進一步提高本身的綜合能力。
本文分享自微信公衆號 - SQL數據分析(dianwu_dw)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。