使用 MDX 分析及管理資料
MDX (多維表示式) 是一種強大的資料操控與查詢語言。
您可以使用 MDX 執行以下作業:
-
查詢及回報 Essbase 立方體中的資料和中繼資料
-
將資料插入 Essbase 立方體中
-
匯出 Essbase 立方體的資料
一個 MDX 查詢是單一個 MDX 敘述句,只會有一個適用於單一立方體的結果集。
一份 MDX 報表是單一個 MDX 查詢,儲存在立方體相關資訊環境中。您可以從 Smart View 和 Essbase Web 介面存取 MDX 報表。
MDX 命令檔是一個檔案,副檔名為 .mdx,您可以從工作上傳,然後從智慧型檢視中執行。MDX 命令檔中只能使用 MDX Insert 和 Export 敘述句。若要分析方格資料,請使用 MDX 報表,而不是 MDX 命令檔。
使用 MDX 報表分析資料
您可以使用 MDX 報表,在 Essbase Web 介面中儲存及轉譯查詢。您至少必須具備「資料庫管理者」權限,才能建立報表。
使用「臨機操作分析」頁籤定義版面配置,不見得是建立複雜報表的最有效率方式。如果您確實知道想要查詢的項目,那麼就可以使用 MDX 建立查詢,在方格中填入資料。
若要深入瞭解 MDX,請參閱 MDX 與 Writing MDX Queries 。
存取 MDX 報表
Essbase MDX 報表的使用方式取決於立方體存取權。
使用者至少必須具備應用程式層級的「資料庫存取」角色,才能呈現其他使用者建立的已儲存 MDX 報表。使用者在報表中見到的顯示資料,會因該使用者的篩選條件存取權而有所不同。
除了呈現已儲存的報表之外,「資料庫存取」使用者還可以多種格式匯出結果集:HTML、CSV、Excel 以及 JSON。
「資料庫存取」使用者也可以按一下報表名稱旁邊的動作功能表,然後選取檢視,來檢視定義報表的 MDX 查詢。
如果您至少具備「資料庫管理者」角色,就可以像「資料庫存取」使用者一樣使用報表。此外,還可以使用動作功能表編輯及刪除報表。
若您是服務管理員,那麼您還可以使用執行身分按鈕,模擬其他使用者並檢查他們的資料存取權。這對於測試指定給多位使用者的篩選條件而言相當實用。
MDX 報表範例
本節中的 MDX 範例示範使用 MDX 報表可執行的特殊分析類型。在「報表」頁籤的 Essbase Web 介面的「分析」檢視中儲存 MDX 報表。
以下是針對在 Sample Basic 立方體上運作所設計的範例。
中繼資料報表
下列範例只會傳回中繼資料 (成員名稱,但沒有資料):
SELECT
{[Product].Levels(1).Members}
ON ROWS,
{}
ON COLUMNS
傳回以下方格:

屬性報表
下列範例使用屬性維度的成員 (列在資料欄中):
SELECT
[Product].Children
ON ROWS,
[Ounces].Children
ON COLUMNS
WHERE {Sales}傳回以下方格:

已篩選報表
下列範例使用截塊器 (WHERE 子句) 限制對 Cola 的查詢。此外,使用 Filter 函數將查詢中層級 0 的市場限制為利潤為負值的市場。
SELECT
{ Profit }
ON COLUMNS,
Filter( [Market].levels(0).members, Profit < 0)
ON ROWS
WHERE {Cola}
傳回以下方格:

UDA 報表
下列範例顯示含有使用者定義屬性 (UDA) "Major Market" 之 Market 維度成員的 Product 資料。此外,也使用截塊器 (WHERE 子句) 限制讓查詢只包含 Sales 資料。
SELECT
[Product].Children
ON ROWS,
{Intersect(UDA([Market], "Major Market"), [Market].Children)}
ON COLUMNS
WHERE {Sales}
傳回以下方格:

執行 MDX 命令檔
若您需要執行插入或匯出資料作業,請使用 MDX 命令檔。
若是要分析方格資料,請使用 MDX 報表。請參閱 Analyze Data with MDX Reports 。
若要使用 MDX 命令檔,請選取一個工作流程:
撰寫、上傳及執行 MDX 命令檔
您可以使用此工作流程在文字編輯器中撰寫 MDX 命令檔,然後將命令檔上傳至 Essbase。
-
在文字編輯器中編寫 MDX 腳本,然後使用
.mdx副檔名儲存。 -
將 MDX 命令檔上傳至 Essbase Web 介面中檔案底下的應用程式或立方體目錄。
-
使用 Essbase 功能區上的計算,從工作或從 Smart View 執行 MDX 命令檔。
在命令檔編輯器中撰寫 MDX 命令檔並加以執行
此工作流程可在立方體的命令檔編輯器中撰寫 MDX 命令檔,然後從工作執行這些命令檔。
-
在首頁上,開啟應用程式並開啟資料庫 (立方體)。
-
按一下命令檔,然後按一下 MDX 命令檔。
-
按一下建立,輸入命令檔的名稱,然後按一下確定。
-
撰寫 MDX 命令檔。系統提供成員樹狀結構和函數清單來協助您撰寫命令檔。
-
驗證並儲存命令檔,然後關閉命令檔編輯器。
-
從職務執行 MDX 指令碼 (請參閱執行 MDX),或者如果使用智慧型檢視,請在 Essbase 功能區上使用計算。
在立方體設計工具中建立並執行 MDX 命令檔
使用此工作流程以應用程式工作簿建立 MDX 命令檔,然後從工作執行這些命令檔。
- 在應用程式工作簿中,建立 MDX 工作表。請參閱使用立方體設計工具中的 MDX 工作表。
- 在檔案名稱欄位中新增檔案名稱。
- 在執行 MDX 欄位中,指出是否要在建立立方體時執行 MDX。有效的項目為是與否。
- 在命令檔一行底下新增 MDX 命令檔。
- 儲存應用程式工作簿。
- 建置立方體。請參閱在立方結構設計工具中建立一個應用程式和立方結構。
- 從工作執行 MDX 程序檔,或者如果使用智慧型檢視,請在 Essbase 功能區上使用計算。
MDX 命令檔的準則
使用 MDX 命令檔執行插入或匯出資料作業。對於 Essbase Web 介面中的方格分析,請使用 MDX 報表而非 MDX 指令碼。MDX 指令碼可選擇性包含執行時期替代變數,您可以從 Smart View 執行這些變數。
若要在 Smart View 內使用,具有執行時期替代變數的 MDX 命令檔必須使用 SET RUNTIMESUBVARS 計算命令內的 XML 語法,包括 <RTSV_HINT>。
若要設定執行時期替代變數,使其僅計算智慧型檢視中可見的資料片段,請將執行時期替代變數的值設為 POV ,並將資料類型設為成員。
若從 Essbase Web 介面執行,MDX 命令檔可以使用替代變數,但程式實際執行替代變數除外。若要在 MDX 命令檔中使用程式實際執行替代變數,必須從 Smart View 使用 Essbase 功能區的計算來執行命令檔。
MDX 命令檔範例
下列是您可以在「基本範例」立方體上執行的「MDX 插入與匯出」命令檔範例,可從 Essbase Web 介面中的「工作」或從計算作業智慧型檢視執行。
MDX 插入
您可以儲存此 .mdx 指令碼,然後從工作或者從智慧型檢視中的計算對話方塊執行。
INSERT "([Measures].[Payroll])" TO "([Measures].[Revised_Payroll])"
INTO [Sample].[Basic]
FROM (
SELECT
{[Measures].[Payroll]} ON COLUMNS,
{Crossjoin
(Crossjoin(Descendants([Year]),
Crossjoin(Descendants([Scenario]),
Descendants([Product]))),
Descendants([Market]))} ON ROWS
FROM [Sample].[Basic]
);以上範例假設先前已經將 Revised_Payroll 計量加到 Sample Basic。
MDX 匯出
您可以儲存此 .mdx 指令碼,然後從工作或者從智慧型檢視中的計算對話方塊執行。
EXPORT INTO FILE "sample01" OVERWRITE
SELECT
{[Mar],[Apr]}
ON COLUMNS,
Crossjoin({[New York]},
Crossjoin({[Actual],[Budget]},
{[Opening Inventory],[Ending Inventory]}))
ON ROWS
FROM [Sample].[Basic]
WHERE ([100-10])執行命令檔之後,下列匯出檔案 sample01.txt 會儲存在檔案目錄的立方體目錄中:
Market,Scenario,Measures,Mar,Apr
New York,Actual,Opening Inventory,2041,2108
New York,Actual,Ending Inventory,2108,2250
New York,Budget,Opening Inventory,1980,2040
New York,Budget,Ending Inventory,2040,2170使用程式實際執行替代變數的 MDX 匯出
您可以儲存此 .mdx 指令碼,然後從智慧型檢視的計算對話方塊執行該指令碼。
SET RUNTIMESUBVARS
{
States = "Massachusetts"<RTSV_HINT><svLaunch>
<description>US States</description>
<type>member</type>
<allowMissing>false</allowMissing>
<dimension>Market</dimension>
<choice>multiple</choice>
</svLaunch></RTSV_HINT>;
};
EXPORT INTO FILE "sample002" OVERWRITE
SELECT
{[Mar],[Apr]}
ON COLUMNS,
Crossjoin({&States}, Crossjoin({[Actual],[Budget]},
{[Opening Inventory],[Ending Inventory]}))
ON ROWS
FROM [Sample].[Basic]
WHERE ([100-10])
執行命令檔之後,下列匯出檔案 sample002.txt 會儲存在檔案目錄的立方體目錄中:
Market,Scenario,Measures,Mar,Apr
Massachusetts,Actual,Opening Inventory,-54,-348
Massachusetts,Actual,Ending Inventory,-348,-663
Massachusetts,Budget,Opening Inventory,-160,-520
Massachusetts,Budget,Ending Inventory,-520,-910