維度表建立規範 報表自動化 沒有壓力的維度建模

2021-10-13 23:28:01 字數 2719 閱讀 4085

報表自動化: 沒有壓力的維度建模​www.coologic.cn

前面《報表自動化: 開啟資料倉儲的大門》提到了數倉分為了多個層次,其中 dw 層有多種建模方式,本文主要講 維度建模 的方法,當然相關理**章很多很多了,這篇文章主要是為了串一下流程,並不會詳細的展開每一步的細節。

小明買了 10 個蘋果,共計 3 斤,5.7 元 / 斤;3 斤橘子,4.00 元 / 斤;2 桶 1.5 l 的 xx 牌礦泉水,3.00 元 / 桶;一袋公尺 30 元
上面這麼乙個客戶買了很多東西,一句話裡一共涉及到五類資訊:使用者數量單價單位品牌。當然還隱含了多種資訊:總價商品類目……

多種型別的資料中,數量、單價、總價都可以當做度量值。

度量就是數字麼?大部分度量都是數值

為什麼要了解度量值這個概念?度量值它具有直接價值,度量值之間的關係可以構成間接價值,同時它們還有很大的繼續加工挖掘分析的潛力(潛在價值),我們可以通過總價進行再次加總得到當日銷售總額,也可以通過某個物品的單價月度曲線與銷售量月度曲線進行分析得到人們可以接受的價位。

建立了維度並不能進行降維打擊
小明買東西的例子,涉及到了很多態別的資料,其中單位商品類目就可以作為維度。

用單位來舉例:我們的表建立三個字段,第乙個是數字型別的 primary key,第二個是單位的漢字,第三個是英文。

這樣我們無論在**需要用單位,都可以只存這個數字就可以了,這樣無論是儲存空間還是搜尋速度都比較友好,最主要的是我們可以很好地進行分類

比如通過單位,我們可以將公升型別的單位篩選出來,得到總的液體類物品銷售量

比如通過商品類目進行分類,可以快速的得到所有的蔬菜銷售情況

對於乙個超市來說:銷售事實、商品明細事實、使用者資訊事實、進貨情況也是事實、庫存情況也是事實……

事實表中的度量值:作為度量業務過程的事實**(事實表屬性)**,一般為整型或浮點型的十進位制數值,有可加性、半可加性和不可加性三種型別。

事實表有三種型別:事務事實表、週期快照事實表、累積快照事實表

事實表中一條記錄所表達的業務細節程度被稱為粒度

事實表的設計過程:選擇業務過程、宣告粒度、確定維度、確定事實

事實表作為資料庫的乙個表,到底要存什麼字段:

primary key:最好是這個事實對應的業務 id,比如銷售事實可以用銷售賬單的 id。實在沒有?總要有個主鍵吧,可以是自增的 id

度量值(或者上面定義的 屬性 這個詞):乙個事實肯定有很多度量,銷售就有銷售的數量、金額等等

維度表primary key:還用上面的例子,各種單位我們可能在資料庫裡寫一堆「個」、「公升」一類的無論占用空間,還是做分析都很不方便,那麼這些單位肯定做會成為乙個單位維度表,這時候事實表裡只需要存對應的主鍵就可以了

其他事實表primary key:繼續看例子,小明這個客戶,我們都知道他叫小明了估計也是辦了會員卡的,會員卡肯定有 id 吧,不要猶豫存上他,總不能存「小明」這個 name 然後找到一堆重名的人吧;除此以外各種銷售物品也許也有建立出事實,那麼存個 id 並不會占用太多空間,當我們需要找到更詳細的資訊「出產地、出產公司」等等時可以快速的找到;再比如收銀員這個企業員工表的 id 來方便找到對應的結賬人員。

明細資訊:如果這是一次超市的外賣,那麼可能使用者會有備註,雖然不是數字不屬於度量,但如果有分析的需要可以加上

上面提到了把其他事實表的 primary key 存進來。這個並不是一定的!!

因為這樣做會導致兩個維度模型有了關聯,如果沒有這麼明確的訴求,我們可以將其他事實表中需要的資訊提取成乙個專供當前事實的維度表。

比如公司員工資訊表超級複雜,而且涉及到人員也很多很多並不都是收銀人員,這些其他的人員是不會直接接觸到來超市買東西的客戶的,這個時候就可以單獨的將收銀人員提取出來作為我們這個銷售事實的收銀員維度。其他模型的事實也許只是當前模型的維度

經過上面的操作,事實表已經連上了維度表,這就已經完成了維度建模。那麼連線以後會有什麼樣子呢?星型模型、雪花模型、星座模型

我們需要一次性設計出「盡善盡美」的模型麼?

本文對通過乙個簡單的例子說了一下維度模型,但是對於時間該如何處理呢?我們如何快速的算出來一天的總銷售量?再比如小明購買物品後又退貨了,那麼我們該如何記錄這個訂單的狀態變化呢?請見下文詳解日期維度緩慢變化維

最後,何謂完美?沒有銀彈

自動化指令碼編寫規範

自動化測試指令碼編寫規範 1 為了使所有的測試工程師在進行自動化設計和測試時能夠使編寫的指令碼風格一致 步驟一致,能夠把大家的設計和 組裝在一起,因此有必要對自動化測試指令碼編寫進行統一的規範化,下面就先來介紹我們的專案組整理編寫的自動化指令碼編寫的規範。1 自動化指令碼編寫的規範 1 基本資訊 在...

自動化建立使用者

首先建立shell指令碼 create sharefile.sh 如下是shell指令碼的內容,可以在超級管理員賬戶建立 create sh 名字 學位 入學時間 傳入了三個引數 名字 學位和入學時間 1,2,3 該指令碼包含如下部分 create sh username degree year c...

利用Python實現報表自動化

匯入源資料 import pandas as pd from datetime import datetime data pd.read csv r users faye desktop order 14.1.csv parse dates 成交時間 parse dates將資料解析為時間格式 da...