題記:這篇文章不僅是Power BI的入門教程,,同時相對于Qlik Sense進行了簡單比較,。 最近把一個Qlik Sense的示例應用手動轉(zhuǎn)成了Power BI的應用,把相關(guān)步驟和遇到的問題記錄如下,,權(quán)當作一個入門教程,。 1,準備原始數(shù)據(jù)由于Qlik Sense的示例應用只有一個單獨的qvf文件,,那么原始數(shù)據(jù)只有通過qvf來導出,。此qvf中的數(shù)據(jù)模型如下圖所示: Qlik Sense并沒有提供數(shù)據(jù)模型包含數(shù)據(jù)的完整導出功能,所以只能采用最麻煩和原始的方式,,即:創(chuàng)建表格,,在表格中添加某個數(shù)據(jù)表的所有字段,然后再利用可視化對象的導出功能導出數(shù)據(jù)為xlsx文件,。通過這種方式,,把所有表都導出。注:但在實際操作當中,,未必所有表都導出,,因為有些表可以在Power BI中生成(比如日期表DateParts),有些表在Power BI中也用不到(比如月份順序表Month Sort Order),。 當然,,如果你拿得到原始數(shù)據(jù)的文件或者數(shù)據(jù)庫,那么就可以跳過這一步,。 2,,加載數(shù)據(jù)這步比較簡單,在Power BI中新建一個文檔,,通過“獲取數(shù)據(jù)”-“Excel”來選擇需要導入的xlsx文件,。 選擇文件之后,會顯示“導航器”對話框,。在這里選擇需要導入的工作表(可以選擇多個),。選擇工作表之后,可以直接點“加載”,,也可以點“編輯”來打開“查詢編輯器”修改ETL腳本(當然在加載之后還是可以重新編輯腳本),。如果直接點“加載”之后,Power BI就會把選擇的工作表中的數(shù)據(jù)加載進來,,這個時候就可以在“數(shù)據(jù)”視圖中預覽其中的數(shù)據(jù),,右側(cè)的“字段”邊欄也會顯示表及其包含的字段: 這個時候,你會發(fā)現(xiàn)表名稱是xlsx文件中默認的Sheet1,修改表名稱的最簡單方式就是,,在表名稱上點右鍵選擇“重命名”,。另外,有些xlsx文件導入之后,,數(shù)據(jù)可能會出現(xiàn)下面這種沒有正常識別列名稱的問題,,這個時候就需要用到“查詢編輯器”中的“提升的標題”(把第一行數(shù)據(jù)當作標題/列名)的功能: “查詢編輯器”是一個強大的UI操作界面,幫你自動生成Power Query的M語言腳本,,可以通過“高級編輯器”來查看每個表的Power Query腳本,。而Power Query的第一步就是通過“源”和“導航”腳本來實現(xiàn)Extract-Load的步驟。對于Power BI而言,,Extract-Load可以實現(xiàn)的能力有:
3,,轉(zhuǎn)換和塑造數(shù)據(jù)在加載數(shù)據(jù)的過程中或者之后,還可以繼續(xù)利用“查詢編輯器”來對加載的數(shù)據(jù)進行轉(zhuǎn)換和塑造(即Transform),。所謂轉(zhuǎn)換和塑造就是利用Power Query的M語言腳本來對數(shù)據(jù)的加載過程,,進行額外處理。我大致把這個過程中Power BI能提供的能力整理了一下:
從上面整理的內(nèi)容來看,Power BI由于沿用了SQL Server和Excel中已經(jīng)存在的Power Query,,所以它的ETL功能還是非常強大的,,并且?guī)缀醪挥媚闶謩泳帉慐TL腳本即可完成復雜的ETL工作。 想對Power Query的功能有詳細了解的,,建議查看Excel的文檔:https://support./zh-cn/article/%E8%8E%B7%E5%8F%96%E5%92%8C%E8%BD%AC%E6%8D%A2%E5%9C%A8-Excel-2016-%E4%B8%AD-881c63c6-37c5-4ca2-b616-59e18d75b4de?ui=zh-CN&rs=zh-CN&ad=CN 4,,建模數(shù)據(jù)在完成數(shù)據(jù)的ETL之后,需要的步驟就是對數(shù)據(jù)進行建模,。一般而言,,在導入數(shù)據(jù)之后,Power BI會根據(jù)字段的名稱自動推斷出表之間的關(guān)系的,。比如下圖就是導入示例數(shù)據(jù)之后自動構(gòu)建的關(guān)系圖: 建模的工作和ETL的工作是兩個不同的步驟,,雖然有些功能達到的效果是一樣,但是背后實現(xiàn)的機理是不一樣的,。最明顯的一個地方就是數(shù)據(jù)類型的修改,,在查詢編輯器中對數(shù)據(jù)類型進行修改會替換或產(chǎn)生新的ETL腳本,而在數(shù)據(jù)視圖中修改數(shù)據(jù)類型不會影響ETL腳本,。 Power BI支持的建模能力整理如下:
在建模的過程中,尤其和公式計算相關(guān)的東西都涉及到數(shù)據(jù)分析表達式(Data Analysis Expressions,,DAX)的使用,,詳細的說明可以參考MSDN官方文檔:https://msdn.microsoft.com/library/gg413422.aspx (updated 2016.12.20)更完整的文檔在這里:https://msdn.microsoft.com/en-us/library/mt244090.aspx 對于我的這個示例,我實際用到了如下幾種建模能力:
DateKey = ADDCOLUMNS( CALENDAR(FIRSTDATE(Details[EpisodeAdmissionDate]),LASTDATE(Details[EpisodeAdmissionDate])), "DateAsInt",FORMAT([Date],"YYYYMMDD"), "Year",YEAR([Date]), "Quarter",VALUE(FORMAT([Date],"Q")), "YearQuarter",FORMAT ( [Date],"YYYY" ) & "/Q" & FORMAT ( [Date],"Q" ), "Month",MONTH([Date]), "MonthName",FORMAT([Date],"mmm"), "Day",DAY([Date]), "WeekNum",WEEKNUM([Date]), "WeekDay",WEEKDAY([Date]), "WeekDayName",FORMAT([Date],"ddd"), "Fiscal Year",IF(MONTH([Date])>3,YEAR([Date]) +1,YEAR([Date])), "Fiscal Year Name",IF(MONTH([Date])>3,YEAR([Date]) & "-" & (YEAR([Date]) + 1),(YEAR([Date]) - 1) & "-" & YEAR([Date])) ) 把日期表添加到模型中后,,就可以手動把日期表的Date字段和Details表中的EpisodeAdmissionDate字段建立其關(guān)系。最終的模型圖如下: 日期表創(chuàng)建的更多詳細介紹,,可以參考這個博客文章:http:///blog/business-intelligence/how-to-create-a-date-table-in-power-bi-in-2-simple-steps/ 5,,可視化顯示數(shù)據(jù)通過可視化控件來顯示數(shù)據(jù)沒有太多可以說的。Power BI的官方文檔已經(jīng)寫的比較好了,,見:https://powerbi.microsoft.com/zh-cn/documentation/powerbi-desktop-report-view/ 無非就是把一個可視化控件拖到報表頁面上,,然后把所需的維度和度量拖到可視化控件中的數(shù)據(jù)標簽頁中的“軸”/“圖例”或者“值”下面,如下圖所示: 數(shù)據(jù)建模的時候提到過下鉆顯示,。下鉆顯示有兩種方式:一種使用層級結(jié)構(gòu)列,,一種不使用。 簡單說來,,對于使用層級結(jié)構(gòu)的方式,,就是先建立一個層級結(jié)構(gòu)列,然后把這個列拖到“軸”下面,,可視化控件就會在上面的操作欄顯示用于下鉆數(shù)據(jù)的特定按鈕,。如下圖所示: 對于第二種下鉆顯示方式,我沒有采用,,詳細的說明可以見:https://powerbi.microsoft.com/zh-cn/documentation/powerbi-service-drill-down-in-a-visualization/,。 為可視化控件準備好數(shù)據(jù)之后,,還可以通過“格式”設置標簽頁(即刷子狀圖標)來設置一些顯示格式,比如標題,,字體,,顏色什么的。 當數(shù)據(jù)添加到可視化控件之后,,這些字段還會自動添加到視覺級別篩選器,,除此之外,你還可以額外把字段添加到頁面級篩選器和報告級篩選器中,。這些篩選器的作用范圍望文生義應該可以理解,。 不過需要注意的是,篩選器在公開發(fā)布到Web后并不可見,,所以你還可以單獨在報表頁面上添加所需的切片器,。切片器的數(shù)據(jù)設置方式和其他可視化控件類似,。 6,,和Qlik Sense的比較粗略的比較下來(個人觀點):
Power BI在可視化能力方面確實需要進一步加強,,比如我就遇到如下幾個問題:
最后不得不吐槽下,,Power BI的文檔用機器翻譯就算了,,感覺Power BI Desktop的中文版也是機器翻譯的。還不如我來翻譯算了(作為MVP可以免費做貢獻),。 |
|
來自: 鄭學甫360 > 《POWER BI》