感動到流淚!數據分析師的福音:跨視圖粒度計算
作者:王文開 (本篇文章僅限知乎內部分享,如需轉載,請取得作者同意授權。)
在網易有數中,我們的目標是使數據分析成為一種愉快的行為。
個人認為一款優秀的數據分析工具應該是能夠做到:當用戶在使用它做數據分析的時候,已經忘記了工具的存在,而是能夠集中關注於發現數據背後揭示的故事。這個可以叫做experience flow,是一種沉浸在數據分析中的喜悅狀態。
同時,你一定遇到過的情況。有時,你遇到了一個問題,其實是很容易描述清楚的,但當你試圖在網易有數中展示並回答,會發現它竟是很難的。此時,剛才提到的experience flow,就沒有了感覺,你需要開始思考如何重新處理數據,此時你的分析思路會打斷,而不是集中在問題和答案。對於業務分析師來說,這是鬱悶的,他們遇到了困境缺不知道如何著手。
如上這些問題的核心是:
數據,需要可以自由匯總到不同的粒度,並且不同粒度的數據能夠在一張表裡進行展現。
這麼說比較抽象,我們來舉一個具體的電商場景的例子
某家電商成立於2013年,有一天數據分析師在利用網易有數做數據分析,首先她想看一下每年銷售額的增長情況,於是在有數中,很容易做出了如下的柱狀圖。她很滿意,銷售額一直在增長。
此時,她的腦海中出現了新的想法,她想看一下"每年的銷售額究竟都是由哪一年的客戶貢獻的?"
首先我們來分析一下她的問題,什麼叫「由哪一年的客戶貢獻的」?
於是她先在有數中做一個簡單的表格,把「客戶名稱","訂單ID","訂單日期"放入Y軸,得到如下圖表。可以看到,丁君這個客戶一共買過4個訂單,最早的購買日期是"2013-03-01",那我們就可以認為丁君這個客戶是2013年的客戶。所以我們就其實就是要在有數中計算出每個客戶首次購買時間,這樣我們就能知道該客戶是哪一年的客戶了
現在,我們的目標就是計算出「每個客戶的首次購買時間」。
怎麼做,是不是腦海中浮現出的第一個想法是 min([訂單日期]),恭喜你,已經成功了一半了
首先我們創建一個計算度量,如下圖
然後把這個欄位加到圖上,卻發現,並不是我們期待的效果。「訂單日期」和「最早購買日期」這兩列的數據完全一樣。為什麼會這樣?這就涉及到了圖表聚合粒度的問題,這塊內容我會在後續其他文章中詳細闡述。
這裡我想說的是,當前圖表中有「客戶名稱」,「訂單ID」,「訂單日期」,這些維度欄位都會確定圖表的聚合粒度,所以min([訂單日期]),這個聚合方式是會收到當前圖表粒度影響的。所以才會一模一樣。
所以,我們現在需要有一種方式,能夠指定這個日期的聚合粒度(維度),且不受圖表上的粒度所影響。
網易有數在這個版本中加入了重磅功能:跨視圖粒度計算表達式(Cross Level Calculation),下文簡稱CLC。
CLC,一共有三種形式,INCLUDE,EXCLUDE,FIXED,後邊我們一點點來揭開他們。
在當前的例子中,我們會需要用到FIXED表達式,他們的格式看起來像這樣:
注意,藍色部分看著熟悉吧,就是剛才那個基本的數據聚合公式----最小值。紅色的部分是一個新的容器,它告訴網易有數在執行藍色部分求最小日期的時候,在哪個數據粒度進行計算,如在FIXED公式中,就是告訴網易有數,僅僅在「客戶名稱」這個粒度,對訂單日期求最小,不考慮任何其他的粒度,也就是不考慮當前圖表上的粒度。
於是我們創建了一個計算維度,如下寫了FIXED表達式
此時,再把「每個客戶首次購買時間」,拖入圖表,這下就對了,這個欄位不會受到圖表上的粒度影響。
ok,現在萬事俱備了,現在只需要將「每個客戶首次購買時間」放到顏色欄,就能區分出每一年的銷售額裡面,有多少是2013年的客戶,有多少是2014年的客戶,...貢獻的
比如,可以從下圖可以看到:
1、2013年是這個電商的第一年,那所有的銷售額肯定是當年客戶貢獻的
2、2014年的銷售額中,有224.3萬是2013年客戶貢獻的,有116.8萬是2014年客戶貢獻的
如果不想看絕對值,可以將圖表改成堆疊百分比柱狀圖。這樣就能看到每年銷售額裡面,各個年份的客戶的貢獻百分比。
這樣就能看出問題了:
這家電商雖然銷售額逐年上升,但是新客的貢獻率越來越低
2014年的銷售額裡面,新客的貢獻率只有34.24%
2015年的銷售額裡面,新客的貢獻率降到了9.31%
2016年的銷售額裡面,新客貢獻率更低了
這就是網易有數中 跨視圖粒度計算 的一個小案例,真是冰山一角,敬請期待後續更多案例!
推薦閱讀:
※關於數據可視化的一些思考
※數據分析神器Tableau——讓你的數據會說話
※公安大數據應用之情報分析與關聯挖掘
※DataMap For Excel 高德版 2.5