第一個原創Power BI 報表製作Day2

2021-02-15 我是蘇有熊

在本系列文章的第一篇——第一個原創Power BI 報表製作Day1——的結尾部分,我交代了Day2的主要任務,就是對數據集的檢查、處理和清洗,為後續對數據的分析作準備。

為了更清晰地理解這個流程的必要性,我再次打開這個流程圖:

在Day1的數據收集和準備階段,我已經對數據集有了一個大致的了解和檢查,所以今天剩下來的主要任務就是:數據處理和數據清洗。

數據處理是一個龐大的概念,因為本次練習打算是用Power BI 來完成,所以本篇文章談到的【數據處理】和【數據清洗】,可以合併理解為【在Power BI 環境下的數據準備】,也就是對數據進行ETL (extract, transform and load),提取,轉換和加載。

ETL過程,可以描述為,從數據源提取數據,然後對其進行轉換、驗證、標準化、更正、質量檢查等,並最終加載到數據存儲庫(例如,數據集市或數據倉庫)中,在此進行簡化以進行分析和報告。

通常,數據的ETL由專門的工具來完成,不過在Power BI Desktop 和Power Query 中,用戶能夠將數據提取、轉換和加載到Power BI 的內部表中,然後將其用作Power BI 可視化的來源。

由於Power Query 會保留對攝取、轉換和加載數據所採取的每個操作的分步記錄,因此在需要刷新數據時可以重複這些相同的步驟。刷新源數據後,所有Power BI 可視化文件也將使用更新後的數據進行刷新。

所以,我們可以直接藉助Power BI Desktop 和 Power Query 來進行這一動作,從標題為【在Power BI 中清理、轉換和加載數據】的官方文檔中,可以看到Power Query 可以對數據進行如下動作的調整和清洗:

識別列標頭和名稱 

提升標頭

重命名列 

刪除前幾行 

刪除列 

逆透視列 

透視列 

重命名查詢 

替換值

替換 NULL 值

刪除重複項

評估和更改列數據類型

將多個表合併為一個表

檢查數據結構

查找數據異常和數據統計信息 

使用高級編輯器修改 M 代碼

... ...等等

可以看出,Power Query 有各種各樣的功能,可以發現和糾正數據中的錯誤,提升數據質量,還可以簡化複雜模型,或者知曉哪些列包含有價值可用於深入分析的信息,等。

我目前無法判斷上述哪些步驟是需要的,哪些不需要,僅僅觀察數據集也難以得到準確的答案,所以每一種方式我都試了一哈。

「對初始數據進行調整的第一步是標識數據內的列標頭和名稱,然後評估它們所在的位置以確保它們位於正確的位置。」

官方文檔這麼描述這個步驟,我的理解就是檢查每個表的表頭是否存在錯誤的描述或者錯位的情況。

因為我找的這個數據集是IBM設計的經過驗證的BI練習專用的數據集,所以應該不存在這種錯誤,不過我還是檢查了一遍,逐一查看了9個表的表頭和名稱。

「當表在 Power BI Desktop 中創建後,Power Query 編輯器會假設所有數據都屬於表行。但是,數據源的第一行可能會包含列名稱, 若要更正此誤差,需要將第一個表行提升為列標頭。

可以通過兩種方式提升標頭:在「主頁」選項卡上選擇「將第一行用作標頭」選項,或選擇Column1 旁邊的下拉菜單按鈕,然後選擇「將第一行用作標頭」。

檢查了一下,沒有發生這樣的錯位,標頭位置都是正常的。

「一列或多列的標頭錯誤、標頭拼寫錯誤,或者標頭命名約定不一致或對用戶不友好。 」

數據非常規整,未發現標頭名稱相關問題。

「在調整數據時,可能需要刪除前幾行,例如,當這些行為空白或者包含報表中不需要的數據時。 比如下面這樣,就要把紅框內的行刪除。」

本數據集未發現此種異常,無需操作。

「 數據調整過程中的一個關鍵步驟是刪除不必要的列。 越早刪除這些列越好。刪除列的一種方式是在從數據源獲取數據時限制列。例如,如果使用 SQL 從關係資料庫中提取數據,則需要在 SELECT 語句中使用列列表對提取的列進行限制。

