什麼是MDX?
多維度運算式MDX (MultiDimensional Expression)是為訪問Analysis
Services多維度結構資料Cube所開發出來的語言。 功能非常強大,可用於定義Analysis Services
計算和安全規則。如同訪問關聯式資料庫必須使用SQL
語言一樣,訪問Cube這種多維分析結構,就必須使用MDX語言。MDX在文法上與SQL很相似,但它卻具備處理一個線上處理過程(OLAP)立體中多維
資料的更好功能。對於絕大多數的通用任務,你都可以使用MDX來擷取一個立體中的資訊。MDX
提供了新的指令碼功能、屬性階層、自動共存功能、子Cube操作、新的資料定義和資料動作陳述式以及新的函數和運算子。
簡化資訊的不同類型被稱為維數(dimensions),通過多維簡化大量資料的資料結構被稱為一個立體(cube),簡化資訊被稱為量度(measure)。任何一個立體都有一個或多個維數和量度。
基本文法
針對 DB2 Alphablox 立方體執行的 MDX 查詢的基本文法如下所示:
SELECT {axisSpecification} ON COLUMNS,
{axisSpecification} ON ROWS
FROM cubeName
WHERE (slicerItems)
其中:axisSpecification 是一個或多個元組的集合。可以以列表形式輸入元組,也可以通過 CrossJoin 函數來“產生”元組。
cubeName 是已定義的 Alphablox 立方體的名稱。
slicerItems 是一個元組(通常是用逗號分隔的成員列表),將對這個元組過濾查詢結果集。如果有多個切片成員,則每個成員必須來自不同的維,並且不能在查詢中指定的任何軸中引用該維。
SELECT
[Store].[Store Country].[USA].Children ON COLUMNS,
[Product].[All Products].[Food].Children ON ROWS
FROM [Sales]
WHERE ([Measures].[Unit Sales])
在這種情況下,有兩種axis規則,其中一個為輸出的縱數,另一個為輸出的行數。每一種規則都指定了維數的一部分。