在學習數據建模技術之前我們先來簡單了解一下何為數據模型?
簡單的講數據模型就是由一組表和關系構成的結構,表和表之間由關系鍊接。如下圖所示的銷售數據模型:
在了解了數據模型概念的基礎上,看看什麼是數據建模?
在Power BI 中可以對多個表格,多種來源的數據,根據不同的維度、不同的邏輯做聚合分析;而分析數據的前提就是要将這些數據表建立關系,這個建立關系的過程就是建立數據分析模型,簡稱為數據建模。
很多人讀完這段,内心開始犯起了嘀咕,“維度” 是個啥?“聚合” 又是一個什麼鬼東西?
維度通俗的講,就是人們對所分析的目标對象所采用的分析角度,應該是一種“屬性、範圍、承受能力”意思的包含。這裡的聚合實際是聚合運算的簡稱,就是指将多個值聚合在一起進行某種運算,比如求和,求平均數,求乘積等等。
根據補充解釋,再返回頭認真讀一遍數據建模的概念,現在是不是很容易理解了? 是不是超級簡單?
如果你還糾纏小編問,那為何要做求和、求平均數的運算呀? 這……, 請給小編一塊82年的老豆腐,讓我自戕,可否?
下面來看個例子,将上面的知識做一個串聯和鞏固。
例如某連鎖奶茶店于某天一共銷售N筆訂單,在這些訂單中又包含N多的産品信息,銷售價格和銷售人員信息等等。這些數據被記錄到表中,當然還有商品的進價和庫存信息,也同樣被記錄在表中的且這些數據均會被導入到數據庫中。在數據庫裡這些銷售表,庫存表,産品信息表,門店信息表會按照設定好的關系進行連接,此時财務人員隻需要通過查詢數據庫就可以掌握該店鋪當天的銷售額、盈利額、銷售最佳店長,等等運營情況。
好像讀完這個例子,你可能徹底懵逼了,這是哪跟哪呀?根本就沒有看到小編上文講到的啥維度呀,聚合呀,建模呀! 小編這是逗我玩膩吧?
不敢!不敢!小編自打小就謹記師言,“人活一世,童叟無欺!” 下面我們一起來看看這個案例中究竟哪裡講了維度,哪裡講了聚合以及如何建模?
首先,回顧一下維度是什麼? 上文中講到維度是一種“屬性、範圍、承受能力”意思的包含。那案例中的産品信息表、顧客信息表、門店信息表所包含信息不是正好與維度這個概念相吻合嗎?所以這些表叫産品信息維度表、顧客信息維度表和門店信息維度表是不是更準确一些呢?
那銷售數據表也是維度表嗎?不! 不! 不! 我們再來觀察一下,銷售數據表中記錄的是某日某個時間發生的某件事件。如: 下圖中訂單編号 DD80000047 是某顧客(GK902717-顧客維度表中的列)于 2017年1月1日在南京市的某奶茶店裡購買了柳橙奶茶(NC1001-産品信息維度表中的列) 其數量為5杯之多。這一條記錄是記錄的銷售發生的事實數據,故銷售數據表是事實表而非維度表。
來總結一下:事實數據表存儲觀察或事件,它包含與維度表和數值列相關的維度鍵列。
其次,回顧一下聚合,所謂聚合就是多個值聚合在一起進行某種運行,比如求和,求平均數等等。顯而易見,案例中通過數據庫查詢當天的銷售額、盈利額及最佳銷售員等等這些結果均需進行聚合運算後才能得出。
另外,該案例中還講到了一個數據庫,那建立數據庫系統的目的是什麼?是為了實現對現實世界中各種信息的計算機處理。換言之,要實現計算機對現實世界中各種信息的自動化、高效化的處理,首先必須建立能夠存儲和管理現實世界中的信息的數據庫系統。數據模型是數據庫系統的核心和基礎。任何一種數據庫系統,都必須建立在一定的數據模型之上。由于現實世界的複雜性,不可能直接從現實世界中建立數據模型。
再來總結一下:現實世界 →(抽象)→ 信息世界 →(轉化)→ 數據世界。可濃縮為:數據模型是現實世界的抽象。
此時你可能又要問我,那案例中哪裡講到建模了呢?别急,别急!懷抱琵琶半遮面,千呼萬喚始出來了!既然數據庫裡面存放的數據模型是現實世界的抽象,那該案例中的産品信息、銷售信息、人員信息等等這些現實世界的信息被抽象、轉化成相應的數據存放到了數據庫裡,然後依據建模技術把維度表和事實表之間的主鍵和外鍵建立關系連接,便可輕松實現多表之間互相查詢數據。如:可以根據産品信息表中的産品ID 可以查詢到銷售數據表中的該産品當日的銷售量,銷售總金額及哪個店鋪銷量最高等等信息。
最後我們用所學的知識,将該案例中的現實數據轉換成多張數據表,并進行關系鍊接實現表和表之間的關聯,最終如下圖所示:
Next, 我們來學習一下最簡單的Power BI數據建模技術。
在數據建模中會使用到蘇州近10年的職工薪資數據,小編已事先對這些數據進行了清洗并追加到一張表中了,對于數據簡單的清洗和追加可參考數據清洗篇。為了給大家演示數據建模,我們需要額外兩張表,年份維度表和職位維度表。
以及近10年職位薪資合并後的總表。
上文中小編講過,建模技術說白了就是在表與表之間建立關系。我們通過觀察,這三張表要是建立關系,應該是年份維度表中的“年份”列 與近10年職位薪資表中“年份”列 相關聯,職位維度表 中的“職位代碼”列 與近10年職位薪資表中“代碼”列相關聯。
接下來小編帶你進入Power BI Desktop 中看看如何做簡單建模。進入模型視圖中我們發現年份維度表中的“年份”列 已與10年職位薪資事實表中的“年份”列 自動連接了,為何會這樣呢?因為年份維度表中的“年份”列 雖隻有1列數據,但它也是一張表,且這列數據具有唯一性,故該列為該表的主鍵;而10年職位薪資事實表 中的“年份”列與年份表 中的“年份”列 标題和列值一緻,并且有大量的重複值,我們稱這列為年份維度表 的外鍵,所以Power BI Desktop 軟件在後台經過精确計算和判斷,這兩張表之間存在1對多的關系,如下圖的黃線将它們相連了起來。
再來看一下職位維度表 與近10年職位薪資事實表 之間沒有建立任何連接,這又是為何呢?通過觀察,我們發現雖然職位維度表 中的“職位代碼”列 雖然與10年薪資事實表 中的“代碼”列 雖然存在主鍵和外鍵的關系,但是标題不一緻,故Power BI Desktop 無法自行判斷并将這兩列相關聯。那我們隻好使用手動拖拽的方式将這兩列相關聯。
就這樣一個簡單的數據模型建好了,看似簡單,拖拖拽拽就能實現,其實數據模型是數據分析的核心,遠比這複雜的多,涉及到第三範式、星型架構、四種基數類型、關系的方向性、傳遞性及關系的設計原則等等。這裡不一一詳述,未來還有更多專題文章等你來捧場!
往期回顧,點擊即可閱讀:
1.什麼是Power BI?
2.Power BI Desktop 下載與安裝
3.Power BI 之獲取數據源
4.Power BI 之數據清洗
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!