在此過程的早期階段刪除列(而不是之後再進行刪除)是最好的,特別是在表之間建立了關係的情況下。 刪除不必要的列將有助於你專注於所需的數據,並有助於改進 Power BI Desktop 數據集和報表的整體性能。 

檢查每一列,並詢問自己是否真的需要裡面所含的數據。如果不打算在報表中使用這些數據,那麼這些列對你的數據模型而言沒有任何價值。因此,應該刪除這些列。 如果你的需求隨著時間改變了,你之後可以隨時添加這些列。」

經過檢查,發生了一件奇怪的事,staff表裡竟然多出來兩列:

我看了下源數據表,這兩列是空白的,但是導入到PQ後,竟然多出來兩列,原因暫時查不出來,我先在PQ將這兩列刪掉。

我這裡沒有直接選中右邊這多出來的兩列然後右鍵單擊」刪除「,而是選中了左邊的6列後右鍵單擊」刪除其他列「,為什麼這樣呢?請看群討論,有專家解釋:

微軟官方文檔,https://docs.microsoft.com/zh-cn/learn/modules/clean-data-power-bi/2-shape-data,有詳細介紹兩種刪除列的方法。

本案例數據結構無需此操作

本案例數據結構無需此操作

目前編輯器裡不存在自定義查詢,所以暫時無需此操作。

本案例數據集數據非常規整,不存在需要替換的錯誤值,無需此操作。

未發現null值,無需此操作。

未發現錯誤重複項,無需此操作。

「 當你從任意數據源導入表時,Power BI Desktop 將自動開始掃描前 1,000 行(默認設置)並嘗試檢測列中的數據類型。Power BI Desktop 在某些情況下可能不會檢測到正確的數據類型。如果出現不正確的數據類型,你會遇到性能問題。

在處理平面文件時,例如逗號分隔值 (.CSV) 文件和 Excel 工作簿 (.XLSX),有很大的機率會遇到數據類型錯誤,因為數據是手動輸入到工作表中的,因此會存在錯誤。相反,在資料庫中,數據類型是在創建表或視圖時預定義的。

最佳做法是在將數據加載到 Power BI 數據模型中之前在 Power Query 編輯器中評估列數據類型。如果確定數據類型不正確,則可以進行更改。可能還需要對列中的值應用某一格式,並且更改列的匯總默認設置。

為了繼續對銷售數據進行清理和轉換以準備用於報表,現在需要評估列以確保它們擁有正確的數據類型。你需要更正識別到的所有錯誤。

不正確的數據類型將阻止你創建某些計算、派生層次結構或創建與其他表的正確關係。「

所以,確保你的模型表裡每個欄位的數據類型是正確的,是很有必要的,尤其是那些需要參與計算或者參與報表呈現的欄位。

Power BI 裡,數據類型有這些類型:

中文分別是:

小數

定點小數

整數

百分比

日期/時間

日期

時間

日期/時間/時區

持續時間

文本

布爾值(True/False)

二進位

我檢查了模型裡9個表所有欄位的數據類型,將下面這個欄位的數據類型從數值調整為文本了:

其它列沒動,都是非常標準的數據類型。

另外,我以前一直以為表裡面的編號類欄位應該是文本型,比如下面這幾種:

今天來自大連的老劉同志給我看了個MySQL相關的電子書的片段:

這種數字鍵一般就是數值型,而不是我之前認為的文本型數字,順帶提一下。

可以通過兩種不同的方式合併表:合併和追加。

因為本案例的9個模型表功能和數據結構各不相同,所以不建議進行追加查詢。

為了感受合併查詢的魅力,我進行了多個嘗試:

挺好玩,很強大。

「在 Power Query 編輯器中開始檢查數據之前,應首先了解整理數據的基本數據結構。可以在 Power BI Desktop 的「模型」選項卡下查看當前的數據模型。」

在進入PQ編輯器之前,已經檢查過:

但未對表之間的關聯關係進行處理,打算在數據建模階段再行處理。

通過Power Query 編輯器裡的「列分布」功能,可以觀察數據中是否存在異常的離群值,確定存在哪些異常可有助於確定數據的正常分布情況,以及是否存在需要進一步調查的特定數據點。

Power Query 通過查看【201904 sales reciepts】表前1000行的數據,可以得到如下統計信息:

可以看出,這個表的數據非常理想,100%都是有效數據。

