Oracle數(shù)據(jù)庫聯(lián)機分析處理介紹_第1頁
Oracle數(shù)據(jù)庫聯(lián)機分析處理介紹_第2頁
Oracle數(shù)據(jù)庫聯(lián)機分析處理介紹_第3頁
Oracle數(shù)據(jù)庫聯(lián)機分析處理介紹_第4頁
Oracle數(shù)據(jù)庫聯(lián)機分析處理介紹_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、Oracle數(shù)據(jù)庫聯(lián)機分析處理介紹Oracle Database 12c 的聯(lián)機分析處理目 錄TOC o 1-2 h z u HYPERLINK l _TOC_250019 引言2 HYPERLINK l _TOC_250018 一個多維數(shù)據(jù)集 三種用場2 HYPERLINK l _TOC_250017 Oracle OLAP 和 Exadata 數(shù)據(jù)庫云服務器3 HYPERLINK l _TOC_250016 Exadata 的多維數(shù)據(jù)集處理優(yōu)勢3 HYPERLINK l _TOC_250015 智能閃存緩存和多維數(shù)據(jù)集查詢4 HYPERLINK l _TOC_250014 關系和維度混合模

2、型5 HYPERLINK l _TOC_250013 多維數(shù)據(jù)集的優(yōu)勢5 HYPERLINK l _TOC_250012 查詢性能5 HYPERLINK l _TOC_250011 快速、增量式更新8 HYPERLINK l _TOC_250010 增強 BI 應用程序的分析內容10 HYPERLINK l _TOC_250009 Oracle Business Intelligence 與多維數(shù)據(jù)集配合使用14 HYPERLINK l _TOC_250008 Microsoft Excel 與多維數(shù)據(jù)集配合使用15 HYPERLINK l _TOC_250007 使用 SQL 查詢多維數(shù)據(jù)集

3、15 HYPERLINK l _TOC_250006 多維數(shù)據(jù)集組織的物化視圖和查詢重寫16 HYPERLINK l _TOC_250005 多維數(shù)據(jù)集視圖18 HYPERLINK l _TOC_250004 設計和管理多維數(shù)據(jù)集25 HYPERLINK l _TOC_250003 Analytic Workspace Manager25 HYPERLINK l _TOC_250002 多維數(shù)據(jù)集的物化視圖刷新27 HYPERLINK l _TOC_250001 嵌入式 OLAP 解決方案的其他優(yōu)勢28 HYPERLINK l _TOC_250000 總結29Oracle Database 1

4、2c 的聯(lián)機分析處理 PAGE 28引言Oracle Database 12c 的 OLAP 選件是嵌入在 Oracle 數(shù)據(jù)庫企業(yè)版中的一個功能齊全的聯(lián)機分析處理服務器。OLAP 選件可用于承擔以下角色:基于 SQL 的業(yè)務智能應用程序的匯總管理解決方案。承擔該角色時,Oracle 多維數(shù)據(jù)集用于管理匯總數(shù)據(jù),并可由基于 SQL 的業(yè)務智能應用程序透明地訪問,這些應用程序使用數(shù)據(jù)庫的查詢重寫特性訪問由多維數(shù)據(jù)集組織的物化視圖。計算引擎,為基于 SQL 的業(yè)務智能應用程序提供豐富的分析內容。可以使用附加式和非附加式聚合、計算量度、統(tǒng)計預測、分配和維度計算模型來增強 Oracle 多維數(shù)據(jù)集。應

5、用程序使用SQL 查詢多維數(shù)據(jù)集。功能齊全的多維服務器,為面向維度的業(yè)務智能應用程序提供服務。應用程序使用 Oracle OLAPAPI 或 MDX 等維度查詢語言來查詢所有數(shù)據(jù),包括計算。作為一種嵌入式解決方案,OLAP 選件在 Oracle 數(shù)據(jù)庫實例內運行。不存在單獨的服務器、用戶或數(shù)據(jù)庫文件需要加以管理。它繼承了令 Oracle 數(shù)據(jù)庫成為企業(yè)級數(shù)據(jù)庫的安全性和高可用性特性。OLAP 在 Oracle Exadata 數(shù)據(jù)庫云服務器上運行,從而可利用智能閃存緩存獲得巨大的性能優(yōu)勢。OLAP 為訪問 OLAP 多維數(shù)據(jù)集提供了一個 SQL 接口,通過該接口,任何可以查詢星型模式的應用程序

6、都可以輕松查詢 OLAP 多維數(shù)據(jù)集,并且可受益于查詢性能的提高和分析內容。一個多維數(shù)據(jù)集 三種用場Oracle 數(shù)據(jù)庫的架構允許單個 OLAP 多維數(shù)據(jù)集同時承擔三種不同角色:匯總管理解決方案,應用程序使用 Oracle 數(shù)據(jù)庫的查詢重寫特性透明地訪問。為基于 SQL 的業(yè)務智能應用程序提供豐富的分析內容。功能齊全的多維 OLAP 服務器。Oracle OLAP 多維數(shù)據(jù)集用作多維數(shù)據(jù)集組織的物化視圖 時,允許基于 SQL 的應用程序使用 Oracle 數(shù)據(jù)庫的查詢重寫功能自動訪問在多維數(shù)據(jù)集內管理的匯總數(shù)據(jù)。通過多維數(shù)據(jù)集的這種用法,Oracle 在多維數(shù)據(jù)集內聚合和管理匯總數(shù)據(jù),而應用程

7、序可繼續(xù)使用 SQL 查詢細節(jié)關系表。當查詢需要匯總數(shù)據(jù)時,Oracle 自動重寫對多維數(shù)據(jù)集的查詢?;?SQL 的應用程序完全不知道多維數(shù)據(jù)集的存在,但卻將受益于多維數(shù)據(jù)集的性能?;?SQL 的業(yè)務智能應用程序可以使用 Oracle 多維數(shù)據(jù)集的關系視圖直接查詢多維數(shù)據(jù)集,這樣,不僅可以提高性能,而且可以訪問多維數(shù)據(jù)集的分析內容。多維數(shù)據(jù)集、維度和層級的關系視圖將數(shù)據(jù)呈現(xiàn)為星型關系模式。與典型的星型模式不同,多維數(shù)據(jù)集視圖不僅提供細節(jié)數(shù)據(jù)和聚合級數(shù)據(jù),還提供多維數(shù)據(jù)集內通過動態(tài)計算得到的有用的量度。在這種用法中,基于 SQL 的應用程序查詢多維數(shù)據(jù)集的關系視圖,但通常不知道多維數(shù)據(jù)集的存

