基本 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 子句內未提及階層,Microsoft SQL Server 2005 Analysis Services (SSAS) 會假設查詢座標軸內未明確包含的任何階層,會隱含包含在 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) 會強制集合在目前內容中評估。 |