使用 Cube 及 Subcube 運算式
您會以多維度運算式 (MDX) 陳述式使用 Cube 及 Subcube 運算式,以定義、操作或擷取 Cube 或 Subcube 的資料。
Cube 運算式
Cube 運算式不是包含 Cube 識別碼就是包含 CURRENTCUBE 關鍵字,因此只能是簡單運算式。許多 MDX 陳述式會使用 CURRENTCUBE 關鍵字,以識別目前的 Cube 內容,而不是要求 Cube 識別碼。
cube 識別碼會以 Cube_Name 形式出現在 MDX 陳述式的 BNF 標記法描述中。
Cube 運算式可能會出現在幾個地方。在 MDX SELECT 陳述式中,它們會指定擷取資料的目標 cube。在下列範例查詢中,運算式 [Adventure Works] 會參考該名稱的 cube:
SELECT [Measures].[Internet Sales Amount] ON COLUMNS
FROM [Adventure Works]
在 CREATE MEMBER 陳述式中,Cube 運算式會指定您所建立的導出成員會出現在哪一個 Cube 上。在下列範例中,此陳述式會在 Adventure Works Cube 的 Measures 維度上建立導出量值:
CREATE MEMBER [Adventure Works].[Measures].[Test] AS 1
當您在 MDX 指令碼內使用 CREATE MEMBER 陳述式時,可以使用 CURRENTCUBE 關鍵字取代 Cube 的名稱,因為要建立導出成員的 Cube 必須是 MDX 指令碼所屬的相同 Cube,如以下範例所示:
CREATE MEMBER CURRENTCUBE.[Measures].[Test] AS 1;
這樣做會使得從一個 Cube 將導出成員定義複製及貼到另一個 Cube 的作業變得更簡單,因為 Cube 的名稱不再是硬式編碼。
SubCube 運算式
Subcube 運算式包含 Subcube 識別碼或是傳回 Subcube 的 MDX 陳述式。如果 Subcube 運算式包含 Subcube 識別碼,它將會是簡單運算式。如果它包含可傳回 Subcube 的 MDX 陳述式,它會是複雜陳述式。例如,MDX SELECT 陳述式會傳回一個 Subcube,而且可以用於容許 Subcube 運算式之處,如下列範例所示:
SELECT [Measures].MEMBERS ON COLUMNS,
[Date].[Calendar Year].MEMBERS ON ROWS
FROM
(SELECT [Measures].[Internet Sales Amount] ON COLUMNS,
[Date].[Calendar Year].&[2004] ON ROWS
FROM [Adventure Works])
在 FROM 子句中這樣使用 SELECT 陳述式也稱為子選擇。
遇到 Subcube 運算式的另一個常見案例就是在 MDX 指令碼中進行有設定範圍的指派。在以下範例中,SCOPE 陳述式是用來將指派限制為由 [Measures].[Internet Sales Amount] 組成的 Subcube:
SCOPE([Measures].[Internet Sales Amount]);
This=1;
END SCOPE;
Subcube 識別碼會以 Subcube_Name 的形式出現在 MDX 陳述式的標記法描述內。