這個功能很強大,可以快速檢查數據中是否存在異常情況。

本案例暫時無需此操作

經過了這些步驟,可以看出,由於這個數據集質量非常高,數據整理和清洗階段的工作量非常少。

你會發現,如果你手上拿到的是一個高質量的數據集,那麼可以減少多少工作量。

在現代BI世界中,數據準備被認為是最困難、最昂貴和最耗時的任務。據專家估計,數據準備一般需要花費分析項目60%-80%的時間和成本。

面對一個未經處理的數據集,需要對其進行數據的準備和清洗,使數據達到高質量的標準,這些標準包括:

有效性

準確性

完整性

一致性

統一性

具體解釋可見下圖:

可以製作一個專用於數據檢查、整理及清洗的To-Do List,方便照著清單一項項的檢查,比如下面我用Notion製作的一個:

好的,本篇Day2的內容就到這裡,明天Day3我們再見。

目前數據初步整理好了,那麼下一步就是進行探索性數據分析,通過視覺方法,來理解數據裡包含的信息。

需要說明的是,對數據的探索過程可能導致額外的數據清理或對數據的額外請求,因此這些活動本質上可能是迭代的。

相關焦點

  • bi軟體和報表工具有哪些區別?
    當數據分析師加入大數據行業時,他們肯定會聽到的兩個詞是「報表工具」和「bi軟體」。但是,許多人以為報表和BI是同一個東西,所以不了解兩者的概念和區別。實際上,這是一個非常錯誤的理解。形成這個錯誤概念的原因是,兩者都是大數據時代下的分析工具。新一代bi軟體和報表工具的功能有些重疊。
  • 手把手教你學會Power BI排名的計算
    注意圖中左上角的紅色箭頭,這個數據是在power bi 文件的【數據視圖】中。【數據視圖】中的欄位和EXCLE中的內容是一樣的。接下來是在報表中樣子,往下看,第一個度量值:銷售總金額新建度量值的方式:銷售總金額的度量值已經在欄位表中體現出來了,如下圖,
  • 高效使用Power BI的15條建議
    這些表是隱藏的,它們消耗內存,因此及時打開選項,去掉「自動日期/時間」的勾選,並且系統日期表無法靈活的添加自定義列,建議大家進行數據分析時,創建自己的日期表,關於日期表的製作請參考:玩PowerBI必備的日期表製作方式匯總。
  • Excel, Tableau還是Power BI?
    2. 數據發掘數據發掘是通過可視化數據或應用高級分析來檢測數據中的模式和特點的過程。使用Excel需要充分了解數據特點才能找到關鍵的信息。Excel中的「股票」和「地理」等選項有助於快速獲取數據的詳細信息。通過Tableau和Power BI,你可以自由瀏覽數據而無需提前知道所需的答案。可以先發現關聯和趨勢,然後深入了解導致其發生的原因。
  • Excel,Tableau還是Power BI?
    2. 數據發掘 數據發掘是通過可視化數據或應用高級分析來檢測數據中的模式和特點的過程。 使用Excel需要充分了解數據特點才能找到關鍵的信息。Excel中的「股票」和「地理」等選項有助於快速獲取數據的詳細信息。
  • BI@Report強大靈活的報表展示能力
    ,它具有以下幾個突出特點:        1.易用的在線的所見即所得的報表設計器         只要訪問報表伺服器,在瀏覽器上就可以完成一切報表的製作,報表定義簡單所見即所得,支持無限的Undo和Redo,支持多種拾取操作方便報表定義,表達式助手方便表達式的編寫。
  • BI系統:分析報表自動生成
    分析報表自動生成是BI系統基礎性效果之一。對每天都需要製作大量樣式一致的基礎性報表的用戶來說,使用BI系統來自動生成分析報表能不僅能快速完成既定的基礎性報表製作任務,更能節省大量時間用於深度數據分析挖掘,或做更具針對性的個性化數據分析。這樣一來就能打破企業數據分析流表面,無法為業務、決策提供快而準的數據支持的困境。
  • FineReport第一個報表設計
    2. 第一個報表1) 報表設計流程圖2) 製作步驟a. 新建資料庫連結新建數據連接的目的是讓 FineReport 設計器連接資料庫,這樣報表就可以在資料庫中讀取、寫入或修改數據。製作這張報表連接的是 FineReport 外置mysql資料庫為列① 打開設計器,菜單欄選擇伺服器>定義數據連接。
  • Power BI 地圖、卡片及多列卡片
    前言:最近在 opendata 閒逛時,看見了一個蠻有趣的 data 是有關於大專院各校系的系別狀況,資料在此:http://data.gov.tw/node/9621,心中頓時有點好奇了一下各學校有多少學士,碩士和去年有多少人資工相關人員畢業,所以打算用 power
  • 終於有人講清楚了,BI 和報表的差異
    2)報表系統階段:報表系統一般是會進行模型設計,把數據套用進相應的模板通過前端的圖表來展示。能夠實現固定報表的自動化,例如日報、周報、月報這樣重複性報表的數據查詢。但在響應業務變化進行底層模型的調整、以及在實時獲取有效信息等方面都無法進行有效支持。
  • 金蝶財務軟體報表製作
    金蝶財務軟體報表製作目的:掌握常見會計報表的製作要求:按照下述資料在金蝶軟體系統中實現會計報表的製作和輸出 資料數據:1.報表管理1.1 製作一張收應帳款科目下客戶業務發生明細表,要求列出客戶期初數據、本年借貨方累計發生額、期末餘額客戶業務數據報表要求:年月日能自動取數【關鍵操作路徑】:帳務管理—》自定義報表—》新建報表【
  • 利用SUMIFS、COUNTIFS兩個Excel函數製作自動化報表
    利用SUMIFS、COUNTIFS兩個Excel函數製作自動化報表。本文我來帶領大家一起,利用sumifs、countifs實現一個自動化報表。統計報表利用以上兩個函數製作完成後,後續數據源銷售記錄有增加或修改,報表自動更新,省時省力。
  • 日報表、月報表的製作示例
    日報表,是很多工作崗位每天要做的工作,而到月底,還需要把日報表匯總到月報表裡。如果不會簡便方法,還真有點麻煩。今晚,小易老師將分享日報表和月報表的製作示例,經常做報表的同學一定不要錯過。
  • Power BI:用Python自動執行數據處理任務
    留言 點讚 關注我們一起分享AI學習與發展的乾貨編譯組:夏伊凡、楊月相關連結:https://towardsdatascience.com/power-bi-how-i-started-using-python
  • 比數據透視表更好用,一分鐘生成進銷存報表
    今天蘭色要分享用Excel表格製作簡易進銷存的實例。 商品入庫表: 根據入庫、出庫表自動生成進銷存報表:
  • Power BI儀錶板可視化部件使用參考
    近日sqlbi.com的兩位專家Mac和Alb分享了Power BI製作儀錶板可視化方面的經驗。他們推薦了一些做法,也推薦避免一些做法,我們來一起學習一下。值得注意的是:儀錶板 和 報表 還是有不同的。在Power BI中一個很有意義的問題是:儀錶板 和 報表 有什麼區別?(這並不在本文討論的範疇)兩位專家按照不同顏色標記了推薦與避免以及是否是PBI的默認自帶可視化元素:
  • 項目實戰:如何製作報表?
    今天我會手把手教會你如何製作報表,在這之前,確保你已經學過了免費系列教程《7天學會商業智能(BI)-Power BI》下面的內容。
  • [原創]web報表開發技術專題一:序號問題
    K8s開發者,快收好這份Multi-Architecture鏡像製作指南!>>>
  • BI可視化,讓你的金融行業報表更酷炫-內附精美報表模板分享
    現在隨著大數據行業以及技術的發展,用戶對可視化的要求也越來越高,在企業的生產經營過程中出現的各類報表,也不再像之前一樣單一無趣,更多地是追求「高顏值」的可視化。億信ABI酷屏,多種金融行業報表模板,使用人員只需要通過拖拽方式即可實現精美的數據可視化報表。
  • Power BI輕鬆製作動態著色地圖
    首先找到每日的地區數據(本文示例為1.21-2.11數據),這裡不再具體介紹。(本文僅探討數據可視化,數據來源請自行查閱官方公開數據)每日數據表有三個欄位,日期,地區和人數,通過這個數據表,提取出日期維度表;這個簡單的模型中還包含之前建立好的地區維度表,建立關係如下。