PowerBI 零代碼處理 10000 億行數據
來自專欄 excel1205 人贊了文章
什麼是大數據,拖拽滑鼠然後秒級計算超過 10000 億行數據算不算。
早在7月的微軟大會上就演示了這個特性(參考:從PowerBI定義現代BI未來 揭開微軟驚天戰略),9月就發布了預覽版,能讓所有用戶來體驗這項功能。我們在9月更新解讀中深度聊過這個話題,有夥伴建議是否可以錄製一個小視頻來解釋一下。立即就發現微軟的老師已經在 18.09.12 發布了一個下視頻來說明此事。在這裡,我們不妨一起再來從純用戶的角度來感受一下。
下面讓我們跟隨微軟的老師一起來了解一下。
我們最關注的問題就是:PowerBI到底可以處理多少數據?
老師開玩笑的拿出三張磁碟,這些磁碟加起來大概容量是1M,也就是100W左右位元組。而PowerBI可以處理的數據,按行計算,也要比這些多得多。
老師開始演示PowerBI可以處理的數據條目,如下:
請注意老師身後的顯示器,顯示了1.01T,含義是1.01T行數據,也就是 10000億行。這個計算在1秒內完成。
在當前頁面進行數據拖拽以及切片,都可以瞬時反應出計算結果。這說明在一個比較高的匯總級別來分析問題,面對多達 10000億行 的原始數據,是可以快速做到秒級響應的。
除非,我們非要看它的原子數據,例如:
注意,用戶在矩陣點擊右鍵,鑽渠到明細,這時PowerBI將在原始數據中查找符合篩選條件的結果,這個過程相對更加費時一些。
大概經過近30秒的計算才從多達10000億的原始數據中計算出詳細的軌跡數據。
現在,讓我們一起來看看這裡面涉及的原理。主要是 導入模式 和 DirectQuery模式 的結合使用。
它們的主要區別在於: - 導入模式的性能更好 - DirectQuery模式可以處理更實時的數據 - DirectQuery模式可以處理更大規模的數據
因此,我們應該將這兩種方式結合使用。
考慮下面的數據模型,它們既可以使用導入模式,也可以使用DirectQuery模式,如下:
在實際中,最好的方式是將這兩種方式結合使用,如下:
可以看出,這裡將數據量相對有限的日期,員工,產品以及地理位置使用導入模式;而將零售,銷售及客戶數據使用DirectQuery模式。
最關鍵的步驟來了:
這裡使用了一張額外的 聚合 表,實現預先計算的目的。這樣,一旦用戶從某些角度來查詢,會命中到這個預先計算的聚合表,直接返回答案,這個速度就會非常快。在實際操作中,這個聚合表通常可以使用隱藏狀態,對用戶完全透明的。用戶只是知道自己拖拽了 維度 和 指標 到報表上進行計算,也知道這些計算可能涉及到底層超過 10000億行 的數據,但用戶並不知道他的查詢命中了聚合表而直接返回了計算結果。
如果用戶的查詢無法命中聚合表,才會真正使用DirectQuery模式向數據源發起查詢,這取決於數據源的響應速度。在微軟的Azure提供的包括 Spark 以及 SQL Data Warehouse 等大型數據源都可以支持很大規模的數據查詢並提供很好的性能響應保障。
OK。這就是 PowerBI 進行大規模數據操作的核心原理。
正如 PowerBI 的口號:前所未有的商業智能。
本文來自微軟官方頻道的視頻講解,大家可以在這裡在線或下載觀看:
https://channel9.msdn.com/Shows/Azure-Friday/Unlock-petabyte-scale-datasets-in-Azure-with-aggregations-in-Power-BI
在 PowerBI 9 月更新的介紹文章中已經完全介紹了其中的原理。參考:9月更新詳解。
更多PowerBI學習資源,敬請關注微信公眾號:Excel120。
推薦閱讀:
※數據挖掘和機器學習的面試問題
※MLIA/第六章:支持向量機/上
※0 大數據學習計劃
※機器學習重遊記開篇
※機器學習之數據預處理