天天看點

PowerBI開發 第三篇:報表設計技巧

最近做了幾個PowerBI報表,對PowerBI的設計有了更深的了解,對資料的塑形(sharp data),不僅可以在Data Source中實作,例如在TSQL查詢腳本中,而且可以在PowerBI中實作,例如,向資料模型中添加自定義字段,或者在報表資料顯示時,根據資料表之間的關系做資料的統計。本文主要介紹資料的塑形和UI設計的微調。

我的PowerBI開發系列的文章目錄:PowerBI開發

一,建立資料列

PowerBI報表的資料分為資料源(Data Source)和資料模型(Data Model)。資料源(Data Source)的邏輯視圖是Query,預設情況下,Data Source和Query的結構(Schema)相同。使用者可以通過Power Query M語言增加自定義列修改Query的結構,Power Query M語言不會影響Data Source,隻會修改Query導出的資料。預設情況下下,PowerBI按照Query把資料加載到Data Model中,預設情況下,Data Model和Query的結構(Schema)相同,使用者可以通過DAX表達式在Data Model上建立計算列(Calculated Column)和度量(Measure)。

1,自定義資料列

在Data View->Query Editor中,建立自定義資料列,使用的是M 公式(M formula ),M公式語言用于建立靈活性資料查詢,M公式對大小寫敏感。使用者添加自定義資料列,這會修改資料模型(Data Model)的架構,PowerBI向Data Model中添加資料列。

例如,建立MonthKey列,通過使用M公式,把DateKey(格式是:yyyyMMdd)轉換成MonthKey(格式是:yyyyMM)。

PowerBI開發 第三篇:報表設計技巧

在對資料進行排序時,有時不能使用DAX表達式,此時必須使用M公式,例如,對班級(Class)進行排序,使用DAX的IF函數,按照班級(Class)名稱建立一個字段(Class Ordinal),

Class Ordinal = IF(Schools[Class]="一年級",1,IF(Schools[Class]="二年級",2,3))      

設定Class按照Class Ordinal排序,PowerBI會抛出錯誤:

PowerBI開發 第三篇:報表設計技巧

在這種情況下,必須使用M公式,在Schools Query中新增字段:

= Table.AddColumn(KustoQuery, "Class Ordinal", 
each if [Class]="一年級" then 1
    else if [Class]="二年級" then 2
    else if [Class]="三年級" then 3
    else 4)       

2,計算列(Calculated Column)

在Report View中,計算列用于從已經加載到資料模型(Model)中的資料,根據公式計算的資料列,這跟在Data Model中增加計算列是不同的,計算列是從資料模型中計算資料,不會修改資料模型,是以,計算列的值,隻會出現在Report View 和Data View中。計算列使用DAX定義字段的資料值,基于加載到資料模型的資料和公式計算結果。計算列隻計算一次,跟Report沒有互動行為,這意味着,計算列不會根據用于在Report Page上選擇的Filter,而動态計算表達式的值。

計算列的值是基于目前資料行,進行計算,每行有一個計算列的值。舉個例子,顯示最近一年的日期:

PowerBI開發 第三篇:報表設計技巧

3,度量列(Measure)

路徑成本是在報表互動時對報表資料執行的聚合計算,路徑成本使用DAX定義字段的資料值,從資料模型中計算資料,不會修改資料模型,是以,路徑成本隻會出現在Report View 和Data View中。路徑成本通常是用于聚合統計,基于使用者選擇的Filter,以顯示不同的聚合值,由于路徑成本是聚合值,不是每行都有一個聚合值。舉個例子,建立路徑成本 Answer Rate,其公式是:

Answer Rate = DISTINCTCOUNT(CloudThreads[AnsweredThreadID])/DISTINCTCOUNT(CloudThreads[ThreadID])      

度量列能夠引用其他表的資料列,根據資料模型中的關系,能夠完成很多互動性的資料統計,非常強大,但是,也很繞、繞、繞……

二,報表可視化控件的設計

在顯示報表資料時,PowerBI提供多種方式,能夠對資料的顯示進行微調,使資料顯示的效果更合理。

1,層次結構( Hierarchy)

PowerBI 支援在Report View中建立字段的層次結構(Hierarchy),在同一個Query中,拖動一個字段到另一個字段下,PowerBI自動建立一個層次結構,并以父層次字段的名稱命名,例如:

PowerBI開發 第三篇:報表設計技巧

PowerBI内置一個可視化控件HierarchySlicer,能夠顯示字段的層次結構,在Fields中設定一個層次結構:

PowerBI開發 第三篇:報表設計技巧

控件顯示的結構是一個樹形結構,點選“三角”,能夠展開,以樹形結構顯示子級别的資料,HierarchySlicer支援逐層展開,如下圖所示:

PowerBI開發 第三篇:報表設計技巧

2,在Table控件中顯示超連結(HyperLink)

在Product View中,選中Query的某一個字段,如下圖,選中字段 ProfileLink,

PowerBI開發 第三篇:報表設計技巧

 在Modeling菜單下,該字段的Data Type為Text,設定文本的Data Category為Web URL:

PowerBI開發 第三篇:報表設計技巧

在Table可視化控件的視圖屬性中,設定Values的URL Icon屬性為On,

PowerBI開發 第三篇:報表設計技巧

在Table控件中,Web URL的顯示如下所示,點選LInk,能夠直接打開浏覽器,跳轉到指定的網址:

PowerBI開發 第三篇:報表設計技巧

3,數字的小數位的控制

可以在PowerBI中設定字段的資料類型,選中一個字段,打開Modeling菜單,

PowerBI開發 第三篇:報表設計技巧

 選擇字段的資料類型,Format為 Decimal number,選擇貨币符号($), 顯示百分比(%),千位分隔符(,),或小數位數(0-N),這裡設定 顯示的小數位數是1,隻顯示一位小數。

PowerBI開發 第三篇:報表設計技巧

顯示的效果如下,Score 保留一位小數點,并使用千位分割符号:

PowerBI開發 第三篇:報表設計技巧

4,字段值的過濾

可視化(Visual)控件隻顯示排名靠前的TOP N行資料,這可以通過為字段設定過濾條件來實作,在FIELDS清單中,點選字段後面的”...“ ,添加過濾條件(Add filter),按照特定字段的值(By value),過濾目前字段的值:

PowerBI開發 第三篇:報表設計技巧

例如,在一個Table visual中,把Filter Type設定為Top N,把Show items設定為Top 20,把By Value設定為路徑成本 Contribution Score,PowerBI按照路徑成本降序排列,隻顯示排名前20的資料行:

PowerBI開發 第三篇:報表設計技巧

PowerBI 支援兩種顯示的項目(Show item)類型:Top和Bottom,PowerBI按照排序值(by value)降序排名。

字段的過濾類型,共有三種,如下圖所示,可以根據需要,建立适合業務邏輯的過濾器:

PowerBI開發 第三篇:報表設計技巧

三,根據目前的資料導出資料

在資料模組化時,需要建立兩個表之間的關系,PowerBI要求跟關系相關的兩個資料列,必須有一列是唯一值,不允許存在重複值。在DimCalendar表中,存在DateKey列,該列是以int表示的日期類型,例如,2017年10月1日,用DateKey表示是20171001,從DimCalendar表中導出MonthKey,公式是MonthKey=DateKey/100。需要根據MonthKey列建立一個Query,做法是:

1,添加新的查詢(Query)

在查詢編輯器(Query Editor)中,選中列 MonthKey,右擊彈出快捷菜單,選擇“Add as New Query”,從目前列中建立查詢

PowerBI開發 第三篇:報表設計技巧

2,把List轉換成Table

此時,建立的Query命名為MonthKey,是一個List類型,需要把List轉換成Table,選中該List,打開主菜單Transform,點選“To table Convert”,把List轉換成Table

PowerBI開發 第三篇:報表設計技巧

從一個List建立Table,PowerBI需要使用者選擇界定符,該List沒有任何界定符,選擇None:

PowerBI開發 第三篇:報表設計技巧

3,修改資料

新表的資料列名是Column1,右擊彈出快捷菜單,點選“Rename”,把該列重命名為MonthKey,點選“Change Type”把該列的資料類型修改為“Whole Number”,點選“Remove Duplicates”,删除重複的資料值

PowerBI開發 第三篇:報表設計技巧

4,檢視導出資料表的實作步驟

在右側的查詢設定(Query Settings)中檢視實作的步驟,選擇某一個Step,點選Step 名稱前的“×”,能夠把該Step删除。

PowerBI開發 第三篇:報表設計技巧

附:鑒于本人接觸PowerBI的時間不長,cover的内容有限,後續有新的設計技巧,我會持續更新

參考文檔:

Tutorial: Create calculated columns in Power BI Desktop

Tutorial: Create your own measures in Power BI Desktop

Power Query M Reference

Hyperlinks in tables

Measures in Power BI Desktop

Calculated columns in Power BI Desktop

作者

:悅光陰

出處

:http://www.cnblogs.com/ljhdo/

本文版權歸作者和部落格園所有,歡迎轉載,但未經作者同意,必須保留此段聲明,且在文章頁面醒目位置顯示原文連接配接,否則保留追究法律責任的權利。

繼續閱讀