課程目錄

Excel120 以窮舉式的方式學(xué)習(xí)并深入研究PowerBI的所有細節(jié),并在實際工作和項目中進行大量實踐,且依然保持浸染在一線作為和所有伙伴一樣的工作者在日常工作中使用PowerBI。也就是說,這和您的身份是完全相同的。

從2015年5月(PowerBI于2015年7月24日正式發(fā)布)建立 Excel120 QQ群 社區(qū),完全定位于深入研究基于PowerBI的BI商業(yè)解決方案,涉及老板,總監(jiān),分析師,IT等不同角色的使用,并在大量培訓(xùn)中反復(fù)研究同樣案例多達上百次,發(fā)現(xiàn)一件重要的事實:

PowerBI 作為前所未有的商務(wù)智能工具,在純小白初學(xué)者接觸時并渴望正確學(xué)習(xí)是缺乏特定于PowerBI 的教學(xué)方法論的。

微軟的PowerBI官網(wǎng)雖然給出了 PowerBI 的完全細節(jié)的參考文檔,但由于這種文檔是字典式的,入門者(尤其是中國入門者)沒有一個正確的學(xué)習(xí)入口。

在這方面感謝社區(qū)中很多老師的經(jīng)驗分享,包括:《微軟Excel2013:用PowerPivot建立數(shù)據(jù)模型》的劉凱老師,PowerPivot工坊的趙文超老師,好朋友高飛老師等在這方面做了大量研究。現(xiàn)在,Excel120,將為PowerBI初學(xué)者提供一套視頻課程,旨在:輕松入門,正確地學(xué)習(xí)PowerBI。

1,準備原始數(shù)據(jù)

由于Qlik Sense的示例應(yīng)用只有一個單獨的qvf文件,那么原始數(shù)據(jù)只有通過qvf來導(dǎo)出。此qvf中的數(shù)據(jù)模型如下圖所示:

Qlik Sense并沒有提供數(shù)據(jù)模型包含數(shù)據(jù)的完整導(dǎo)出功能,所以只能采用最麻煩和原始的方式,即:創(chuàng)建表格,在表格中添加某個數(shù)據(jù)表的所有字段,然后再利用可視化對象的導(dǎo)出功能導(dǎo)出數(shù)據(jù)為xlsx文件。通過這種方式,把所有表都導(dǎo)出。注:但在實際操作當中,未必所有表都導(dǎo)出,因為有些表可以在Power BI中生成(比如日期表DateParts),有些表在Power BI中也用不到(比如月份順序表Month Sort Order)。

當然,如果你拿得到原始數(shù)據(jù)的文件或者數(shù)據(jù)庫,那么就可以跳過這一步。

2,加載數(shù)據(jù)

這步比較簡單,在Power BI中新建一個文檔,通過“獲取數(shù)據(jù)”-“Excel”來選擇需要導(dǎo)入的xlsx文件。

選擇文件之后,會顯示“導(dǎo)航器”對話框。在這里選擇需要導(dǎo)入的工作表(可以選擇多個)。選擇工作表之后,可以直接點“加載”,也可以點“編輯”來打開“查詢編輯器”修改ETL腳本(當然在加載之后還是可以重新編輯腳本)。如果直接點“加載”之后,Power BI就會把選擇的工作表中的數(shù)據(jù)加載進來,這個時候就可以在“數(shù)據(jù)”視圖中預(yù)覽其中的數(shù)據(jù),右側(cè)的“字段”邊欄也會顯示表及其包含的字段:

這個時候,你會發(fā)現(xiàn)表名稱是xlsx文件中默認的Sheet1,修改表名稱的最簡單方式就是,在表名稱上點右鍵選擇“重命名”。另外,有些xlsx文件導(dǎo)入之后,數(shù)據(jù)可能會出現(xiàn)下面這種沒有正常識別列名稱的問題,這個時候就需要用到“查詢編輯器”中的“提升的標題”(把第一行數(shù)據(jù)當作標題/列名)的功能:

“查詢編輯器”是一個強大的UI操作界面,幫你自動生成Power Query的M語言腳本,可以通過“高級編輯器”來查看每個表的Power Query腳本。而Power Query的第一步就是通過“源”和“導(dǎo)航”腳本來實現(xiàn)Extract-Load的步驟。對于Power BI而言,Extract-Load可以實現(xiàn)的能力有:

從各類數(shù)據(jù)源中提取數(shù)據(jù):各類文件、各類數(shù)據(jù)庫、各類Azure的PaaS、各類聯(lián)機服務(wù)和其他數(shù)據(jù)源(比如R腳本)

對數(shù)據(jù)源的配置進行設(shè)置

直接錄入數(shù)據(jù)

3,轉(zhuǎn)換和塑造數(shù)據(jù)

在加載數(shù)據(jù)的過程中或者之后,還可以繼續(xù)利用“查詢編輯器”來對加載的數(shù)據(jù)進行轉(zhuǎn)換和塑造(即Transform)。所謂轉(zhuǎn)換和塑造就是利用Power Query的M語言腳本來對數(shù)據(jù)的加載過程,進行額外處理。我大致把這個過程中Power BI能提供的能力整理了一下:

通用

列的管理:選擇列、刪除列

行的管理:保留行(前后、間隔、重復(fù)、錯誤)、刪除行

排序:基于一個列或多個列進行升降序

合并數(shù)據(jù):可以是合并數(shù)據(jù)(兩個表提供不同的列),也可以是追加數(shù)據(jù)(兩個表提供不同的行)

轉(zhuǎn)換

表數(shù)據(jù)管理:對原始數(shù)據(jù)進行分組、提升第一行作為標題、行列顛倒、首尾行調(diào)換、對數(shù)據(jù)行計數(shù)

所有列的處理:重命名列名、數(shù)據(jù)類型的自動檢測和手動修改、替換值、填充單元格(上下兩個方向皆可)、透視列(正逆兩個方向)、轉(zhuǎn)換為列表(列表轉(zhuǎn)回列)

文本列的處理:拆分(分隔符、字符數(shù))、格式化(大小寫、首字母大寫、修整Trim、清除非打印字符、添加前后綴)、合并、提取(字符串長度、首子字符串、尾子字符串、選定范圍子字符串)、分析(從xml和json字符串中提取出數(shù)據(jù))

數(shù)值列的處理:聚合運算(求和、最大最小、中值、平均值、標準偏差、值計數(shù)、非重復(fù)計數(shù))、標準運算(四則、整除、取模、除得百分比、乘得百分比)、科學(xué)運算(求絕對值、求冪、求指數(shù)、求對數(shù)、求階乘)、三角函數(shù)運算、舍入(向上向下、自定義)、特征(奇偶、符號)

時間列的處理:日期的處理、時間的處理、持續(xù)時間的處理

結(jié)構(gòu)化列的處理:擴展、聚合

添加計算列

常規(guī):基于公式計算、基于自定義公式計算、基于條件判斷計算、添加索引列、復(fù)制列

基于文本列添加:格式化后、合并后、提取后、分析后

基于數(shù)值列添加:聚合運算后、標準運算后、科學(xué)運算后、三角函數(shù)運算后、舍入后、提取特征后

基于時間列添加:日期處理后、時間處理后、持續(xù)時間處理后

從上面整理的內(nèi)容來看,Power BI由于沿用了SQL Server和Excel中已經(jīng)存在的Power Query,所以它的ETL功能還是非常強大的,并且?guī)缀醪挥媚闶謩泳帉慐TL腳本即可完成復(fù)雜的ETL工作。

想對Power Query的功能有詳細了解的,建議查看Excel的文檔:https://support.office.com/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ù)進行建模。一般而言,在導(dǎo)入數(shù)據(jù)之后,Power BI會根據(jù)字段的名稱自動推斷出表之間的關(guān)系的。比如下圖就是導(dǎo)入示例數(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)系:可以通過關(guān)系視圖來可視化的拖動連線,也可以通過“管理關(guān)系”對話框瀏覽、新建、自動檢測、編輯和刪除關(guān)系 。

