中位數、眾數、百分位數和 OLAP
我是新手,想了解 OLAP,我有幾個問題。
- 問題 1: OLAP 多維數據集可以儲存中位數、眾數、百分位數嗎?
- **問題 2:**使用者編寫的 MDX 查詢能否返回行級數據的摘要?(例如:交易百分比 > 100 美元)。或者多維數據集設計者必須將它添加到多維數據集中?
- **問題 3:**現在是否有任何 OLAP 產品提供訪問行級數據的機制?哪一個?
我們的 IT 部門正在尋找有關我們在使用特定 MS Analsis Services ROLAP 多維數據集時遇到的問題的回饋。我們無權訪問它背後的關係數據庫,需要執行目前在多維數據集中不能作為度量值使用的計算。
讓我看看我是否有這個權利。
- 立方體可以提供計數、平均值、比例、標準差的統計資訊。
- 如果多維數據集設計器提供的度量未滿足特定統計資訊,我們可以編寫 MDX 查詢來獲取它嗎?或者他們是否需要更改多維數據集以便從行級數據預先計算它?
- 多維數據集無法提供中位數、眾數或百分位數等統計資訊,因為這些統計資訊無法正確聚合。
我正在閱讀 Leland Wilkinson 的The Grammar of Graphics和他關於數據探勘和 OLAP 的章節,他說
這些
$$ cube operations $$與計數、平均值、比例和標準差等統計數據很好地配合使用。子類上的簡單聚合可以通過對總和、平方和和其他項線上性函式中組合以產生基本匯總統計數據進行運算來計算。 它們不適用於中位數、眾數和百分位數等統計數據,因為這些統計數據的匯總不是它們匯總的統計數據。例如,中位數的中位數不是聚合的中位數。
他接著補充說:
然而,最近出現了一種更複雜的 ROLAP 模型。通過多種技術,可以讓統計算法通過關係模型實時訪問原始數據。這種方法比數據立方體等結構提供的剛性聚合更有希望。
在這種架構最優雅的形式中,應用程序可以請求遠端連接以提供有關其數據處理方法的資訊,並根據返回的資訊採取適當的行動。在這種形式下,組件架構可以實現分佈式計算的真正承諾:獨立於站點、作業系統或語言的設計和執行。
那是大約 2005 年寫的。有人知道使用這種方法來允許行級數據訪問的產品嗎?
按順序回答您的問題:
- 多維數據集不儲存中位數、眾數(甚至平均值),但您可以編寫計算它們的查詢並將它們作為計算度量嵌入多維數據集中。嵌入這種計算的能力是 OLAP 技術的主要獨特賣點之一。
- 如果您有一個可以辨識單個行的維度(可能是從事實表上的標識符派生的退化或“事實”維度),那麼您可以基於單個行進行查詢。但是,OLAP 在維度和聚合方面起作用,因此您需要有一個能夠辨識各個行的維度(聚合由一個值組成)。
- 任何 OLAP 工具都可以執行 (2) 中描述的操作,而且它們通常支持稱為“鑽取”的機制,在該機制中,多維數據集將返回您鑽取到的給定切片下的事務數據的邊界。
如果您想要執行在多維數據集腳本中不直接可用的計算,許多 OLAP 工具(例如後期的 ProClarity)將允許您制定涉及基於 MDX 的自定義計算的查詢。除非多維數據集沒有您進行實際計算所需的資訊,否則自定義 MDX 計算應該能夠支持您需要的任何計算。
儘管 OLAP 查詢傳統上與聚合統計查詢相關聯,但如果您有一個允許深入了解您需要的細節的維度,那麼當然可以製定查詢來計算中位數、百分位數或直方圖查詢,從中可以推斷或計算模式。
例如,這裡有一個基於排名的帕累托分析查詢範例。
許多多維數據集產品可以在混合或關係 OLAP 模式下執行,它們本身並不持久保存數據,而是從底層數據庫中查詢數據。此外,純 ROLAP 工具(如 Business Objects、Report Builder 或 Discoverer)可以從底層數據庫中查詢並逐行進行工作。但是,它們往往缺乏專用 OLAP 產品的複雜性,並且沒有太多開箱即用的統計分析能力。