Data Warehouse Guide文件筆記(四):dimension
發表於: 2006.10.22 23:13
分類: DW&BI
出處: http://ningoo.itpub.net/post/2149/223164
---------------------------------------------------------------[@more@]
要理解oracle中的dimension,首先要搞清楚dimension和dimension table之間的區別。dimension table是table,和關聯式資料庫中的其他table一樣,存放資料,需要實際的儲存空間。而dimension則只是一個邏輯結構,定義了dimension table中的一個列或一組列於其他列之間的一個層次關係,dimension只儲存定義,可以將其理解為一種特定的constraint。所以,dimension不是一種必須存在的結構,但是,建立dimension對於資料倉儲中一些複雜的查詢重寫有著相當重要的意義。而查詢重寫,則是資料倉儲效能最佳化的一個不二法門。
資料倉儲中由於資料量巨大,一些聚合計算等操作往往透過物化檢視預先計算儲存。但是,不可能對所有維度的所有可能的聚合操作都建立物化檢視,一則空間不允許,二則重新整理時間也不允許。那麼,在對某些聚合操作的sql進行查詢重寫時,就希望能利用已經存在的物化檢視,儘管他們的聚合操作條件不完全一致。而dimension定義的各個level之間的層次關係,對於一些上卷(rolling up)和下鑽(drilling down)操作的查詢重寫的判斷是相當重要的,而dimension中定義的attributes對於使用不同的列來做分組的查詢重寫起作用。
一個典型的dimension定義如下:
CREATE DIMENSION products_dim
LEVEL product IS (products.prod_id)
LEVEL subcategory IS (products.prod_subcategory)
LEVEL category IS (products.prod_category)
HIERARCHY prod_rollup (
product CHILD OF
subcategory CHILD OF
category
)
ATTRIBUTE product_info LEVEL product DETERMINES
(products.prod_name, products.prod_desc,
prod_weight_class, prod_unit_of_measure,
prod_pack_size, prod_status, prod_list_price, prod_min_price)
ATTRIBUTE subcategory DETERMINES
(prod_subcategory, prod_subcategory_desc)
ATTRIBUTE category DETERMINES
(prod_category, prod_category_desc);
dimension中三個重要的屬性:level,hierarchy,attribute。其中level定義了一個或一組列為一個整體,而hierarchy則定義了各個level之間的層次關係,父level和子level之間是一種1:N的關係,而且,在dimension中可以指定多個hierarchy層次關係。attribute則定義了level和其他列的一個1:1的關係,但這種1:1的關係不一定是可逆的,比如上面的列子,根據product_info,也就是prod_id,可以確定prod_name,但不一定要求prod_name就能確定prod_id。
而且,各個level之間的列不一定要來自同一個table,對於雪花模型,dimension table可能被規範化為許多的小表,則dimension中的level可能是來自不同表中的列。這是需要在dimension中指定join key來指出各個表之間的關聯列。例如:
CREATE DIMENSION customers_dim
LEVEL customer IS (customers.cust_id)
LEVEL city IS (customers.cust_city)
LEVEL state IS (customers.cust_state_province)
LEVEL country IS (countries.country_id)
LEVEL subregion IS (countries.country_subregion)
LEVEL region IS (countries.country_region)
HIERARCHY geog_rollup (
customer CHILD OF
city CHILD OF
state CHILD OF
country CHILD OF
subregion CHILD OF
region
JOIN KEY (customers.country_id) REFERENCES country);
如果不指定skip when null子句,每個level中都不允許出現null值。
透過dbms_dimension.describe_dimension可以檢視dimension的定義。
透過dbms_dimension.validate_dimension可以檢查dimension是否定義正確,在執行之前需要執行ultdim.sql建立一個dimension_exceptions表,如果定義有誤,則會在dimension_exceptions中查到相應的記錄。在9i裡,validate_dimension在dbms_olap包中。
關於dimension, AskTom上有個問題寫得比較詳盡,值得仔細研究,。
(需要引用, 請註明出處: http://ningoo.itpub.net)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/82387/viewspace-1017042/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Data Warehouse Guide文件筆記(一):Data warehouse和OLTP系統的對比GUIIDE筆記
- Data Warehouse Guide文件筆記(三):RELY constraintsGUIIDE筆記AI
- Data Warehouse Guide閱讀筆記(七):partition tableGUIIDE筆記
- Data Warehouse Guide閱讀筆記(八):materialized view之一GUIIDE筆記ZedView
- Data Warehouse Guide閱讀筆記(六):unique constraint & unique indexGUIIDE筆記AIIndex
- The Data Warehouse Toolkit 閱讀筆記筆記
- Building the Data Warehouse - Fourth Edithin - 讀書筆記UI筆記
- 文件筆記--Oracle Data Pump 2筆記Oracle
- 文件筆記--Oracle Data Pump 1筆記Oracle
- Data Warehourse Guide閱讀筆記(五):Bitmap join indexGUIIDE筆記Index
- Materialized Views in data warehouse environment (185)ZedView
- Microsoft & HP Parallel Data Warehouse ApplianceROSParallelAPP
- ES 筆記四:文件的基本 CRUD 與批量操作筆記
- PostgreSQL DBA(181) - Using PostgreSQL as a Data WarehouseSQL
- 林軒田機器學習基石課程學習筆記7 — The VC Dimension機器學習筆記
- 文件筆記--Datatypes筆記
- Streaming Data Warehouse 儲存:需求與架構架構
- RAC student guide 的中文筆記GUIIDE筆記
- Data pump學習筆記筆記
- 2.3.1.1.3 Application Containers Use Case: Logical Data WarehouseAPPAI
- InnoDB文件筆記(一)筆記
- Unity IMGUI 文件筆記UnityGUI筆記
- CSS: The Definitive Guide 4th 筆記CSSGUIIDE筆記
- RAC student guide 的中文筆記(zt)GUIIDE筆記
- RUST 筆記(四)Rust筆記
- git筆記四Git筆記
- 《webpack文件》學習筆記Web筆記
- Oracle GoldenGate 11g官方文件Administrator’s Guide續四OracleGoGUIIDE
- 【goldengate】官方文件筆記四 Oracle GoldenGate實時資料分佈Go筆記Oracle
- R語言data manipulation學習筆記之subset dataR語言筆記
- 英國史筆記(四)筆記
- [BI專案記]-文件版本管理筆記筆記
- Apps DBA Field Guide讀書筆記APPGUIIDE筆記
- InnoDB文件筆記(二)—— Redo Log筆記
- InnoDB文件筆記(三)—— Undo Log筆記
- Kafka文件閱讀筆記(一)Kafka筆記
- [Data Guard]Oracle10g Data Guard學習筆記(一)Oracle筆記
- [Data Guard]Oracle10g Data Guard學習筆記(二)Oracle筆記