關(guān)系:關(guān)系支持1:1、1:N、N:1,關(guān)系篩選支持單向和雙向 。

公式計算:添加基于DAX表達式計算得到的度量值(度量值默認放到當前選中的表當中,也可以歸到其他表中),添加基于DAX表達式計算得到的計算列,添加基于DAX表達式計算得到的表 。

排序:選擇排序的列 。

格式設(shè)置:可以設(shè)置列的數(shù)據(jù)類型(小數(shù)、定點十進制數(shù)、整數(shù)、日期/時間、日期、時間、文本、布爾值、二進制),顯示格式(各種貨幣格式、時間格式、百分比、小數(shù)位數(shù)、科學(xué)計數(shù)等) 。

屬性設(shè)置:所屬表(可以為度量值設(shè)置歸屬的表),數(shù)據(jù)分類(設(shè)置值的顯示特征,比如地址、Url、條碼,可以方便讓可視化控件更好的處理內(nèi)容),默認聚合方式(要不要求和等) 。

安全性:基于DAX表達式來設(shè)定什么角色可以查看什么數(shù)據(jù),非常靈活的行級訪問控制機制 。

分組:這是什么鬼,我也還沒有搞懂。 有知道的朋友希望不吝賜教。

在建模的過程中,尤其和公式計算相關(guān)的東西都涉及到數(shù)據(jù)分析表達式(Data Analysis Expressions,DAX)的使用,詳細的說明可以參考MSDN官方文檔:https://msdn.microsoft.com/library/gg413422.aspx

對于我的這個示例,我實際用到了如下幾種建模能力:

日期數(shù)據(jù)的格式改變:把長格式的日期字符串修改為短的 。

各種度量值的建立:我的度量值主要涉及一些求和、求平均、計數(shù)、變化率等。為了更好的管理度量值,我特意新建了一個名為DetialsMeaured的表,公式為:DetailsMesured = ALL(Details[EpisodeID]),然后把建立的各種度量值歸到這個表當中 。

百分比值的格式化:求變化率的度量值,可以把顯示格式設(shè)置為百分比,那么在內(nèi)置可視化控件中就直接顯示為百分比,無需額外設(shè)置或者乘100(我使用了一個第三方控件,其無法識別百分比格式,只能在度量值上乘100) 。

建立層級結(jié)構(gòu):為了支持數(shù)據(jù)的下鉆顯示,那么需要建立數(shù)據(jù)的層次結(jié)構(gòu),比如財年包含月份。要建立層次結(jié)構(gòu)很簡單,直接把一個字段拖動到另外一個字段下面Power BI就會自動創(chuàng)建一個新的層次結(jié)構(gòu)列(包含了你剛剛操作的兩個字段),接著可以繼續(xù)拖入其他列到這個層次結(jié)構(gòu)列下面,還可以拖動來進行排序。

建立日期表:很多分析都是和時間相關(guān)的,那么就需要有一張獨立的日期表來為維度提供數(shù)據(jù)(包括年、財年、季度、月、日、天等)。原來的qvf中也存在這一個日期表,也是依靠腳本生成的,對于Power BI而言同樣也可以通過腳本來生成一個日期表。生成日期表的腳本如下:

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://kohera.be/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ù)的特定按鈕。如下圖所示:

郵箱
huangbenjincv@163.com

天津市| 阿克陶县| 新河县| 商城县| 无为县| 泾源县| 康马县| 合川市| 钟山县| 德惠市| 景德镇市| 弥渡县| 临潭县| 格尔木市| 临洮县| 达孜县| 江安县| 博白县| 丽江市| 阿克陶县| 来宾市| 锦州市| 北安市| 麦盖提县| 宜州市| 锡林浩特市| 图木舒克市| 毕节市| 武冈市| 呼图壁县| 沙洋县| 怀远县| 镇远县| 大冶市| 长治市| 得荣县| 桐城市| 龙川县| 灵石县| 盐亭县| 金坛市|