線上分析處理(英語:Online analytical processing),簡稱OLAP (/ˈoʊlæp/),是電腦技術中快速解決多維分析問題(MDA)的一種方法。[1] OLAP是更廣泛的商業智慧型範疇的一部分,它還包括關聯式資料庫、報告編寫和資料探勘。[2] OLAP的典型應用包括銷售業務報告、市場行銷、管理報告、業務流程管理(BPM)[3]、預算和預測、財務報表以及類似領域,新的應用正在出現,如農業。[4] 術語「OLAP」是對傳統資料庫術語「線上交易處理」(OLTP)稍微修改而成的。[5]
OLAP工具讓使用者能夠從多個角度互動地分析多維資料。OLAP由三個基本的分析操作組成:上卷(roll-up)、鑽取(drill-down)、切片(slicing)和切塊(dicing)。[6]:402-403 上卷涉及可以在一個或多個維度中累積和計算的資料的聚合。例如,所有的銷售辦事處匯總到銷售部門,以預測銷售趨勢。相比之下,鑽取是一種允許使用者瀏覽詳細資訊的技術。例如,使用者可以檢視組成一個地區銷售額的單個產品的銷售額。切片和切塊是說,使用者可以從OLAP多維資料集中取出(切片)一組特定的資料,並從不同的角度檢視(切塊)切片。這些角度有時被稱為維度(例如按銷售人員、按日期、按客戶、按產品或按地區檢視相同的銷售情況等)。
為OLAP組態的資料庫使用多維資料模型,允許快速執行複雜的分析查詢和即席查詢。[7] 它們借鑑了導航型資料庫、層次型資料庫和關係型資料庫的各個方面。
OLAP通常與OLTP(線上交易處理)形成對比,OLTP的特點是查詢的複雜性要小得多,而且查詢量要大得多,以處理事務,而不是用於商業智慧型或報告。OLAP系統主要針對讀取進行最佳化,而OLTP得能處理各種查詢(讀取、插入、更新和刪除)。
OLAP系統概述
OLAP系統的核心是一個OLAP多維資料集。它由稱為度量的數字事實組成,這些數字事實按維度進行分類。這些度量被放置在超立方體的交點處。操作一個OLAP多維資料集的通常介面是一個矩陣介面,就像電子試算表程式中的資料透視表一樣,它沿著維度執行投影操作,例如聚合或求平均值。
多維資料集元資料通常是從關聯式資料庫中的表的星型模式、雪花型模式或事實星座中建立的。度量來自事實表中的記錄,維度來自維度表。
可以認為每個度量都有一組標籤,或者與之關聯的元資料。維度是描述這些標籤的東西; 它提供有關度量的資訊。
舉一個簡單地多維資料集的例子,商店的銷售額作為度量,日期/時間作為維度。每個銷售都有一個日期/時間標籤,描述更多關於該銷售的資訊。
如下所示:
Sales Fact Table +-------------+----------+ | sale_amount | time_id | +-------------+----------+ Time Dimension | 2008.10| 1234 |----+ +---------+-------------------+ +-------------+----------+ | | time_id | timestamp | | +---------+-------------------+ +---->| 1234 | 20080902 12:35:43 | +---------+-------------------+
多維結構被定義為「使用多維結構組織資料並表達資料之間關係的關係模型的變體」。[6]:177 該結構被分解成多個超立方體,並且在每個超立方體的範圍內都能儲存和訪問資料。「多維結構中的每個單元都包含與其維度上的元素相關的聚合資料」。[6]:178 即使對資料進行操作,也很容易訪問並繼續構成一種緊湊的資料庫格式。資料仍然是相互關聯的。 對於使用OLAP應用程式的分析資料庫,多維結構非常流行。[6] 分析型資料庫使用這些資料庫,是因為它們能夠快速地為複雜的業務查詢提供答案。可以從不同的角度檢視資料,這與其他模型不同,為問題提供了更廣闊的視角。[8]
據稱,對於複雜查詢,OLAP多維資料集可以在大約0.1%的時間內生成對OLTP關係資料的相同查詢所需的答案。[9][10] OLAP中允許其實現此類效能的最重要機制是使用聚合。聚合是通過更改特定維度的粒度並使用聚合函式沿著這些維度聚合資料,從事實表構建的。可能聚合的數量由每個可能的維度粒度組合決定。
所有可能的聚合和基礎資料的組合包含可以從資料應答的每個查詢的答案。[11]
因為通常有許多可以計算的聚合,所以通常只有預先確定的數字被完全計算; 其餘的則根據需要求解。決定要計算哪些聚合(視圖)的問題稱為視圖選擇問題。視圖選擇可以受到所選聚合集的總大小、根據基礎資料的更改更新它們的時間的限制,或者同時受兩者的限制。視圖選擇的目標通常是最小化進行OLAP查詢的平均時間,儘管一些研究也最小化了更新時間。視圖選擇是NP完全問題。這個問題已經被探索了許多方法,包括貪婪演算法、隨機搜尋、遺傳演算法和A*搜尋演算法。
對於整個OLAP多維資料集,可以通過預先計算每個單元的值來計算一些聚合函式,然後通過聚合這些聚合來計算單元匯總的聚合,並對多維問題應用分治法來有效地計算這些聚合。[12] 例如,所有的總和就是每個單元的子和的總和。可以這樣分解的函式稱為可分解聚合函式,包括COUNT、MAX、MIN
和SUM
,這些函式可以為每個單元計算,然後直接聚合;這些函式稱為自可分解聚合函式。[13] 在其他情況下,聚合函式可以通過計算單元的輔助數,聚合這些輔助數,最後計算最後的總數來計算;例子有AVERAGE
(跟蹤和與數量,最後再做除法)和RANGE
(跟蹤最大值和最小值,最後再相減)。在其他情況下,如果不立即分析整個集合,就無法計算聚合函式,儘管在某些情況下可以計算近似值;例如DISTINCT COUNT、MEDIAN
和MODE
;例如,集合的中位數不等於子集的中位數。後者很難在OLAP中有效地實現,因為它們需要在基礎資料上計算聚合函式,或者線上(慢)計算它們,或者為可能的展開(大空間)進行預計算。
參考文獻
參見
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.