資料倉庫 - 模式



模式是對整個資料庫的邏輯描述。它包括所有記錄型別(包括所有相關資料項和聚合)的記錄名稱和描述。與資料庫類似,資料倉庫也需要維護模式。資料庫使用關係模型,而資料倉庫使用星型、雪花型和事實星座型模式。本章將討論資料倉庫中使用的模式。

星型模式

  • 在星型模式中,每個維度都只用一個維度表表示。

  • 此維度表包含屬性集。

  • 下圖顯示了公司關於四個維度(時間、專案、分支和位置)的銷售資料。

Start Schema
  • 中心有一個事實表。它包含每個四個維度的鍵。

  • 事實表還包含屬性,即銷售額和銷售單位。

注意 - 每個維度只有一個維度表,每個表都包含一組屬性。例如,位置維度表包含屬性集 {location_key, street, city, province_or_state, country}。此約束可能會導致資料冗餘。例如,“溫哥華”和“維多利亞”這兩個城市都在加拿大不列顛哥倫比亞省。此類城市的條目可能會導致屬性 province_or_state 和 country 的資料冗餘。

雪花模式

  • 雪花模式中的一些維度表被規範化了。

  • 規範化將資料拆分到其他表中。

  • 與星型模式不同,雪花模式中的維度表是規範化的。例如,星型模式中的專案維度表被規範化並拆分為兩個維度表,即專案表和供應商表。

Snowflake Schema
  • 現在,專案維度表包含屬性 item_key、item_name、type、brand 和 supplier-key。

  • 供應商鍵連結到供應商維度表。供應商維度表包含屬性 supplier_key 和 supplier_type。

注意 - 由於雪花模式中的規範化,冗餘減少了,因此易於維護並節省儲存空間。

事實星座模式

  • 事實星座有多個事實表。它也稱為星系模式。

  • 下圖顯示了兩個事實表,即銷售和運輸。

Fact Constellation Schema
  • 銷售事實表與星型模式中的相同。

  • 運輸事實表具有五個維度,即 item_key、time_key、shipper_key、from_location、to_location。

  • 運輸事實表還包含兩個度量,即銷售額和銷售單位。

  • 也可以在事實表之間共享維度表。例如,時間、專案和位置維度表在銷售和運輸事實表之間共享。

模式定義

多維模式使用資料探勘查詢語言 (DMQL) 定義。可以使用兩個基本結構,立方體定義和維度定義,來定義資料倉庫和資料市場。

立方體定義語法

define cube < cube_name > [ < dimension-list > }: < measure_list >

維度定義語法

define dimension < dimension_name > as ( < attribute_or_dimension_list > )

星型模式定義

我們討論過的星型模式可以使用資料探勘查詢語言 (DMQL) 定義如下:

define cube sales star [time, item, branch, location]:   
    	   
dollars sold = sum(sales in dollars), units sold = count(*)    	  

define dimension time as (time key, day, day of week, month, quarter, year)
define dimension item as (item key, item name, brand, type, supplier type)        	
define dimension branch as (branch key, branch name, branch type)              	
define dimension location as (location key, street, city, province or state, country)

雪花模式定義

雪花模式可以使用 DMQL 定義如下:

define cube sales snowflake [time, item, branch, location]:

dollars sold = sum(sales in dollars), units sold = count(*)

define dimension time as (time key, day, day of week, month, quarter, year)
define dimension item as (item key, item name, brand, type, supplier (supplier key, supplier type))
define dimension branch as (branch key, branch name, branch type)
define dimension location as (location key, street, city (city key, city, province or state, country))

事實星座模式定義

事實星座模式可以使用 DMQL 定義如下:

define cube sales [time, item, branch, location]:

dollars sold = sum(sales in dollars), units sold = count(*)

define dimension time as (time key, day, day of week, month, quarter, year)
define dimension item as (item key, item name, brand, type, supplier type)
define dimension branch as (branch key, branch name, branch type)
define dimension location as (location key, street, city, province or state,country)
define cube shipping [time, item, shipper, from location, to location]:

dollars cost = sum(cost in dollars), units shipped = count(*)

define dimension time as time in cube sales
define dimension item as item in cube sales
define dimension shipper as (shipper key, shipper name, location as location in cube sales, shipper type)
define dimension from location as location in cube sales
define dimension to location as location in cube sales
廣告
© . All rights reserved.