標籤:

掌握了SQL,還有必要學DAX嗎?

SQL是一門全能的語言,可以取數、可以分析。熟練使用SQL,是否還有必要學習DAX,是個值得探究的話題。

本文作者Rob Collie,前微軟員工,2010-2016年微軟MVP(SQL Server方向),以下是正文。

一位DBA的來信

Rob你好:我之前從事軟體/資料庫開發工作,最近轉行做BI分析師,在這個新領域,Excel是我最常用的工具。得益於以往的經驗,我熟悉資料庫環境、可以自定義SQL查詢語句和使用SMS管理數據模型。令我糾結的是,如果用SMS和SQL可以搞定任務,還有必要掌握PowerPivot(DAX函數)嗎?希望是我漏掉了一些關鍵信息,比如,如果沒有我提到的「重型武器」,PowerPivot確實是一個強大的工具。也許這就是原因?期待你的回復Jason

註:這是一個好問題,相信還會困擾很多後來者。Jason的觀點,贊同者有之,困惑者有之,這裡沒有標準答案,重要的是你能從中獲得什麼樣的啟發。

你屬於哪一種分析師?

一般說來,讀到這篇文章的人可以被歸入以下四類之一

  1. 剛接觸PowerPivot,沒有SQL經驗。(大部分Excel用戶屬於這一類)
  2. 擅長PowerPivot,但不了解SQL。
  3. 兩者兼備(幸運組)。
  4. 擅長SQL,剛接觸PowerPivot。

本文的目標受眾是第四類用戶,但和1-3類用戶也有關係,因為每個人可能都會被問到這個問題。

DBA(資料庫管理員)視角

業務人員:達戈巴星球的激光劍銷量增加了嗎?IT: 內啥我寫個SQL,明天答覆你。

一名DBA的日常,除了寫SQL,可能還包括維護索引、查找系統瓶頸、優化I/O開銷、創建臨時資料庫...等等。

某一天,業務人員發現他們需要的數據都由你維護,於是帶著問題找了過來。然後就發生了圖片上的對話,你寫了一個SQL查詢,問題解決了。

這種緊密合作的感覺非常棒,並且也讓IT更靠近前端業務,從成本中心向利潤中心轉變。Jason很可能就是這種工作方式。或早或晚你也會遇到Jason的疑問,「我已經掌握了一個解決問題的完美工具 - SQL,為什麼還要去研究PowerPivot?」 現在,是時候揭曉答案了。

滴管和漏斗

簡而言之,SQL是為存儲和檢索數據而生,並不是分析。而SQL被廣泛用於數據分析證明了它有足夠的靈活性和強大的性能,但是一項技術很難針對不同場景都優化到完美

PowerPivot(DAX函數)專門為數據分析進行了優化,這是SQL不擅長的領域,反之DAX也不適合用來取數和存儲。由於SQL的存在,PowerPivot不必在SQL擅長的領域做的更好,這給了PowerPivot更大的自由去做自己擅長的事情。

一旦把SQL和DAX組合使用,會帶來顯著的效益。在混合環境中,使用SQL來存儲,準備和處理數據,然後使用Power Pivot來計算/分析/瀏覽這些數據

再深入一層

分析任務要求以下四項特定內容,SQL並沒有做針對性的優化:

  1. 聚合 - 這就是前面「漏斗與吸管」的比喻。分析很少「關注」單個行,而是由行的聚合驅動(列計算)。
  2. 密集型計算 - 不僅僅是對行集合做SUM或Average運算,而是像「去年的百分比變化」和「我們的客戶在頭六個月內回報的百分比」
  3. 臨時、快速變化的查詢 - 提出問題,得到答案,意識到問題有缺陷,修改問題並再次計算。這個過程需要在幾秒鐘內,而不是幾分鐘、幾小時或幾天內完成。
  4. 易於閱讀和書寫的語法- 理想情況下,您希望一小部分業務用戶能夠學習它 - 並且掌握在上述1-3中描述的技能(而不僅僅是獲取行數據集)

20世紀80年代,工程師們開始構思一種新的資料庫引擎:不需要經常獲取單獨的行;不必允許連續寫入;通常是只讀的,並且不經常從源數據重新構建。這樣的引擎可以自由地優化「聚合和計算」。

後來,OLAP資料庫誕生了,即在線分析處理服務,在當時,「在線」的意思是「幾秒鐘內找到問題的答案」,而不是「運行查詢,然後回家,第二天來看結果」。

PowerPivot的出現讓OLAP服務變得更友好,更易於被業務人員使用,不過,這個世界仍然信奉「通過SQL得出答案」,儘管OLAP是一個偉大的發明,但在全球範圍內關於SQL的專業知識要遠遠多於OLAP的專業知識,這讓後者的學習過程看起來更加複雜(Rocket Science)

相比於傳統OLAP方案,PowerPivot的數據存儲於內存而不是硬碟,整個分析過程沒有硬碟I/O開銷,速度更快。

很多商業智能的專業人士不知道OLAP,通常有以下三個原因

  1. 大多數BI專家是DBA出身的
  2. 儘管SQL的分析能力存在缺點,但SQL方法仍然對所有人都管用。
  3. 替代方案(OLAP)並不容易掌握以致於很多人並不知道他們錯過了什麼。

更快的改變查詢,不僅僅可以更快得到結果,還允許你提出更高質量的問題

僅僅是重新調整透視表布局,就運行了一個全新的查詢;點擊切片器,查詢也會相應變化。花費兩秒鐘,你可以從一種查詢切換另一種完全不同的查詢。整個過程不需要打開編輯器、修改語句、重新運行。

當這種便利性和高效的計算速度結合起來,你面前的工具允許你用思維的速度開展分析

速度的提升,使得你可以嘗試之前從未有過的分析體驗。向工具提出之前從未考慮過的問題,這種問題在之前被稱作「項目」,而現在,幾分鐘就可以搞定了

最後,你把做好的Dashboard呈現給用戶,那些完全不了解Power Pivot和SQL的人,他們也將被你賦予自主分析問題的能力,點擊切片器或者自行構建透視表,即刻得到想要的結果,不需要任何專業知識也不需要漫長的等待。

而你,不再需要被動響應各種需求,不再是整個分析流程上的瓶頸。

你,被解放了。

題外話

隨著使用者的增加,在Excelhome、知乎上關於Power BI的討論和分享正在變的越來越多。

對於Excel用戶,感受PowerQuery帶來的改變是比較容易的,你可以把它想像成集合了VBA+Excel函數的自動化工具,從傳統的Excel進化到PowerQuery,是量的變化

而PowerPivot的作用似乎不那麼容易感知,因為Excel里從來沒有存在過一個類似功能的東西,沒有可以類比的對象。換句話說,對於Excel使用者,PowerPivot是從0到1的質變。想要切實體會到這種變化帶來的好處,你無法站在一旁只靠想像,你需要親自上陣駕馭它。

擴展閱讀,來自上周我在知乎上回答的兩個問題

Power BI將超越python和D3,成為數據可視化的福音、定性數據分析的未來?zhihu.com/question/6177如何才能成為EXCEL數據處理大神? - 知乎
推薦閱讀:

認識DAX數據分析語言
桌面端無法登陸的調查原因及解決方案(2017.12.22更新)
使用Power BI進行商品關聯性分析
從0開始學習Power BI,可能遇到哪些問題
Power Query新特性:你給答案,我來計算

TAG:PowerBI |