8、在。此外,維度感知的應用程序可以使用 MDX 查詢多維數(shù)據(jù)集1。這種應用程序為最終用戶提供展現(xiàn)維度查詢和計算模型的查詢體驗。為用戶提供的體驗可能包括鉆取和透視、維度感知的查詢生成器以及定義自定義量度(事實)的能力。這種應用程序專為 OLAP 選件而設計,能完全感知多維數(shù)據(jù)集。同一個多維數(shù)據(jù)集可以同時為上述每種查詢提供服務,從而讓許多應用程序和許多用戶能夠利用多維數(shù)據(jù)集上的投資獲得最大收益,同時為整個企業(yè)提供單一數(shù)據(jù)源。Oracle OLAP 和 Exadata 數(shù)據(jù)庫云服務器對于 Exadata 數(shù)據(jù)庫云服務器而言,OLAP 選件是完美的分析升級。OLAP 選件的全部功能都可以在 Exadat

9、a 數(shù)據(jù)庫云服務器上使用。OLAP 選件非常受益于 Exadata 數(shù)據(jù)庫云服務器提供的并行處理功能、大量內存和智能閃存緩存,從而讓 Exadata 成為了 Oracle 多維數(shù)據(jù)集的首選平臺。Exadata 的多維數(shù)據(jù)集處理優(yōu)勢可以對 Oracle 多維數(shù)據(jù)集進行分區(qū),可以并行處理多維數(shù)據(jù)集分區(qū),每個數(shù)據(jù)庫進程對應一個分區(qū)。(分區(qū)和并行進程由數(shù)據(jù)庫自動管理。)理想情況下,最佳的并行進程數(shù)為多維數(shù)據(jù)集分區(qū)數(shù)和可用處理器數(shù)之間的較小者,這樣,或者所有分區(qū)都能并行處理,或者同時使用所有處理器。1 多維數(shù)據(jù)集的 MDX 查詢需要第三方 MDX 提供程序。實際上,限制多維數(shù)據(jù)集處理并行度的因素是 I/

10、O 帶寬和可用內存量。內存不足和 I/O 帶寬低會導致 I/O 等待,從而致使高并行度收效甚微,甚至事與愿違。Exadata 數(shù)據(jù)庫云服務器解決了這一問題。其大量內存通常允許數(shù)據(jù)庫在內存中整個緩存各個分區(qū),這樣就完全消除了 I/O 等待。而當多維數(shù)據(jù)集分區(qū)不能完全放入內存時,高帶寬磁盤相比于能力較低的系統(tǒng)可將 I/O 等待降至最小。結合使用適當?shù)亩嗑S數(shù)據(jù)集分區(qū)策略時,在 Exadata 數(shù)據(jù)庫云服務器上通??捎^察到高度并行處理且?guī)缀鯖]有 I/O 等待。智能閃存緩存和多維數(shù)據(jù)集查詢對 OLAP 多維數(shù)據(jù)集的查詢可產生大量小的隨機磁盤讀取,因為會訪問許多低級單元以計算高級的聚合單元。這與在數(shù)據(jù)倉庫

11、環(huán)境中對表執(zhí)行操作時的情況截然不同,在數(shù)據(jù)倉庫環(huán)境 中,往往會產生相對較少但數(shù)據(jù)量較大的磁盤讀?。ū頀呙柽^程就會出現(xiàn)這樣的情況)。智能閃存緩存適用于大量隨機 I/O,可顯著提高(已經很快的)OLAP 多維數(shù)據(jù)集查詢性能,尤其適用于需要訪問大量低級單元以計算高級聚合單元的大型多維數(shù)據(jù)集。在大型多維數(shù)據(jù)集上執(zhí)行的基準測試表明,將多維數(shù)據(jù)集設置為 FLASH_CACHE = KEEP 時,相比于設置為 FLASH_CHACHE = DEFAULT,平均查詢性能提高了 2.6 倍。更重要的是,智能閃存緩存對最難、運行時間最長的查詢產生的效果最大 很少有長時間運行的查詢,查詢性能更穩(wěn)定。閃存緩存不僅提高

12、了平均查詢性能,而且將運行時間最長的查詢減少了 16 倍?;鶞蕼y試 Exadata 上的 OLAP在衡量 Oracle 多維數(shù)據(jù)集的構建和查詢性能的基準測試中,對 Exadata 數(shù)據(jù)庫云服務器 X3-2半機架上的數(shù)據(jù)庫執(zhí)行基準測試的結果為:包含 10 億以上源行的多維數(shù)據(jù)集上每個查詢的平均查詢性能為 0.72 秒。該測試使用了 60 個并發(fā)用戶,這些用戶在查詢之間沒有等待, 因此這就模擬了一個相當大的用戶社區(qū),該社區(qū)中的用戶會停頓下來查看數(shù)據(jù),然后再繼續(xù)執(zhí)行另一個查詢。該多維數(shù)據(jù)集是四維的,最大維度是客戶,具有 220 萬個細節(jié)成員。該多維數(shù)據(jù)集包含 5年的日常數(shù)據(jù),并按月分區(qū),從而形成 6

13、0 個分區(qū)。使用 60 個并行進程,在 42 分鐘內完成了整個多維數(shù)據(jù)集的構建。對該多維數(shù)據(jù)集執(zhí)行的 SQL 查詢旨在模擬使用 Oracle Business Intelligence 企業(yè)版之類的業(yè)務智能工具時可觀察到的查詢情況。查詢包括時序計算,如年同期銷售額、年同期銷售額變化以及年同期銷售額百分比變化。一系列查詢從較高的聚合級別開始,然后隨機鉆取到報表任何維度的成員。因此,對于訪問的是哪個成員、時段和匯總級別,查詢模式完全不可預測。關系和維度混合模型OLAP 選件作為 Oracle 數(shù)據(jù)庫的嵌入式特性,允許應用程序將關系和維度模型的元素混合在一個應用程序內。多維數(shù)據(jù)集的計算模型是維度的,

14、因而開發(fā)人員和數(shù)據(jù)庫管理員可將維度計算和層級計算嵌入到數(shù)據(jù)庫中。這些計算可以在運行時輕松地進行定義和高效地執(zhí)行。由于 Oracle 為訪問多維數(shù)據(jù)集提供了一個功能齊全的 SQL 接口,因此可簡單地將多維數(shù)據(jù)集看作關系對象,只是它們可以提高性能和提供分析內容。維度可看作關系對象,只是它們包括的列含有可用于創(chuàng)建層級查詢的信息。使用 SQL,應用程序可自由地混合關系概念和維度概念。應用程序還可自由地將關系表與多維數(shù)據(jù)集和維度相聯(lián)接。例如,應用程序可以使用鉆取、透視、層級篩選器和計算在維度上下文中查詢多維數(shù)據(jù)集,使用 SQL 聚合函數(shù)執(zhí)行基于屬性的報告,以及鉆取到關系表中的細節(jié)。Oracle Busi

