PowerBI是微軟新一代的交互式報表工具,把相關的靜態數據轉換為酷炫的可視化的,能夠根據filter條件,對數據執行動態篩選,從不同的角度和粒度上分析數據。PowerBI主要由兩部分組成:PowerBI Desktop和 PowerBI Service,前者供報表開發者使用,用於創建數據模型和報表UI,后者是管理報表和用戶權限,以及查看報表(Dashboard)的網頁平台(Web Portal)。在開始PowerBI制作報表之前,請先下載 PowerBI Desktop桌面開發工具,並注冊Power BI service賬戶,在注冊Service賬號之后,開發者可以一鍵發布(Publish)到雲端,用戶只需要在IE或Edge瀏覽器中打開相應的URL鏈接,在權限允許的范圍內查看報表數據。
我的PowerBI開發系列的文章目錄:PowerBI開發
一,認識PowerBI Desktop主界面
打開PowerBI Desktop開發工具,主界面非常簡潔,分布着開發報表常用的多個面板,每個面板都扮演着重要的角色:
- 頂部是主菜單,打開Home菜單,通過“Get Data”創建數據連接,創建數據源連接是通過Power Query M語言實現的;通過“Edit Queries”對數據源進行編輯;
- 左邊框分別是Report,Data和Relationships,在開發報表時,用於切換視圖,在Relationships界面中,管理數據關系,數據建模是報表數據交互式呈現的關鍵;
- 右邊是可視化(Visualizations)和字段(Fields),用於設計報表的UI,系統內置多種可視化組件,能夠創建復雜、美觀的報表;
- 底部邊框是Report的Page,通過“+”號新建Page,PowerBI允許在一個Report中創建多個Page,多個Page共享Data和Relationships;
1,調整Page的大小
查看Page的格式(Format)屬性,Page Size的類型是固定的16:9,那么是否可以放大Page的Size,使其可以容納更多的圖標,顯示更多的數據呢?答案是可以的,這就需要自定義Page Size。
把Type設置為Custom,並設置Width和Height的大小,就可以增加Page的界面大小。
如果發現Page 縮小,這就需要點開View菜單,通過 Page View 的“Actual Size”,把頁面顯示調整到指定的大小:
當Page高度調整超過一個屏幕的大小時,Page的右側會出現滾動條,用於上下移動Page;當Page的寬度調整超過屏幕的寬度時,Page的下方會出現一個滾動條,用於左右移動Page。
2,查詢編輯器
PowerBI Desktop另一個重要的編輯界面是查詢編輯器(Query Editor),通過點擊“Edit Queries”切換到查詢編輯器(Query Editor),用於對查詢(Query)進行編輯,在左側的Queries 列表中,共有三種類型的查詢,分別是Table,List和Parameter,中間面板是Query的數據,右側面板是查詢設置(Query Settings),如下圖所示,查詢編輯器(Query Editor)通過菜單提供豐富的編輯功能,例如,通過“Transform”菜單對查詢和其字段執行轉換操作,通過“Add Column”菜單,適用Power Query M語言為查詢添加字段:
二,加載數據
在Home主菜單中,點擊“Get Data”,能夠從多種數據源(文檔,數據庫,Azure等)中加載數據,在PowerBI Desktop中,每一個數據源都被抽象成一個“Query”,在加載數據時,PowerBI支持對Query進行編輯,在Query Editor中編輯Query,對數據進行清理,轉換,以滿足復雜的業務需求。
1,加載Excel示例數據
示例數據:download this sample Excel workbook,將Excel下載到本地主機中,選擇Excel數據源類型,點擊“Connect”,指定Excel文件的路徑:
選擇需要加載的Sheet,點擊Edit,將打開Query Editor對數據進行編輯,在該例中,直接點擊“Load”,把Excel中的數據加載到報表中,點擊左邊的“Data”面板,查看加載的數據,對於數值型數據,前面有累加符號(∑):
2,編輯查詢
每一個數據源都被抽象成一個Query,通過定義相應的數據轉換操作,就能在數據集加載到PowerBI時,應用(apply)自定義的數據修改操作,而不需要修改數據源。在Data視圖中,點擊Home菜單的“Edit Queries”,能夠對“Query”進行編輯和轉換,例如,清洗臟數據,刪除冗余的Column,添加新的Column,轉換列的數據類型。在右邊的“Query Settings”中,“Applied Steps”顯式列出查詢的編輯步驟,在編輯完成之后,點擊“Close & Apply”,完成查詢的修改。
在菜單Transform中,PowerBI提供豐富的數據轉換功能,滿足您復雜的分析需求。
3,增加一個數據列YearMonth
數據列YearMonth時Year字段和MonthName字段的結合(Combine),點擊菜單Add Column,按住CTRL,同時選中Year和MonthName字段,並從“Add Column”菜單中選擇“Column From Examples”:
雙擊右側新建的Column,輸入同一數據行的Year和MonthName字段值的拼接(Combine),作為一個示例(Example),PowerBI會根據用戶輸入的結果,自動檢測派生列的值,並生成派生列的計算公式,該公式可以在數據表格的上方查看到:
Transform:Text.Combine({Text.From([Year])," ",[Month Name]})
點擊OK,並把列名Combined修改YearMonth,並切換到Home菜單,點擊“Close & Apply”,應用Query的編輯,並關閉Query Editor窗體。
三,添加可視化組件
在制作報表之前,必須熟悉報表數據及其數據之間的關系,本例只有一個數據表,所有的數據及其關系都存儲在一個數據表中,在Relationships視圖中,只有孤零零的一個表。
點擊“Report”,進入到報表編輯界面,使用Visualizations中可視化組件,設計報表UI。
1,使用分片器(Slicer)
Slicer是一個過濾器(Filter),每一個CheckBox都是一個選項(Item);單擊選中,再次單擊,取消選擇;按住CTRL不放,能夠多選;不選擇任何Item,表示不對數據應用該Filter,不選和全選是不相同的。從PowerBI的內部運行原理上來解釋,如果沒有選擇Slicer的任何一個選項,那么PowerBI不會對數據執行篩選操作;如果全選,那么PowerBI對數據執行篩選操作。由於在數據模型中,數據表之間可能存在多層關系,不選和全選的結果可能是不相同的,在后面的數據建模章節中,我會解釋這一點。
例如,拖曳一個Slicer,把Country作為Filter,UI效果如圖:
每一個可視化組件(Visualization)都需要設置Fields屬性,將數據字段Country從Fields列表中拖曳(Drag)到Field字段中,PowerBI會自動對數據進行去重(Distinct),只顯示唯一值,並按照顯示值進行排序。
Field右邊是一個刷子的圖形,用於改變可視化組件的顯示屬性,讀者可以嘗試着修改,以定制數據的UI顯示效果。
每一個可視化組件,都會三個級別的過濾器(Filers),分為組件級別,Page級別,Report級別,用於對數據進行過濾,該過濾是靜態設置的,不會動態地根據用戶選擇的Filter對數據進行過濾。
2,對Slicer的顯示進行排序
PowerBI支持數據值的排序,在排序時,可視化組件根據排序值(Sort)執行排序操作,在相應的順序位置上呈現數據的顯示值(Display),因此,排序操作會使用到排序列(Sort By Column)和顯示列(Display By Column),默認情況下,顯示列就是排序列;用戶可以在“Modeling”菜單中修改默認的排序行為,組件在顯示數據列Column1的數據時,按照另外一個數據列Column2的值的順序。
在右邊框的Fields中選擇排序的顯示列,在“Modeling”菜單中,選擇“Sort By Column”,默認的排序列是顯示列,可以選擇其他數據列作為排序列。
3,使用Line Chart可視化組件
從Visualizations列表中,選擇Line chart組件,軸線(Axis)屬性選擇Product字段,該可視化組件會按照Product呈現數據,每一個Product都是數據分析的一個維度,一個視角;Values屬性選擇Gross Sales和Sales 字段,該可視化組件會顯示兩條曲線,曲線的值分別是按照Product划分的Gross Sales和Sales,這就是說,對於每一個Product,都會分別計算Gross Sales和Sales的值。
4,使用Stacked column Chart可視化組件
分組顯式報表數據,如圖,設置Axis屬性為YearMonth,Value數據設置為Profit,Legend屬性設置為Product,Legend屬性的作用是再次分組,本例設置Legend屬性為Product,這意味着,當Axis屬性為某一個月(Year Month)時,PowerBI按照Product對Value進行分組,分別設置各個Product所占的利潤(Value屬性是Profit);
該可視化組件的數據呈現並不完美,因為,底部的YearMonth不是按照自然月進行排序的,而是按照字符的順序進行排序,為了修改這個“瑕疵”,必須改變組件默認的排序行為,使其按照排序列的值進行排序,由於數據表中有Date字段,可以按照Date字段排序,而顯示的字段是YearMonth。實現的步驟非常簡單,分兩步:
Step1:在右邊Fields列表中選中YearMonth字段,
Step2:打開菜單“Modeling”,點擊“Sort by Column”,默認的排序字段是YearMonth,把排序列選中為Date字段。
在修改YearMonth的排序列之后,組件的顯示正常,YearMonth軸按照自然月從左向右,依次遞增。
四,設計第一個PowerBI報表
當點擊Slicer可視化組件(Year,Country)中的選項時,右邊和下面的可視化組件中的數據會自動變化,這種交互式的“聯動”變化是通過關系(Relationship)來實現的,對於本例,由於報表只有一個數據源,關系隱藏在單表中,對於多個表之間的交互式關系,可以在“Relationships”面板中,通過數據建模來實現,我會在《PowerBI 第二篇:數據建模》中詳細講述PowerBI的數據建模和關系,以及動態關聯的實現。
參考文檔:
Getting started with Power BI Desktop