題記:這篇文章不僅是Power BI的入門教程,同時(shí)相對(duì)于Qlik Sense進(jìn)行了簡(jiǎn)單比較。 最近把一個(gè)Qlik Sense的示例應(yīng)用手動(dòng)轉(zhuǎn)成了Power BI的應(yīng)用,把相關(guān)步驟和遇到的問題記錄如下,權(quán)當(dāng)作一個(gè)入門教程。 1,準(zhǔn)備原始數(shù)據(jù)由于Qlik Sense的示例應(yīng)用只有一個(gè)單獨(dú)的qvf文件,那么原始數(shù)據(jù)只有通過qvf來導(dǎo)出。此qvf中的數(shù)據(jù)模型如下圖所示: Qlik Sense并沒有提供數(shù)據(jù)模型包含數(shù)據(jù)的完整導(dǎo)出功能,所以只能采用最麻煩和原始的方式,即:創(chuàng)建表格,在表格中添加某個(gè)數(shù)據(jù)表的所有字段,然后再利用可視化對(duì)象的導(dǎo)出功能導(dǎo)出數(shù)據(jù)為xlsx文件。通過這種方式,把所有表都導(dǎo)出。注:但在實(shí)際操作當(dāng)中,未必所有表都導(dǎo)出,因?yàn)橛行┍砜梢栽赑ower BI中生成(比如日期表DateParts),有些表在Power BI中也用不到(比如月份順序表Month Sort Order)。 當(dāng)然,如果你拿得到原始數(shù)據(jù)的文件或者數(shù)據(jù)庫,那么就可以跳過這一步。 2,加載數(shù)據(jù)這步比較簡(jiǎn)單,在Power BI中新建一個(gè)文檔,通過“獲取數(shù)據(jù)”-“Excel”來選擇需要導(dǎo)入的xlsx文件。 選擇文件之后,會(huì)顯示“導(dǎo)航器”對(duì)話框。在這里選擇需要導(dǎo)入的工作表(可以選擇多個(gè))。選擇工作表之后,可以直接點(diǎn)“加載”,也可以點(diǎn)“編輯”來打開“查詢編輯器”修改ETL腳本(當(dāng)然在加載之后還是可以重新編輯腳本)。如果直接點(diǎn)“加載”之后,Power BI就會(huì)把選擇的工作表中的數(shù)據(jù)加載進(jìn)來,這個(gè)時(shí)候就可以在“數(shù)據(jù)”視圖中預(yù)覽其中的數(shù)據(jù),右側(cè)的“字段”邊欄也會(huì)顯示表及其包含的字段: 這個(gè)時(shí)候,你會(huì)發(fā)現(xiàn)表名稱是xlsx文件中默認(rèn)的Sheet1,修改表名稱的最簡(jiǎn)單方式就是,在表名稱上點(diǎn)右鍵選擇“重命名”。另外,有些xlsx文件導(dǎo)入之后,數(shù)據(jù)可能會(huì)出現(xiàn)下面這種沒有正常識(shí)別列名稱的問題,這個(gè)時(shí)候就需要用到“查詢編輯器”中的“提升的標(biāo)題”(把第一行數(shù)據(jù)當(dāng)作標(biāo)題/列名)的功能: “查詢編輯器”是一個(gè)強(qiáng)大的UI操作界面,幫你自動(dòng)生成Power Query的M語言腳本,可以通過“高級(jí)編輯器”來查看每個(gè)表的Power Query腳本。而Power Query的第一步就是通過“源”和“導(dǎo)航”腳本來實(shí)現(xiàn)Extract-Load的步驟。對(duì)于Power BI而言,Extract-Load可以實(shí)現(xiàn)的能力有:
3,轉(zhuǎn)換和塑造數(shù)據(jù)在加載數(shù)據(jù)的過程中或者之后,還可以繼續(xù)利用“查詢編輯器”來對(duì)加載的數(shù)據(jù)進(jìn)行轉(zhuǎn)換和塑造(即Transform)。所謂轉(zhuǎn)換和塑造就是利用Power Query的M語言腳本來對(duì)數(shù)據(jù)的加載過程,進(jìn)行額外處理。我大致把這個(gè)過程中Power BI能提供的能力整理了一下:
從上面整理的內(nèi)容來看,Power BI由于沿用了SQL Server和Excel中已經(jīng)存在的Power Query,所以它的ETL功能還是非常強(qiáng)大的,并且?guī)缀醪挥媚闶謩?dòng)編寫ETL腳本即可完成復(fù)雜的ETL工作。 想對(duì)Power Query的功能有詳細(xì)了解的,建議查看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之后,需要的步驟就是對(duì)數(shù)據(jù)進(jìn)行建模。一般而言,在導(dǎo)入數(shù)據(jù)之后,Power BI會(huì)根據(jù)字段的名稱自動(dòng)推斷出表之間的關(guān)系的。比如下圖就是導(dǎo)入示例數(shù)據(jù)之后自動(dòng)構(gòu)建的關(guān)系圖: 建模的工作和ETL的工作是兩個(gè)不同的步驟,雖然有些功能達(dá)到的效果是一樣,但是背后實(shí)現(xiàn)的機(jī)理是不一樣的。最明顯的一個(gè)地方就是數(shù)據(jù)類型的修改,在查詢編輯器中對(duì)數(shù)據(jù)類型進(jìn)行修改會(huì)替換或產(chǎn)生新的ETL腳本,而在數(shù)據(jù)視圖中修改數(shù)據(jù)類型不會(huì)影響ETL腳本。 Power BI支持的建模能力整理如下:
在建模的過程中,尤其和公式計(jì)算相關(guān)的東西都涉及到數(shù)據(jù)分析表達(dá)式(Data Analysis Expressions,DAX)的使用,詳細(xì)的說明可以參考MSDN官方文檔:https://msdn.microsoft.com/library/gg413422.aspx (updated 2016.12.20)更完整的文檔在這里:https://msdn.microsoft.com/en-us/library/mt244090.aspx 對(duì)于我的這個(gè)示例,我實(shí)際用到了如下幾種建模能力:
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])) ) 把日期表添加到模型中后,就可以手動(dòng)把日期表的Date字段和Details表中的EpisodeAdmissionDate字段建立其關(guān)系。最終的模型圖如下: 日期表創(chuàng)建的更多詳細(xì)介紹,可以參考這個(gè)博客文章: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/ 無非就是把一個(gè)可視化控件拖到報(bào)表頁面上,然后把所需的維度和度量拖到可視化控件中的數(shù)據(jù)標(biāo)簽頁中的“軸”/“圖例”或者“值”下面,如下圖所示: 數(shù)據(jù)建模的時(shí)候提到過下鉆顯示。下鉆顯示有兩種方式:一種使用層級(jí)結(jié)構(gòu)列,一種不使用。 簡(jiǎn)單說來,對(duì)于使用層級(jí)結(jié)構(gòu)的方式,就是先建立一個(gè)層級(jí)結(jié)構(gòu)列,然后把這個(gè)列拖到“軸”下面,可視化控件就會(huì)在上面的操作欄顯示用于下鉆數(shù)據(jù)的特定按鈕。如下圖所示: 對(duì)于第二種下鉆顯示方式,我沒有采用,詳細(xì)的說明可以見:https://powerbi.microsoft.com/zh-cn/documentation/powerbi-service-drill-down-in-a-visualization/。 為可視化控件準(zhǔn)備好數(shù)據(jù)之后,還可以通過“格式”設(shè)置標(biāo)簽頁(即刷子狀圖標(biāo))來設(shè)置一些顯示格式,比如標(biāo)題,字體,顏色什么的。 當(dāng)數(shù)據(jù)添加到可視化控件之后,這些字段還會(huì)自動(dòng)添加到視覺級(jí)別篩選器,除此之外,你還可以額外把字段添加到頁面級(jí)篩選器和報(bào)告級(jí)篩選器中。這些篩選器的作用范圍望文生義應(yīng)該可以理解。 不過需要注意的是,篩選器在公開發(fā)布到Web后并不可見,所以你還可以單獨(dú)在報(bào)表頁面上添加所需的切片器。切片器的數(shù)據(jù)設(shè)置方式和其他可視化控件類似。 6,和Qlik Sense的比較粗略的比較下來(個(gè)人觀點(diǎn)):
Power BI在可視化能力方面確實(shí)需要進(jìn)一步加強(qiáng),比如我就遇到如下幾個(gè)問題:
最后不得不吐槽下,Power BI的文檔用機(jī)器翻譯就算了,感覺Power BI Desktop的中文版也是機(jī)器翻譯的。還不如我來翻譯算了(作為MVP可以免費(fèi)做貢獻(xiàn))。 |
|