15、ness Intelligence 企業(yè)版與 Oracle 多維數(shù)據(jù)集一起使用時,這是一個版本通用實現(xiàn)。多維數(shù)據(jù)集的優(yōu)勢Oracle OLAP 多維數(shù)據(jù)集是 Oracle 數(shù)據(jù)庫內的數(shù)據(jù)類型,具有許多重要優(yōu)勢,可增強您的業(yè)務智能應用程序,這些優(yōu)勢包括:提高查詢性能。快速、增量式更新。豐富的分析內容。使用元數(shù)據(jù)描述邏輯業(yè)務模型和多維數(shù)據(jù)集的關系表示。任何應用程序,無論是基于 SQL 還是基于 MDX 的應用程序,都有可能通過利用一個或多個上述特性得到改進。查詢性能為了在業(yè)務智能應用程序中實現(xiàn)出色的查詢性能,需要解決兩大相關挑戰(zhàn)。第一個挑戰(zhàn)是,業(yè)務智能應用程序用戶執(zhí)行的幾乎所有查詢都需要匯總數(shù)據(jù)。

16、第二個挑戰(zhàn)是,用戶往往希望通過自定義查詢和報表獨自探索數(shù)據(jù)。這種探索形成了不可預測(或即席)的查詢模式。即席查詢模式與可預測的查詢模式如果查詢模式是可預測的,那么通過預先計算滿足特定查詢需要的數(shù)據(jù)來優(yōu)化應用程序的查詢性能是比較容易的。例如,如果 BI 信息板包含二十個不同的查詢,為支持其中每個查詢并獲得出色的查詢性能,創(chuàng)建匯總表或基于表的物化視圖可能是合理的。當查詢模式變得難于預測時,為特定的查詢進行預先物化變得不切實際。我們假設這樣一個數(shù)據(jù)模型,它有五個維度(可能是時間、客戶、產品、分銷渠道和供應商),每個維度有六個匯總級別(例如,在時間維度中,有天、周、月、季度、半年和一年)。在該示例中,

17、可能有 15,624 個唯一的級別組合來表示用戶可能查詢的匯總數(shù)據(jù)2。DBA 和 BI 應用程序管理員通常試圖通過將最終用戶群限制為僅使用預定義的查詢來解決此問題,這些預定義的查詢可使用匯總表或物化視圖預先物化一定數(shù)量的匯總數(shù)據(jù)來進行調優(yōu)。將用戶限制為僅使用預定義的報表或查詢縮小了問題范圍,因而 DBA 可以創(chuàng)建特定的匯總表或物化視圖來滿足這些查詢需要并提供出色的查詢性能。但是,這種解決方案同時也降低了用戶詢問問題的能力,并降低了業(yè)務智能應用程序的效益和價值。不過如果允許用戶使用即席查詢探索數(shù)據(jù),他們可能會面臨查詢性能問題。還有一種解決方案是,DBA 可以選擇創(chuàng)建一組匯總表或物化視圖來用作通用

18、匯總管理解決方案。這通常是一組包含特定級別組合數(shù)據(jù)的表或物化視圖。希望得到的結果是,要么查詢直接從這些級別組合進行選擇,要么匯總表或物化視圖足夠接近查詢,以提供出色性能和運行時匯總。該解決方案的效益取決于創(chuàng)建的匯總表數(shù)和查詢模式。這種解決方案常常提供不穩(wěn)定的性能。直接從匯總表進行選擇或非常接近于匯總表的查詢將具有出色性能。匯總表不能為其提供較好服務的查詢可能性能較差。在整個數(shù)據(jù)模型中提供出色的查詢性能可能極其困難,因為這可能需要非常大量的匯總表或物化視圖。我們再次看一下這個具有 15,624 個可能級別組合的示例。甚至創(chuàng)建 5% 的可能級別組合(生成數(shù)百個匯總表或物化視圖)可能僅部分解決查詢性

19、能問題,而且會在數(shù)據(jù)庫管理方面產生大量開銷。2 五個維度,每個維度六個級別,減去一個基本級別,即 (56 1)針對匯總數(shù)據(jù)實現(xiàn)優(yōu)化Oracle 多維數(shù)據(jù)集的設計正是為了處理這樣的情況:對于最終用戶可能使用不可預測查詢模式進行查詢的業(yè)務模型,在給定的任何時刻將整個業(yè)務模型呈現(xiàn)給查詢。單個 OLAP 多維數(shù)據(jù)集表示 Oracle 數(shù)據(jù)庫中單個對象內的所有級別的匯總。多維數(shù)據(jù)集針對層級聚合和匯總數(shù)據(jù)管理實現(xiàn)了高度優(yōu)化。此外,OLAP 多維數(shù)據(jù)集還針對通常是即席查詢模式的隨機單元(從 SQL 角度看為行)訪問實現(xiàn)了高度優(yōu)化。OLAP 選件將專利技術應用于匯總級數(shù)據(jù)的聚合和存儲。這些方法已針對業(yè)務智能應

20、用程序常見的高度稀疏數(shù)據(jù)集實現(xiàn)了高度優(yōu)化。這些技術包含壓縮多維數(shù)據(jù)集和基于成本的聚合,這兩項技術都是多維數(shù)據(jù)集所獨有的。對事實(量度)單元的引用使用偏移量尋址和專門的索引方法,在這些方法中,維度用作數(shù)據(jù)的索引?;陉嚵械拇鎯ο随I的冗余存儲。量度數(shù)據(jù)與維度預先聯(lián)接,從而在對數(shù)據(jù)應用篩選器時、解析外聯(lián)接(許多時序計算需要)時,以及查詢需要來自多個多維數(shù)據(jù)集的數(shù)據(jù)時,多維數(shù)據(jù)集極為高效。多維數(shù)據(jù)集組織的物化視圖表示單個對象中所有可能的匯總。這樣,SQL 優(yōu)化器可以快速選擇最適合查詢寫入的對象。基于 SQL 的業(yè)務智能應用程序可通過以下兩種方式之一利用多維數(shù)據(jù)集的查詢性能:用基于多維數(shù)據(jù)集的物化視

21、圖替換當前的匯總管理戰(zhàn)略,或直接查詢 OLAP 多維數(shù)據(jù)集。以下圖表可用于幫助了解相對于多維數(shù)據(jù)集,匯總表或表組織的物化視圖的查詢性能。通常,這兩種數(shù)據(jù)類型(表和多維數(shù)據(jù)集)都適用于具有預定義報表或相對較少即席查詢的應用程序。當查詢變得更為即席時,多維數(shù)據(jù)集提供更高的查詢性能。多維數(shù)據(jù)集和多維數(shù)據(jù)集組織的物化視圖的查詢性能優(yōu)勢隨著查詢模式變得更為即席而提高快速、增量式更新查詢性能只是性能評價的一部分因素 任何匯總管理解決方案都應易于管理,并為數(shù)據(jù)集的定期更新提供性能優(yōu)勢。Oracle OLAP 多維數(shù)據(jù)集已高度優(yōu)化,可實現(xiàn)快速、增量式更新。由于所有匯總都在單個對象中進行管理,因此相比于大量的匯

