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

来源:http://www.cnblogs.com/ljhdo/archive/2017/09/15/4579181.html
-Advertisement-
Play Games

最近做了幾個PowerBI報表,對PowerBI的設計有了更深的理解,對數據的塑形(sharp data),不僅可以在Data Source中實現,例如在TSQL查詢腳本中,而且可以在PowerBI中實現,例如,向數據模型中添加自定義欄位,或者在報表數據顯示時,根據數據表之間的關係做數據的統計。本文 ...


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

一,創建數據列

PowerBI報表的數據分為數據源(Data Source),數據模型(Data Model),Query,數據從Data Source載入到Data Model,預設情況下,Data Model和Data Source的表結構(Schema)相同,用戶可以通過增加自定義列修改Data Model的結構。Query是Data Model的視圖,預設情況下,Query和Data Model的表結構相同,用戶可以通過增加計算列和度量列修改Query的結構。

1,自定義數據列

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

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

2,計算列(Calculated Column)

在Report View中,計算列用於從已經載入到數據模型(Model)中的數據,根據公式計算的數據列,這跟在Data Model中增加計算列是不同的,計算列是從數據模型中計算數據,不會修改數據模型,因此,計算列的值,只會出現在Report View 和Data View中。計算列使用DAX定義欄位的數據值,基於載入到數據模型的數據和公式計算結果。

計算列的值是基於當前數據行,進行計算,每行有一個計算列的值。舉個例子,顯示最近一年的日期:

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內置一個可視化控制項HierarchySlicer,能夠顯示欄位的層次結構,在Fields中設置一個層次結構:

控制項顯示的結構是一個樹形結構,點擊“三角”,能夠展開,以樹形結構顯示子級別的數據,HierarchySlicer支持逐層展開,如下圖所示:

 

2,在Table控制項中顯示超鏈接(HyperLink)

在Product View中,選中Query的某一個欄位,如下圖,選中欄位 ProfileLink,

 在Modeling菜單下,該欄位的Data Type為Text,設置文本的Data Category為Web URL:

Table可視化控制項的視圖屬性中,設置Values的URL Icon屬性為On,

 

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

3,數字的小數位的控制

可以在PowerBI中設置欄位的數據類型,選中一個欄位,打開Modeling菜單,

 選擇欄位的數據類型,Format為 Decimal number,選擇貨幣符號($), 顯示百分比(%),千位分隔符(,),或小數位數(0-N),這裡設置 顯示的小數位數是1,只顯示一位小數。

 

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

 

三,根據當前的數據導出數據

在數據建模時,需要創建兩個表之間的關係,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”,從當前列中新建查詢

2,把List轉換成Table

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

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

3,修改數據

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

4,查看導出數據表的實現步驟

在右側的查詢設置(Query Settings)中查看實現的步驟,選擇某一個Step,點擊Step 名稱前的“×”,能夠把該Step刪除。

 

 

附:鑒於本人接觸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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • mysql -h 192.168.1.104 -P3306 -uroot -p 然後輸入你安裝時設置的MySQL密碼 發現Can't connect to MySQL server 你的IP 解決方法: (1)用localhost 登錄 mysql -h localhost -P3306 -uroo ...
  • 一 快速性 如果在記憶體中運行MapRaduce,要比Hadoop快100倍 如果在磁碟中運行,要比Hadoop快10倍 Spark使用先進的有向無環圖執行引擎來支持非迴圈的數據流在記憶體中計算 二 易用性 Spark提供超過80個高階運算元,這些運算元使其很容易構建並行應用 這些運算元支持多種語言 按照切合 ...
  • MySqlInnoDB的事務隔離級別有四個:(預設是可重覆讀repeatable read) 未提交讀 read uncommit : 在另一個事務修改了數據,但尚未提交,在本事務中SELECT語句可能會查詢到這些未被提交的數據,而發生臟讀。 提交讀 read commit : 在一個事務中發生兩次 ...
  • ORACLE虛擬索引(Virtual Index) 虛擬索引概念 虛擬索引(Virtual Indexes)是一個定義在數據字典中的假索引(fake index),它沒有相關的索引段。虛擬索引的目的是模擬索引的存在而不用真實的創建一個完整索引。這允許開發者創建虛擬索引來查看相關執行計劃而不用等到真實... ...
  • 1. 索引的特性 1.1 加快條件的檢索的特性 當表數據量越來越大時查詢速度會下降,在表的條件欄位上使用索引,快速定位到可能滿足條件的記錄,不需要遍歷所有記錄。 #在這個案例中:執行同一條SQL。t2有索引的執行數據是0.052 ms;t1沒有索引的是:5.741 ms; 1.2 有序的特性 索引本 ...
  • 文件和文件組填充策略 文件組對組內的所有文件都使用按比例填充策略。當數據寫入文件組時,SQL Server 資料庫引擎按文件中的可用空間比例將數據寫入文件組中的每個文件,而不是將所有數據都寫入第一個文件直至其變滿為止。然後再寫入下一個文件。例如,如果文件 f1 有 100 MB 可用空間,文件 f2 ...
  • --通過代碼方式新建資料庫create database MyDatabase0911New --(MyDatabase0911New要創建的資料庫名稱)on primary --資料庫文件( --名字 name='MyDatabase0911New_data', --路徑 filename='G: ...
  • SQL是Structure Query language(結構化查詢語言)的縮寫,它是使用關係模型的資料庫應用語言。在眾多開源資料庫中,MySQL正是其中最傑出的代表,MySQL是由三個瑞典人於20世紀90年代開發的一個關係型資料庫。並用了創始人之一Michael Widenius女兒的名字My命名 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...