多維交叉分析 排查網站數據異常

  我們在進行數據分析的時候,大部分時間都在使用趨勢分析、比較分析、細分分析這三類方法,但其實還有一個方法我們也會經常使用交叉分析,尤其是在排查數據異常的問題時,交叉分析就能展現其強大的威力。另外要跟大傢說聲抱歉的是博客的更新頻率可能沒有那麼頻繁瞭,但是盡量每個月至少能發佈一篇,希望文章的質量有所保證,還是歡迎大傢留言討論,能夠發起一些有趣的話題,一起拓展在網站數據分析方面的思路。

  什麼是交叉分析?

  交叉分析是指對數據在不同維度進行交叉展現,進行多角度結合分析的方法,彌補瞭獨立維度進行分析沒法發現的一些問題。

  交叉分析以多維模型和數據立方為基礎,也可以認為是一種特殊的細分方式,但跟細分的概念有點差異,如果有興趣可以先閱讀下之前的文章數據立方體與OLAP。細分的方法更多的是基於同一維度的縱深展開,也就是OLAP中的鉆取(Drill-down),比如從月匯總的數據細分來看每天的數據,就是在時間維度上的細分,或者從省份的數據細分查看省份中各城市的數據,是基於地域維的下鉆。交叉分析不再局限於一個維度,就像數據立方體與OLAP文章中的立方體,是基於不同維度的交叉,時間維、地域維和產品維交叉在一起分析每個小立方的數據表現,可以通過OLAP的切片(Slice)和切塊(Dice)操作查看例如上海市在3月份的電子產品的銷售情況,這會幫助我們發現很多在單個維度中無法發現的問題。所以,交叉分析是基於不同維度橫向地組合交叉,而不是細分在同一維度的縱向展開。

  交叉分析的展現形式

  交叉分析涉及多維度的組合,雖然圖表和表格都可以進行展現,但因為圖表所能表達的數據有限,且比較不容易把多個維度的交叉關系展現出來,在交叉分析中不太常用,通常以表格為主。我們平常在看的表格通常被叫做二維表,一般第一列放置一個維度,如日期,表頭羅列各類指標(其實所有指標也可以被認為是一種特殊的維度指標維),這樣行列的兩個維就組成瞭最常見的二維表。二維表可以進行擴展,進而展現更加豐富的維度:

  如上圖就是典型的基於表格的多維度交叉分析的佈局,在行列中分層次放置多個維度,如果我們隻顯示一個指標,那麼這裡的指標維就沒有顯示的必要瞭。其實Excel的數據透視表(Pivot Table)就是交叉分析的利器,我在數據的報表和報告這篇文章中提到過數據透視表,這裡還是基於那篇文章截圖的原始數據,如果我們將各維度按照上面的佈局形式進行展現的話,會是怎麼樣的效果:

  看起來還不錯,顯示的信息非常豐富,左邊包含瞭以天為單位時間維和產品維,可以使用展開按鈕進行匯總和展開,就像是細分的操作;上面的表頭部分分兩層羅列瞭地域維和指標維,Excel的透視表提供瞭豐富的設置,默認展現基於各個維度的匯總數據,讓我們可以從總-分的角度觀察數據,這對數據分析非常有用。假如我們使用上面的透視表進行交叉分析發現數據是否存在異常?

  使用從總體到細節的分析方法,首先可以從查看每天銷售額和轉化率的匯總數據開始,折疊產品維之後觀察最右側的指標匯總列就可以看到每日匯總數據;如果某一天的銷售額或轉化率出現瞭大幅的下滑,我們就可以結合各種維度尋找問題的原因,就是基於各種維度的細節數據,展開產品維觀察當天的哪類產品銷售出現瞭問題,然後結合地域維的交叉數據,可以定位哪類商品在哪個省份的銷售出現瞭問題,這樣就有效地將問題定位到瞭細節的層面,能夠更好地發現問題,進而解決問題。所以交叉分析其實正是體現瞭分析分而析之的本意。

  上面的方法一般是比較常用的基於問題的分析方法,但我們很少可以一次就定位到問題,往往我們會根據推測多次查詢數據庫或查看Dashboard上的各類報表來定位問題。而結合透視表的交叉分析,我們使用一張報表就快速地定位瞭問題所在,從總體到細節,邏輯非常清晰,問題的定位也非常準確和到位,所以合理地利用交叉分析可以幫助我們更加高效地排查問題。

  交叉分析的基礎

  這裡不得不再說一下交叉分析基於的底層基礎數據模型,因為如果沒有設計好底層的數據模型,上層的交叉分析是很難實現的,或者多維的交叉受到限制而使分析存在局限性。

  從技術層面來看,交叉分析基於多維模型,數據的維度越豐富,所能實現的交叉也越豐富和靈活,通過各種交叉分析能夠更加有效地發現問題;但相應的,如果要盡可能地豐富各維度的交叉分析,對基層模型的要求也就越高。所以如何設計好數據的底層模型非常關鍵,還是引用數據立方體與OLAP文中的那個數據立方看個簡單的例子:

  如果一張網站分析的報表隻包含以月度為單位的日期維和相應的指標,那麼數據的存儲就是每個月一條記錄,但顯然這種高度聚合的數據不利於分析,我們需要構建如上圖的數據立方體來獲取更加細節的數據。用數據立方來拓展數據細節有兩種方向,一類是縱深拓展,也就是基於一個維度的細分,比如將一個月細分到每一天,那麼一條記錄將會被拓展成30條;還有一種是橫向的拓展,就是多個維度的交叉,就像上面立方中添加瞭產品維和地域維。這樣存儲的數據就從原本單一的時間維度擴展成瞭時間、產品和地域三個維度,也就是三維立方體所能展現的形式,當然維度可以繼續擴展,四個五個直到N個,理論上都是可行的,這裡隻要以三個維度進行舉例就可以。對於數據存儲而言,橫向的拓展與縱深拓展的影響是一樣的,記錄數都是以倍乘的方式增長,假設這裡產品維是產品大類,有20個產品大類,再加上32個省份或直轄市,那麼經過縱深和橫向拓展之後,原先每月的1條記錄就變成瞭:

  1 × 30 × 20 × 32 = 19200

  而我們在構建多維模型的時候很多維度中包含的數據量絕對不像上面例舉的那麼小,想象一下網站的商品或者頁面的數量可能是成百上千甚至成千上萬的,那麼一旦以倍乘的形式擴展之後,數據量就會一下子劇增。雖然豐富的多維立方能夠給分析帶來便利,但也同時給數據的存儲和查詢帶來的壓力。

  所以,更加豐富和靈活的分析需求的實現基於更加復雜的多維模型或者數據立方,同時會帶來更大的系統開銷。Google Analytics很好地權衡瞭靈活的數據分析與復雜數據模型之間的關系,這也是Google Analytics強大功能的基本保障,GA的高級細分(Advanced Segments)和自定義Dashboard是其他同類免費網站分析工具所無法比擬的,這也正是為什麼我們將GA劃分到網站數據分析工具,而其他的大部分隻能算作網站數據統計工具的原因。而GA正是基於其構建的強大的底層數據模型和高效的數據計算和響應能力,使很多分析功能可以得到擴展,其中很多就涉及交叉分析,這裡截圖瞭其中的兩個功能,Secondary Dimension和Pivot:

  Google Analytics新版本增加瞭很多令人心動的功能,Secondary dimension的功能從老版本得到瞭延續,上圖在Content模塊的Page報表中選擇瞭流量來源作為第二維度,這樣我們就可以查看每個頁面的流量是從何而來,每個流量來源在該頁面的數據表現,同時可能還可以發現一些有趣的現象,比如某些頁面的流量基本都是一個來源帶來的,比如我的博客的某些文章基本都是通過搜索引擎進來的,而另外一些文章基本通過直接流量帶來。

  在GA的各類報表中可以在右上角選擇展現的形式,最後的一種就是Pivot,Pivot的形式對表格的表頭進行瞭擴展,可以分層次放置另外的維度,如上圖還是使用瞭頁面與流量來源的交叉,將Source維度放到瞭指標的上方。同時GA支持在兩個維度的基礎上最多選擇兩個度量Metric,我這裡選擇瞭Pageviews和Bounce Rate,來衡量每個頁面中各類流量來源所帶來的量和質,同樣對於分析非常有價值。

  多維的交叉分析我們在日常中潛移默化地經常會用到,交叉分析對於問題的排查和定位額外有效,所以我們需要想辦法用更好的形式去展現數據,以便於更有利於進行交叉分析,其實這裡介紹的透視表的方式是最常用的,也是比較好用的,但這類方式太少,不知道大傢有沒有其他更加有效的交叉分析展現方式。

  » 本文采用 BY-NC-SA 協議,轉載請註明來源:網站數據分析 » 《多維交叉分析》

  原文:/data-analysis-method/cross-analysis/