22、總表或物化視圖,多維數(shù)據(jù)集更易于管理。使用獲得專利的算法聚合和存儲多維數(shù)據(jù)集,這些算法利用層級聚合的典型稀疏特征。多維數(shù)據(jù)集內的聚合幾乎始終是增量式的。多維數(shù)據(jù)集可識別對基本級數(shù)據(jù)的更改,只有當基本級數(shù)據(jù)出現(xiàn)更改時才會重新聚合匯總級數(shù)據(jù)。多維數(shù)據(jù)集是數(shù)據(jù)庫內的單個對象。只對多維數(shù)據(jù)集的源細節(jié)表掃描一次;所有聚合都來自源表的這次掃描??梢允褂?Oracle 物化視圖的刷新系統(tǒng)對多維數(shù)據(jù)集進行更新。多維數(shù)據(jù)集可以從物化視圖的日志表處理對源表的更改,從而無需對源表進行掃描。插入、更新和刪除從物化視圖的日志表以增量方式進行處理。我們要知道,多維數(shù)據(jù)集的大多數(shù)匯總級數(shù)據(jù)通常是為響應查詢而在運行時計算得出

23、的; 多維數(shù)據(jù)集極少通過預先計算所有匯總數(shù)據(jù)來完全物化多維數(shù)據(jù)集。大多數(shù)情況下,在多維數(shù)據(jù)集更新期間僅預先聚合較少量的數(shù)據(jù)。當多維數(shù)據(jù)集在運行時聚合數(shù)據(jù)時,有一些明顯的優(yōu)勢。其中最重要的兩個優(yōu)勢是,以細粒度的方法預先聚合匯總數(shù)據(jù)和將維度預先聯(lián)接到多維數(shù)據(jù)集。基于成本的聚合利用非常細粒度的方法預先聚合數(shù)據(jù)。基于成本的聚合不是使用選擇級別組合等粗粒度策略預先聚合數(shù)據(jù),而是確定哪些單元(對于 SQL 來講,為行)對于動態(tài)計算而言成本較高,然后僅存儲這些單元。這個決策一部分依靠以下方法來進行:檢查數(shù)據(jù)并了解生成父單元的聚合需要多少個子單元。DBA 可以影響成本閾值?;诔杀镜木酆蠎?zhàn)略可產生“極細網格”

24、的預先聚合單元,并確保整個多維數(shù)據(jù)集的性能更穩(wěn)定。在基于陣列實現(xiàn)多維數(shù)據(jù)集的過程中,預先聯(lián)接維度和多維數(shù)據(jù)集。因此,在多維數(shù)據(jù)集內生成聚合數(shù)據(jù)的進程中,完全消除了聯(lián)接處理。由于有更多的工作是在維護多維數(shù)據(jù)集的進程中提前完成的 如編譯維度,實現(xiàn)引用完整性和自動生成數(shù)據(jù)索引 因此可以預測的是,相比于簡單地將數(shù)據(jù)插入到一個關系表,多維數(shù)據(jù)集將有更長的最少數(shù)據(jù)準備時間。一旦考慮生成表索引以及創(chuàng)建匯總表或物化視圖,多維數(shù)據(jù)集即開始具有縮短整個數(shù)據(jù)準備時間的優(yōu)勢。是使用多維數(shù)據(jù)集還是匯總表來實現(xiàn)快速查詢,具體取決于查詢負載和所需的查詢性能。再次考慮一下可預測查詢模式與即席查詢模式之間的差異。如果查詢模式可

25、預測性非常強,只需要不多的匯總表或物化視圖。構建這些表可能比構建多維數(shù)據(jù)集更快。隨著查詢模式變得越發(fā)不可預測,多維數(shù)據(jù)集就具有了優(yōu)勢,這是因為,多維數(shù)據(jù)集采用高效的聚合算法(即壓縮多維數(shù)據(jù)集和基于成本的聚合)因而往往能更快地實現(xiàn)查詢完全優(yōu)化。使用基于成本的聚合預先聚合相對少量的數(shù)據(jù)往往快速地針對查詢優(yōu)化多維數(shù)據(jù)集。對于匯總表或物化視圖,隨著查詢負載變得更為即席,需要創(chuàng)建越來越多的表來提高查詢性能。這種關系如下圖所示。對于即席查詢環(huán)境,多維數(shù)據(jù)集快速優(yōu)化由于多維數(shù)據(jù)集既非常適用于可預測查詢負載又非常適用于不可預測查詢負載,對于任何維度數(shù)據(jù)集,組織應考慮多維數(shù)據(jù)集和多維數(shù)據(jù)集組織的物化視圖作為匯總

26、戰(zhàn)略。增強 BI 應用程序的分析內容光是多維數(shù)據(jù)集的性能特點就應足以讓組織考慮在其數(shù)據(jù)倉庫或數(shù)據(jù)集市中添加多維數(shù)據(jù)集。但性能只是多維數(shù)據(jù)集的眾多優(yōu)勢之一。另一個優(yōu)勢是能夠顯著增強業(yè)務智能應用程序的分析內容。在多維數(shù)據(jù)集內可以定義各種分析計算。這些分析計算包括層級聚合、計算量度、分配、統(tǒng)計預測和成員計算模型。在數(shù)據(jù)庫中,多維數(shù)據(jù)集自動以星型模式表示。多維數(shù)據(jù)集的每個維度都有關系視圖,并且使用一個視圖來表示多維數(shù)據(jù)集的量度。多維數(shù)據(jù)集的分析計算在多維數(shù)據(jù)集視圖中簡單地作為關系列公開。例如,可能有一列表示銷售收入、年初至今的銷售額、庫存余量或庫存成本。雖然該列可能返回某種復雜的計算(如年初至今的銷售

27、額)或需要某種高級聚合方法(如庫存余量),但查詢工具卻無需了解計算規(guī)則。該工具發(fā)出簡單的 SQL,然后多維數(shù)據(jù)集自動執(zhí)行計算。舉例來說,這是使用 Oracle Application Express 構建的一個應用程序,該程序不具體了解業(yè)務智能或多維數(shù)據(jù)集,但是可以查詢分析內容,如在多維數(shù)據(jù)集中管理的年初至今的計算。利用維度模型定義計算多維數(shù)據(jù)集使用維度模型簡化計算的定義。例如,可以使用了解層級關系(如,父、子、祖先和后代)的語法定義量度計算。雖然用于定義量度計算的語法是維度感知的,但OLAP 函數(shù)基于 SQL 語法,因此對于在 LAG 和 RANK 等 SQL 分析函數(shù)方面具有豐富經驗的開發(fā)

28、人員和 DBA 而言都非常熟悉。層級感知的計算函數(shù)的一個巨大優(yōu)勢是在整個多維數(shù)據(jù)集內只使用一個表達式即可。使用基于 SQL 的傳統(tǒng)應用程序,表達式可能會根據(jù)查詢的列而改變。我們以 LAG 函數(shù)為例。如果產品維度具有 Total、Manufacturer、Brand、Item 和 SKU 級別, 且應用程序需要在父級對產品排序,則需要為每個級別定義一個表達式。例如:- Rank brands with Totalrank() over(PARTITION BY p.TOTAL ORDER BY f.sales DESC NULLS LAST) RANK- Rank items within Br

