基本 MDX 查詢 (MDX)
基本的多維度運算式 (MDX) 查詢是 SELECT 陳述式,為 MDX 中最常使用的查詢。了解 MDX SELECT 陳述式必須指定結果集的方式、SELECT 陳述式的語法為何,以及如何使用 SELECT 陳述式建立簡單查詢之後,您將完全了解如何使用 MDX 來查詢多維度資料。
指定結果集
在 MDX 中,SELECT 陳述式會指定一個結果集,內含從 Cube 傳回的多維度資料子集。若要指定結果集,MDX 查詢必須包含下列資訊:
階層的座標軸或集合的數量。在一個 MDX 查詢中,您最多可指定 128 個座標軸。
包含在 MDX 查詢的每一個座標軸上每一個維度的成員。
設定 MDX 查詢內容的 Cube 的名稱。
Slicer 座標軸的成員,已為查詢座標軸成員分割此座標軸上的資料。如需 Slicer 與查詢座標軸的詳細資訊,請參閱<利用查詢與 Slicer 軸限制查詢 (MDX)>。
為識別查詢座標軸、設定查詢內容集合的 Cube,以及 Slicer 座標軸,MDX SELECT 陳述式會使用以下子句:
SELECT 子句,決定 MDX SELECT 陳述式的查詢座標軸。如需在 SELECT 子句內建構查詢座標軸的詳細資訊,請參閱<指定查詢座標軸的內容 (MDX)>。
FROM 子句,決定在擷取資料以擴展 MDX SELECT 陳述式的結果集時,使用哪個多維度資料來源。如需 FROM 子句的詳細資訊,請參閱<SELECT 陳述式 (MDX)>。
(選擇性) WHERE 子句,決定要使用哪個維度或成員做為 slicer 座標軸,此座標軸會限制特定維度或成員擷取資料。如需在 WHERE 子句內建構 slicer 座標軸的詳細資訊,請參閱<指定 Slicer 軸的內容 (MDX)>。
[!附註]
如需 SELECT 陳述式不同子句的詳細資訊,請參閱<SELECT 陳述式 (MDX)>。
SELECT 陳述式語法
以下語法顯示基本 SELECT 陳述式,包括 SELECT、FROM 與 WHERE 子句的用法:
[ WITH <SELECT WITH clause> [ , <SELECT WITH clause> ... ] ]
SELECT [ * | ( <SELECT query axis clause>
[ , <SELECT query axis clause> ... ] ) ]
FROM <SELECT subcube clause>
[ <SELECT slicer axis clause> ]
[ <SELECT cell property list clause> ]
MDX SELECT 陳述式支援選擇性語法,例如 WITH 關鍵字、使用 MDX 函數依計算建構成員以納入座標軸或 slicer 座標軸,以及做為查詢的一部分傳回特定資料格屬性值的能力。如需有關 MDX SELECT 陳述式的詳細資訊,請參閱<SELECT 陳述式 (MDX)>。
比較 MDX SELECT 陳述式與 SQL 的語法
MDX SELECT 陳述式的語法格式跟 SQL 的語法格式相似。但是,有數個相異之處:
MDX 語法使用括住 Tuple 或成員的大括號 ({ 與 } 字元) 來區分集合。如需有關成員、Tuple 以及集合語法的詳細資訊,請參閱<使用成員、Tuple 和集合 (MDX)>。
在 SELECT 陳述式中,MDX 查詢最多可以有 128 個查詢座標軸,但只有前 5 個座標軸有別名。您可以依據 MDX 查詢內座標軸的序數位置,或依據座標軸的別名 (如果該座標軸有別名的話),來參考座標軸。如同 SQL 查詢,FROM 子句為 MDX 查詢的資料來源命名。但是,MDX FROM 子句僅限於單一 Cube。使用 LookupCube 函數,就能按值逐一擷取其他 Cube 的資訊。
WHERE 子句描述 slicer 座標軸。如果 WHERE 子句內未提及階層,MicrosoftSQL ServerAnalysis Services 會假設查詢座標軸內未明確包含的任何階層會隱含包含在 slicer 座標軸內,而且該階層會依它的預設成員進行篩選。WHERE 子句可變更指定階層的篩選處理序,以及提供已併入資料的良好控制。
SELECT 陳述式範例
以下範例顯示使用 SELECT 陳述式的基本 MDX 查詢。此查詢會傳回一個結果集,其中包含 Southwest 銷售區域在 2002 與 2003 年的銷售與稅額。
SELECT
{ [Measures].[Sales Amount],
[Measures].[Tax Amount] } ON COLUMNS,
{ [Date].[Fiscal].[Fiscal Year].&[2002],
[Date].[Fiscal].[Fiscal Year].&[2003] } ON ROWS
FROM [Adventure Works]
WHERE ( [Sales Territory].[Southwest] )
在此範例中,查詢定義了下列結果集資訊:
SELECT 子句將查詢座標軸設為 Measures 維度的 Sales Amount 與 Tax Amount 成員,以及 Date 維度的 2002 與 2003 成員。
FROM 子句指出資料來源是 Adventure Works Cube。
WHERE 子句將 slicer 座標軸定義為 Sales Territory 維度的 Southwest 成員。
請注意,查詢範例也會使用 COLUMNS 與 ROWS 座標軸別名。而這些座標軸的序數位置已經被使用。以下範例顯示要如何撰寫 MDX 查詢,以使用每個座標軸的序數位置:
SELECT
{ [Measures].[Sales Amount],
[Measures].[Tax Amount] } ON 0,
{ [Date].[Fiscal].[Fiscal Year].&[2002],
[Date].[Fiscal].[Fiscal Year].&[2003] } ON 1
FROM [Adventure Works]
WHERE ( [Sales Territory].[Southwest] )
重要事項 |
---|
一般說來,集合是在較大的 Cube 內容中評估。然而,EXISTING Keyword (MDX) 會強制集合在目前內容中評估。 |