29、andrank() over(PARTITION BY p.BRAND ORDER BY f.sales DESC NULLS LAST) RANK- Rank SKUs within Itemsrank() over(PARTITION BY p.ITEM ORDER BY f.sales DESC NULLS LAST) RANK雖然一些較高級的查詢應用程序可通過在中間層定義層級和計算來解決此問題,但許多應用程序卻不能。在這些情況下,最終用戶必須為匯總的每個級別定義表達式。這可能是一個巨大負擔,尤其是需要在數(shù)據(jù)內上鉆或下鉆的應用程序中。通過多維數(shù)據(jù)集,可以使用一個表達式定義對整個模型起作用

30、的層級計算。以下排序表達式將在層級的任意級別,在父級對產品排序,可替代前面討論的三個不同的 SQL 排序函數(shù)。- Rank within parentRANK() OVER HIERARCHY (PRODUCT.PRIMARY ORDER BY UNITS_CUBE.SALES DESC NULLS LAST WITHIN PARENT)請注意,OLAP 表達式與 SQL 表達式類似,但使用層級和 PARENT 關鍵字替代查詢分區(qū)子句。由于 OLAP 表達式描述的是親緣關系,而非硬編碼列,因此可在匯總的任意級別使用。下例顯示了這個相同的模式,該示例基于期初至今的時序計算:- SQL expre

31、ssion SUM(f.sales)OVER(PARTITION BY t.calendar_year ORDER BY t.end_dateRANGE BETWEEN unbounded preceding AND current row)- OLAP expression SUM(units_cube.sales)OVER HIERARCHY (time.calendarBETWEEN unbounded preceding AND current memberWITHIN ancestor at level time.calendar.calendar_year)與上一個示例一樣,OVE

32、R HIERARCHY 替代 OVER,層級元素替代列名。對于常用計算也提供了類似函數(shù),如份額、過往/未來期間、期初至某日、某日至期末、移動聚合和累積聚合等計算。對于每種計算,在特定級別和在級別內,相對于父級、祖先級的計算,還有所變化。由于多維數(shù)據(jù)集自動執(zhí)行分區(qū)外聯(lián)接以使數(shù)據(jù)密集,因此時序計算得到了進一步簡化。 這樣,可確保計算始終對過往期間和未來期間計算返回正確結果,甚至當過往期間或未 來期間的值為 null 時。由于維度與多維數(shù)據(jù)集自動聯(lián)接,因此該操作在多維數(shù)據(jù)集中非常高效。OLAP 函數(shù)可組合使用或嵌套使用,以設計出新函數(shù)。此外,大多數(shù) SQL 單行函數(shù)(如DECODE 和 ROUND

33、函數(shù))均可在多維數(shù)據(jù)集內嵌的 OLAP 計算中使用。因此,在多維數(shù)據(jù)集中可以定義非常強大的用戶定義的計算。如前所述,所有量度計算在 SQL 多維數(shù)據(jù)集視圖中顯示為列。應用程序只需在 SQL 多維數(shù)據(jù)集視圖中從該列進行選擇,即可訪問計算結果。多維數(shù)據(jù)集中可提供的計算匯總多維數(shù)據(jù)集中可提供的不同類型的計算可以屬于以下類別之一:層級聚合、量度計算、分配、統(tǒng)計預測和模型。下面幾節(jié)將介紹每種計算類型。層級聚合層級聚合是一種將層級結構中低級別成員的數(shù)據(jù)聚合到高級別成員的計算。OLAP 選件支持多種聚合方法,包括總和、層級加權平均值和比例總和。聚合方法可因維度而異。例如, Headcount 量度的聚合,對

34、于 Organization 維度,可以求和,對于 Time 維度,可以對從天到月、季度和年求平均值。計算量度計算量度在多維數(shù)據(jù)集中以公式形式存在,將在查詢期間動態(tài)計算。示例有時序計算、市場份額和指數(shù)、偏差和排名。即使量度計算需要行間計算、外聯(lián)接和多維數(shù)據(jù)集間的聯(lián)接時,多維數(shù)據(jù)集也能非常高效地處理這些量度計算。計算量度以額外事實列的形式添加到 SQL 多維數(shù)據(jù)集視圖中。分配分配將層級結構內高級成員中的數(shù)據(jù)分發(fā)到低級成員。例如,公司預算系統(tǒng)可使用分配系統(tǒng)將部門的下一財年預算分發(fā)到各個產品組,最后分發(fā)到單個產品。OLAP 選件支持多種分配方法,包括復制方法(層級復制、最小值、最大值、第一個值、最后

35、一個值)、平均分發(fā)方法(平均、層級平均)和成比例(包括加權分發(fā))。分配結果存儲在多維數(shù)據(jù)集中,并在 SQL 多維數(shù)據(jù)集視圖中作為事實列進行查詢。統(tǒng)計預測OLAP 選件提供一個完備的統(tǒng)計預測系統(tǒng)。預測方法包括非線性回歸、一次指數(shù)平滑、二次指數(shù)平滑和 Holt/Winters。預測系統(tǒng)還支持數(shù)據(jù)的季節(jié)性等特性。預測結果存儲在多維數(shù)據(jù)集中,并在 SQL 多維數(shù)據(jù)集視圖中作為事實列進行查詢。成員計算模型OLAP 模型計算各個維度成員的值,每個維度成員的計算依據(jù)各自的獨特計算規(guī)則。OLAP 選件自動執(zhí)行計算并支持聯(lián)立方程。模型常用在財務應用程序中,特別用于定義非層級維度(如會計科目表)內的計算。Orac

36、le 數(shù)據(jù)字典中的 BI 元數(shù)據(jù)多維數(shù)據(jù)集表示企業(yè)業(yè)務智能平臺的多個導入資產: 數(shù)據(jù)、邏輯業(yè)務模型、計算規(guī)則和業(yè)務模型的物理表示。其中的每個元素均在 Oracle 數(shù)據(jù)字典中進行了描述。業(yè)務智能應用程序可查詢數(shù)據(jù)字典,以發(fā)現(xiàn)多維數(shù)據(jù)集的方方面面,并使用查詢 SQL 多維數(shù)據(jù)集視圖所需的信息自動填充自己的元數(shù)據(jù)信息庫。一般來說,OLAP 元數(shù)據(jù)可分成以下兩類:有關多維數(shù)據(jù)集結構、數(shù)據(jù)和計算方式的信息。有關如何表示多維數(shù)據(jù)集的信息,以便使用 SQL 多維數(shù)據(jù)集視圖進行查詢。描述多維數(shù)據(jù)集結構的數(shù)據(jù)字典視圖允許應用程序查找多維數(shù)據(jù)集的維度、層級、級別、屬性和量度。對于多維數(shù)據(jù)集和量度,字典視圖描述了

37、多維數(shù)據(jù)集的計算方式以及量度的計算表達式。應用程序可使用該信息了解多維數(shù)據(jù)集的邏輯模型。描述如何向 SQL 公開多維數(shù)據(jù)集的數(shù)據(jù)字典視圖使用視圖名稱、列名及其角色等信息描述了多維數(shù)據(jù)集視圖、維度視圖和層級視圖。應用程序可使用該信息將其應用程序映射到SQL 多維數(shù)據(jù)集視圖。通過查找前綴 XXX_CUBE(例如 USER_CUBE、ALL_CUBE 和 DBA_CUBE)即可輕松找到OLAP 數(shù)據(jù)字典視圖。Oracle Business Intelligence 與多維數(shù)據(jù)集配合使用Oracle Business Intelligence 企業(yè)版是一個功能齊全的業(yè)務智能報表系統(tǒng),提供信息板和警報(

38、可訪問多種數(shù)據(jù)源)。作為基于 SQL 的系統(tǒng),Oracle Business Intelligence 可以使用 Oracle 多維數(shù)據(jù)集作為匯總管理解決方案(透明地,使用多維數(shù)據(jù)集組織的物化視圖),或者作為具有豐富分析內容的數(shù)據(jù)源(直接查詢多維數(shù)據(jù)集視圖)。當使用多維數(shù)據(jù)集組織的物化視圖時,Oracle Business Intelligence 只需查詢關系表,然后數(shù)據(jù)庫自動將查詢重寫到多維數(shù)據(jù)集中。無需更改 Oracle Business Intelligence 信息庫。為支持直接查詢多維數(shù)據(jù)集,以便允許 Oracle Business Intelligence 訪問多維數(shù)據(jù)集內的計算

39、,Oracle OLAP 選件提供了一個可自動創(chuàng)建 Oracle Business Intelligence 信息庫以表示一個或多個多維數(shù)據(jù)集的特性。Oracle Business Intelligence 根據(jù)生成的信息庫發(fā)出的 SQL 針對多維數(shù)據(jù)集進行了完美調優(yōu),從而確保實現(xiàn)最佳性能。Oracle Business Intelligence 企業(yè)版中的年初至今的信息板頁面。使用 SQL 從 Oracle 多維數(shù)據(jù)集查詢所有數(shù)據(jù)。Microsoft Excel 與多維數(shù)據(jù)集配合使用使用 Microsoft Excel 透視表,用戶可在維度上下文中查詢 Oracle 多維數(shù)據(jù)集。Excel

40、使用MDX 提供程序直接查詢 Oracle 多維數(shù)據(jù)集,從而用戶能夠以交互方式訪問多維數(shù)據(jù)集中的任何數(shù)據(jù) 細節(jié)數(shù)據(jù)和匯總數(shù)據(jù)以及計算。用戶可定義自己的查詢,在層級結構內從匯總級別鉆取到細節(jié)級別,以及通過旋轉維度更改報表的方向。Excel 的格式設置和繪圖特性可用于 Oracle 多維數(shù)據(jù)集數(shù)據(jù)。同一工作表中的其他單元或其他工作表可以引用多維數(shù)據(jù)集數(shù)據(jù)。Excel 透視表和圖表可嵌入到其他 MS Office 應用程序中,如 PowerPoint 和 Word,從而讓這些應用程序可以實時顯示 Oracle OLAP 多維數(shù)據(jù)集中的數(shù)據(jù)。使用 Microsoft Excel 透視表查詢 Oracl

41、e 多維數(shù)據(jù)集。使用 SQL 查詢多維數(shù)據(jù)集SQL 是業(yè)務智能應用程序以及查詢和報表應用程序中最常使用的查詢語言。這不足為奇, 因為絕大多數(shù)數(shù)據(jù)是在關系數(shù)據(jù)庫中進行管理的。OLAP 選件接受基于 SQL 的應用程序, 允許這些應用程序使用標準 SQL 查詢多維數(shù)據(jù)集。應用程序可以使用簡單的 SQL 訪問多維數(shù)據(jù)集中的任何數(shù)據(jù)(細節(jié)數(shù)據(jù)、匯總數(shù)據(jù)、存儲數(shù)據(jù)和計算數(shù)據(jù)),而無需了解多維數(shù)據(jù)集中數(shù)據(jù)的計算方式。應用程序通常歸為以下兩類:僅尋求通過多維數(shù)據(jù)集提高性能的應用程序。這些應用程序可使用多維數(shù)據(jù)集組織的物化視圖訪問多維數(shù)據(jù)集中的匯總數(shù)據(jù)。尋求通過多維數(shù)據(jù)集提升性能并訪問分析內容的應用程序。這些

42、應用程序可查詢多維數(shù)據(jù)集視圖來提升性能,并訪問多維數(shù)據(jù)集中的任何內容。多維數(shù)據(jù)集組織的物化視圖和查詢重寫通過多維數(shù)據(jù)集組織的物化視圖,任何應用程序都可透明地訪問多維數(shù)據(jù)集管理的匯總數(shù)據(jù),從而立即實現(xiàn)查詢性能提升。多維數(shù)據(jù)集組織的物化視圖是在 Oracle Database 12c 中引入的,與基于表的物化視圖具有相同的作用。即,對查詢應用程序來說透明的匯總管理解決方案。與基于表的物化視圖一樣,應用程序查詢細節(jié)表,然后數(shù)據(jù)庫自動重寫查詢,以訪問物化視圖中的匯總數(shù)據(jù)。對于多維數(shù)據(jù)集組織的物化視圖,數(shù)據(jù)在多維數(shù)據(jù)集中管理,而不是在表中管理。由此, 多維數(shù)據(jù)集組織的物化視圖自動繼承多維數(shù)據(jù)集的查詢和刷

43、新性能優(yōu)勢,其中包括:壓縮多維數(shù)據(jù)集聚合技術。基于成本的聚合。在單個數(shù)據(jù)庫對象中管理所有可能的匯總?;陉嚵械拇鎯涂焖賳卧ㄐ校┰L問??焖佟⒃隽渴剿⑿潞途酆?。多維數(shù)據(jù)集組織的物化視圖是一個僅含元數(shù)據(jù)的對象,在這一點上類似于預先構建表的物化視圖。數(shù)據(jù)在多維數(shù)據(jù)集中管理和存儲;物化視圖僅包含數(shù)據(jù)庫通過物化視圖刷新系統(tǒng)執(zhí)行多維數(shù)據(jù)集查詢寫入和刷新所需的元數(shù)據(jù)。不會將數(shù)據(jù)從多維數(shù)據(jù)集復制到多維數(shù)據(jù)集組織的物化視圖中。只使用一個物化視圖表示多維數(shù)據(jù)集中的所有匯總數(shù)據(jù)。使用這個基于多維數(shù)據(jù)集的單個對象,而不是基于數(shù)十個、數(shù)百個甚至數(shù)千個表的物化視圖來作為匯總管理解決方案,可顯著減少優(yōu)化器完成查詢執(zhí)行之前

44、需要考慮的物化視圖數(shù),從而提高查詢重寫特性的效率(此外,還有多維數(shù)據(jù)集的其他優(yōu)勢)。由于多維數(shù)據(jù)集組織的物化視圖表示所有可能的匯總,因此數(shù)據(jù)庫將查詢重寫入物化視圖的速度通常非常高。使用領先的業(yè)務智能應用程序進行的測試已表明的確如此。多維數(shù)據(jù)集組織的物化視圖可通過其 CB$ 名稱前綴進行識別。例如, 表示名為UNITS_CUBE 的多維數(shù)據(jù)集的物化視圖將命名為 CB$UNITS_CUBE。DBA 使用 Analytic Workspace Manager(OLAP 管理工具)或 OLAP API 將多維數(shù)據(jù)集組織的物化視圖添加到多維數(shù)據(jù)集。然后,數(shù)據(jù)庫自動維護物化視圖的定義。多維數(shù)據(jù)集組織的物化

45、視圖對于查詢應用程序以及管理和刷新源表的進程是完全透明的。應用程序繼續(xù)查詢關系表。管理表的進程不會因多維數(shù)據(jù)集的存在而更改。查詢示例以下示例說明了多維數(shù)據(jù)集組織的物化視圖如何使應用程序透明地訪問多維數(shù)據(jù)集中的匯總數(shù)據(jù)。在 該 示 例 中 , 假 設 有 五 個 表 : TIME_DIM 、 PRODUCT_DIM 、 CUSTOMER_DIM 、CHANNEL_DIM 和 UNITS_FACT。_DIM 表是維度表。UNITS_FACT 表是事實表。這組表共同構成了一個星型模式。這里創(chuàng)建了一個反映這些表的維度、層級和事實數(shù)據(jù)的多維數(shù)據(jù)集,并且 DBA 已打開多維數(shù)據(jù)集組織的物化視圖。該多維數(shù)據(jù)

46、集組織的物化視圖命名為 CB$UNITS_CUBE。應用程序并不知道該多維數(shù)據(jù)集或物化視圖的存在。它只是使用如下查詢對表進行查詢,就像多維數(shù)據(jù)集創(chuàng)建前那樣:SELECT t.calendar_year_id time, p.class_id product, c.region_id region, SUM(f.sales) salesFROM time_dim t, product_dim p, customer_dim c, units_fact fWHERE t.month_id = f.month_id AND p.item_id = f.item_idAND c.ship_to_id

47、= f.ship_to_id GROUP BY t.calendar_year_id,p.class_id, c.region_id;Oracle 優(yōu)化器認識到多維數(shù)據(jù)集包含該查詢請求的匯總數(shù)據(jù),然后將該查詢重寫入多維數(shù)據(jù)集組織的物化視圖中。生成的 SQL 執(zhí)行計劃如下所示。OPERATION SELECT STATEMENTHASHCUBE SCAN CB$UNITS_CUBECUBE SCAN 操作指示,數(shù)據(jù)將由多維數(shù)據(jù)集行源返回。CB$UNITS_CUBE 是多維數(shù)據(jù)集組織的物化視圖。管理陳舊數(shù)據(jù)與基于表的物化視圖一樣,數(shù)據(jù)庫知道何時已對源表進行了更改,以及多維數(shù)據(jù)集不再是表的最新表示。

48、如果多維數(shù)據(jù)集是源數(shù)據(jù)的最新表示,我們將其稱為是新鮮 的。如果不是,我們將物化視圖稱為是陳舊 的。物化視圖系統(tǒng)允許數(shù)據(jù)庫管理員準許或禁止重寫到陳舊的物化視圖。在這點上,基于表的物化視圖和多維數(shù)據(jù)集組織的物化視圖是相同的。多維數(shù)據(jù)集視圖Oracle OLAP 多維數(shù)據(jù)集視圖使組織能夠提高基于 SQL 的業(yè)務智能應用程序的性能和分析內容。OLAP 多維數(shù)據(jù)集視圖是 OLAP 多維數(shù)據(jù)集、維度和層級的關系視圖,可顯示多維數(shù)據(jù)集和維度的全部內容。概述多維數(shù)據(jù)集視圖使應用程序能夠查詢存儲的事實和分析內容,如在多維數(shù)據(jù)集中嵌入的計算量度。維度視圖和層級視圖使應用程序能夠查詢維度成員和成員屬性。在 OLAP

49、 維度中,屬性可包含層級屬性(如級別、父級、祖先級和后代級),這些屬性可用于將維度查詢模型的元素添加到基于 SQL 的應用程序中。對于基于 SQL 的應用程序來講,每個多維數(shù)據(jù)集、維度和維度內的層級總是表示為關系視圖。有三種類型的視圖:多維數(shù)據(jù)集視圖。維度視圖。層級視圖。這些視圖由數(shù)據(jù)庫自動創(chuàng)建并管理。應用程序開發(fā)人員和 DBA 可隨意從系統(tǒng)維護的多維數(shù)據(jù)集視圖創(chuàng)建額外的視圖。表示多維數(shù)據(jù)集、維度和層級的視圖集以星型模式的形式進行組織。多維數(shù)據(jù)集視圖多維數(shù)據(jù)集視圖表示多維數(shù)據(jù)集的事實數(shù)據(jù)。多維數(shù)據(jù)集視圖包含每個鍵(表示每個維度) 和每個事實對應的列。多維數(shù)據(jù)集視圖的一項創(chuàng)新特性是它表示多維數(shù)據(jù)

50、集中的所有數(shù)據(jù): 存儲量度、計算量度、細節(jié)數(shù)據(jù)和匯總級數(shù)據(jù)。這意味著,應用程序無需了解事實的聚合方式或計算方式,即可使用 SQL 進行查詢。這樣,多維數(shù)據(jù)集視圖不僅可用作匯總管理解決方案,還可用作計算豐富的數(shù)據(jù)源。典型的多維數(shù)據(jù)集視圖可能包含以下列:NameType TIMEVARCHAR2(100)PRODUCTVARCHAR2(100)CUSTOMERVARCHAR2(100)CHANNELVARCHAR2(100)SALESNUMBERUNITSNUMBERCOSTNUMBERPROFITNUMBERSALES_YR_AGONUMBERSALES_DIFF_YR_AGONUMBERSAL

51、ES_PCTDIFF_YR_AGONUMBERSALES_YTDNUMBERSALES_YTD_YR_AGONUMBERSALES_DIFF_YTD_YR_AGO NUMBER注意 多維數(shù)據(jù)集視圖列的角色和說明在xxx_CUBE_VIEW_COLUMNS 數(shù)據(jù)字典視圖中提供。維度視圖維度視圖和層級視圖都表示維度中的數(shù)據(jù)。每種風格的視圖對維度的表示有些不同,應用程序可以使用任意一種風格的視圖,也可以同時使用兩種風格的視圖,具體取決于對應用程序的需求。維度視圖在單個視圖中表示所有維度成員 所有層級的細節(jié)和匯總成員。行既包括細節(jié)成員也包括匯總成員。只有一個鍵列。其他列包含鍵列中維度成員的屬性。典型的

52、維度視圖可能具有以下列:NameType DIM_KEYVARCHAR2(100)LEVEL_NAMEVARCHAR2(30)LONG_DESCRIPTIONVARCHAR2(100)SHORT_DESCRIPTIONVARCHAR2(100)CUSTOMER_TOTAL_IDVARCHAR2(100)CUSTOMER_REGION_IDVARCHAR2(100)CUSTOMER_WAREHOUSE_ID VARCHAR2(100)CUSTOMER_SHIP_TO_IDVARCHAR2(100) CUSTOMER_MARKET_SEGMENT_ID VARCHAR2(100) CUSTOMER

53、_ACCOUNT_IDVARCHAR2(100)DIM_KEY 列是視圖的主鍵,包含維度成員(同樣,既有細節(jié)成員也有匯總成員)。LEVEL_NAME 列包含成員的級別。(在該示例中,為 SHIP_TO、WAREHOUSE、REGION、ACCOUNT、MARKET_SEGMENT 和 TOTAL 級別)。LEVEL_NAME 列使應用程序能夠輕松地指示查詢需要哪個級別的匯總。SHORT_DESCRIPTION 和 LONG_DESCRIPTION 列包含維度成員的描述性名稱。_ID 列包含 DIM_KEY 列的匯總級成員。要查找某維度成員的祖先成員或后代成員,這些列非常有用。注意 維度視圖列的

54、角色和說明在 xxx_DIMENSION_VIEW_COLUMNS 數(shù)據(jù)字典視圖中提供。層級視圖對于維度的每個層級,均有一個層級視圖。除下述三種情況外,層級視圖與維度視圖相同:層級視圖僅包含屬于該層級的成員的行。層級視圖包含 PARENT 列,該列返回(DIM_KEY 列中)維度成員的父成員。層級視圖包含兩列來表示每個級別,一列用于原始鍵,另一列用于代理鍵,代理鍵可能是在將維度表中的數(shù)據(jù)加載到 OLAP 維度的過程中在維度中生成的。3對于在層級內上鉆或下鉆的查詢以及將多維數(shù)據(jù)集聯(lián)接到源表的查詢,層級視圖特別有用。 典型的層級視圖可能包含以下列:NameType DIM_KEYVARCHAR2(

55、100)LEVEL_NAMEVARCHAR2(30)LONG_DESCRIPTIONVARCHAR2(100)SHORT_DESCRIPTIONVARCHAR2(100)PARENTVARCHAR2(100)TOTALVARCHAR2(100)CUSTOMER_TOTAL_IDVARCHAR2(100)REGIONVARCHAR2(100)CUSTOMER_REGION_IDVARCHAR2(100)3 如果維度成員在源表中的各級別間不唯一,可能會在 OLAP 維度中生成代理鍵。WAREHOUSEVARCHAR2(100)CUSTOMER_WAREHOUSE_IDVARCHAR2(100)SH

56、IP_TOVARCHAR2(100)CUSTOMER_SHIP_TO_IDVARCHAR2(100)注意 層級視圖列的角色和說明在xxx_HIERARCHY_VIEW_COLUMNS 數(shù)據(jù)字典視圖中提供。查詢示例以下查詢示例延續(xù)了前面的示例,其中有四個維度(Time、Product、Customer 和 Channel) 和一個多維數(shù)據(jù)集 (Units Cube)。Time 維度有兩個層級 Calendar 和 Fiscal。Customer 維度有兩個層級 Shipments 和 Segment。Product 和 Channel 維度各有一個層級,都命名為Primary。該模型將產生十一個

57、視圖:TIME_VIEWTIME_CALENDAR_VIEWTIME_FISCAL_VIEWPRODUCT_VIEWPRODUCT_PRIMARY_VIEWCUSTOMER_VIEWCUSTOMER_SHIPMENTS_VIEWCUSTOMER_SEGMENTS_VIEWCHANNEL_VIEWCHANNEL_PRIMARY_VIEWUNITS_CUBE_VIEW以下查詢相當于物化視圖示例中使用的示例:SELECT t.time_calendar_quarter_id time, duct_class_id product, cu.customer_region_id custome

58、r, f.sales salesFROM time_view t, product_view p, customer_view cu, channel_view ch, units_cube_view fWHERE t.dim_key = f.timeAND p.dim_key = duct AND cu.dim_key = f.customer AND ch.dim_key = f.channelAND t.level_name = CALENDAR_QUARTER AND p.level_name = CLASSAND cu.level_name = REGION AND ch.

59、level_name = TOTAL;該查詢采用星型查詢風格,但在以下方面不同于物化視圖示例:在事實列 SALES 中不需要聚合運算符。由于不使用聚合運算符,因此不需要 GROUP BY 子句。包含一些對 LEVEL_NAME 列的篩選器。包含 CHANNEL_VIEW 視圖與 UNITS_CUBE_VIEW 視圖之間的聯(lián)接。所有這些變化都是通過同時包含細節(jié)數(shù)據(jù)和匯總級數(shù)據(jù)的創(chuàng)新式多維數(shù)據(jù)集視圖而得以實現(xiàn)。由于該視圖包含匯總級數(shù)據(jù),因此應用程序可直接對其進行查詢。這樣便無需使用聚合運算符和 GROUP BY。這里使用級別篩選器指示所需的匯總級別。4 使用 CHANNEL_VIEW 與 UNIT

60、S_FACT_VIEW 之間的聯(lián)接,以便查詢利用 Channel 維度的 TOTAL 值,該值相當于Channel 維度的所有細節(jié)行的聚合。該示例說明了這樣的基本原則:查詢可以利用多維數(shù)據(jù)集提供的聚合。不需要在查詢內重新聚合數(shù)據(jù)。通過多維數(shù)據(jù)集就可以實現(xiàn)復雜的聚合和其他計算,因而可以使用非常簡單的 SQL 來查詢多維數(shù)據(jù)集。這種簡單的 SQL 可顯著提高開發(fā)人員的工作效率。當查詢在多維數(shù)據(jù)集內計算的某些類型的數(shù)據(jù)時,可以看出在多維數(shù)據(jù)集視圖中同時表示細節(jié)數(shù)據(jù)和匯總數(shù)據(jù)的重要性。最常見的情況是:多維數(shù)據(jù)集使用自己獨有的聚合運算符計算匯總數(shù)據(jù)。例如,層級加權平均。聚合運算符對于不同的維度是不同的。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論