使用 MDX 分析及管理資料

MDX (多維表示式) 是一種強大的資料操控與查詢語言。

您可以使用 MDX 執行以下作業:

  • 查詢及回報 Essbase 立方體中的資料和中繼資料

  • 將資料插入 Essbase 立方體中

  • 匯出 Essbase 立方體的資料

一個 MDX 查詢是單一個 MDX 敘述句,只會有一個適用於單一立方體的結果集。

一份 MDX 報表是單一個 MDX 查詢,儲存在立方體相關資訊環境中。您可以從 Smart ViewEssbase Web 介面存取 MDX 報表。

MDX 命令檔是一個副檔名為 .mdx 的檔案,您可以上傳此類檔案,然後從「工作」或在 Smart View 中執行。MDX 命令檔中只能使用 MDX Insert 和 Export 敘述句。若要分析方格資料,請使用 MDX 報表,而不是 MDX 命令檔。

主題:

使用 MDX 報表分析資料

您可以在 Essbase Web 介面,使用 MDX 報表儲存及呈現查詢。您至少必須具備「資料庫管理者」權限,才能建立報表。

使用「臨機操作分析」頁籤定義版面配置,不見得是建立複雜報表的最有效率方式。如果您確實知道想要查詢的項目,那麼就可以使用 MDX 建立查詢,在方格中填入資料。

建立 MDX 報表:
  1. 以「資料庫管理者」角色或更高權限的角色登入 Essbase Web 介面。
  2. 在「應用程式」頁面中,展開應用程式並選取一個立方體。
  3. 按一下立方體名稱右邊的「動作」功能表,然後選取分析資料
  4. 在「分析」檢視中,選取報表頁籤,然後按一下建立
  5. 輸入報表的名稱和描述 (選擇性)。
  6. 在「查詢」欄位中,輸入與目前立方體相關的 MDX 查詢。例如:
    SELECT
      {([West].children)}
    ON COLUMNS,
      {([Diet].children)}
    ON ROWS
    

    查詢必須同時包含資料列和資料欄軸設定。亦即,即使其中一個軸為空集合 {},查詢語法還是必須包括 ON COLUMNS 和 ON ROWS 設定。

    由於「分析資料」的相關資訊環境是作用中的立方體,因此建議您省略 MDX 報表中的選擇性立方體設定 (FROM 子句)。省略 FROM 子句會讓作業更具彈性 — 立方體若是複製的立方體或經過重新命名,報表將會在新的立方體中作業。

    MDX 報表雖然支援替代變數,但並不支援程式實際執行替代變數。若要使用程式實際執行替代變數,請將 MDX 查詢另存為命令檔,然後使用 Essbase 功能區中的計算,從 Smart View 執行該命令檔。

  7. 按一下驗證來檢查 MDX 語法,然後按一下儲存
  8. 從左邊的「報表」面板中選取已儲存的報表以呈現方格。

若要進一步瞭解 MDX,請參閱 MDXWriting MDX Queries

存取 MDX 報表

報表的使用方式依立方體存取權而定。

使用者至少必須具備應用程式層級的「資料庫存取」角色,才能呈現其他使用者建立的已儲存 MDX 報表。使用者在報表中見到的顯示資料,會因該使用者的篩選條件存取權而有所不同。

除了呈現已儲存的報表之外,「資料庫存取」使用者還可以多種格式匯出結果集:HTML、CSV、Excel 以及 JSON。

「資料庫存取」使用者也可以按報表名稱旁的動作功能表並選取檢視,以檢視定義報表的 MDX 查詢。

如果您至少具備「資料庫管理者」角色,就可以像「資料庫存取」使用者一樣使用報表。此外,還可以使用動作功能表編輯及刪除報表。

若您是服務管理員,那麼您還可以使用執行身分按鈕,模擬其他使用者並檢查他們的資料存取權。這對於測試指定給多位使用者的篩選條件而言相當實用。

MDX 報表範例

本節中的 MDX 範例展示可使用 MDX 報表執行的特殊類型分析,這類分析通常難以在「臨機操作分析」檢視中完成。

以下是針對在 Sample Basic 立方體上運作所設計的範例。

中繼資料報表

下列範例只會傳回中繼資料 (成員名稱,但沒有資料):

SELECT 
  {[Product].Levels(1).Members} 
ON ROWS, 
  {} 
ON COLUMNS

傳回以下方格:

報表輸出顯示 100、200、300、400 以及 Diet 等 Product 成員

屬性報表

下列範例使用屬性維度的成員 (列在資料欄中):

SELECT 
 [Product].Children 
ON ROWS, 
 [Ounces].Children 
ON COLUMNS 
WHERE {Sales}

傳回以下方格:

報表輸出列顯示 100、200、300、400 以及 Diet 等 Product 成員。資料欄中顯示以下屬性成員:Ounces_32、Ounces_20、Ounces_16 以及 Ounces_12

已篩選報表

下列範例使用截塊器 (WHERE 子句) 限制對 Cola 的查詢。此外,使用 Filter 函數將查詢中層級 0 的市場限制為利潤為負值的市場。

SELECT
  { Profit } 
ON COLUMNS,
  Filter( [Market].levels(0).members, Profit < 0) 
ON ROWS
WHERE {Cola}

傳回以下方格:

報表輸出列顯示 Oregon、Utah、Nevada、Oklahoma、Louisiana、Ohio、Wisconsin、Missouri 以及 Iowa 等 Market 成員。資料欄則顯示 Profit。資料值全都為負數。

UDA 報表

下列範例顯示含有使用者定義屬性 (UDA) "Major Market" 之 Market 維度成員的 Product 資料。此外,也使用截塊器 (WHERE 子句) 限制讓查詢只包含 Sales 資料。

SELECT 
  [Product].Children 
ON ROWS, 
  {Intersect(UDA([Market], "Major Market"), [Market].Children)} 
ON COLUMNS 
WHERE {Sales}

傳回以下方格:

報表輸出列顯示 100、200、300、400 以及 Diet 等 Product 成員。資料欄則顯示 East 和 Central 這兩個主要市場。

使用 MDX 插入及匯出資料

MDX 除了適用於方格型分析之外,還可以用來複製及更新多維資料的子集。

您可以使用 MDX Insert 子句,以 MDX 定義之計算 (非實體) 成員的資料更新立方體。

您可以使用 MDX Export 子句,儲存查詢結果並將其匯出為資料子集,供稍後檢視或匯入使用。

您可以已儲存的 MDX 命令檔形式,執行插入和匯出 MDX 敘述句。

若要進一步瞭解 MDX 插入和匯出,請參閱 MDX 插入設定MDX 匯出指定

執行 MDX 命令檔

若您需要執行插入或匯出資料作業,請使用 MDX 命令檔。

若是要分析方格資料,請使用 MDX 報表。請參閱使用 MDX 報表分析資料

若要使用 MDX 命令檔,請選取一個工作流程:

撰寫、上傳及執行 MDX 命令檔

您可以使用此工作流程在文字編輯器中撰寫 MDX 命令檔,然後將命令檔上傳至 Essbase

  1. 在文字編輯器中撰寫 MDX 命令檔,然後儲存為 .mdx 副檔名的檔案。

  2. 將 MDX 命令檔上傳至 Essbase Web 介面中檔案底下的應用程式或立方體目錄。

  3. 工作Smart View,使用 Essbase 功能區的計算,執行 MDX 命令檔。

在命令檔編輯器中撰寫 MDX 命令檔並加以執行

此工作流程可在立方體的命令檔編輯器中撰寫 MDX 命令檔,然後從工作執行這些命令檔。

  1. 在「應用程式」頁面中,展開應用程式和立方體。

  2. 從立方體的「動作」功能表中,按一下檢查

  3. 依序按一下命令檔MDX 命令檔

  4. 按一下 + 號以開啟命令檔編輯器。

  5. 撰寫 MDX 命令檔。系統提供成員樹狀結構和函數清單來協助您撰寫命令檔。

  6. 驗證並儲存命令檔,然後關閉命令檔編輯器。

  7. 工作執行 MDX 命令檔 (請參閱執行 MDX);或者若使用 Smart View,則使用 Essbase 功能區中的計算來執行 MDX 命令檔。

在立方體設計工具中建立並執行 MDX 命令檔

使用此工作流程以應用程式工作簿建立 MDX 命令檔,然後從工作執行這些命令檔。

  1. 在應用程式工作簿中,建立 MDX 工作表。請參閱在立方體設計工具中處理 MDX 工作表
  2. 檔案名稱欄位中新增檔案名稱。
  3. 執行 MDX 欄位中,指出是否要在建立立方體時執行 MDX。有效的輸入為
  4. 命令檔一行底下新增 MDX 命令檔。
  5. 儲存應用程式工作簿。
  6. 建置立方體。請參閱在立方體設計工具中建立應用程式和立方體
  7. 工作執行 MDX 命令檔;或者若使用 Smart View,請透過 Essbase 功能區的計算來執行 MDX 命令檔。

MDX 命令檔的準則

以下是使用 MDX 命令檔的準則:

  • 使用 MDX 命令檔執行插入或匯出資料作業。

  • 若要進行方格分析,請使用 MDX 報表,而不是 MDX 命令檔。

  • 可以選擇在 MDX 命令檔包含程式實際執行替代變數。

    • MDX 命令檔若含有程式實際執行替代變數,必須在 SET RUNTIMESUBVARS 計算命令內使用 XML 語法 (包括 <RTSV_HINT>),才能在 Smart View 中使用。

    • 若要設成讓程式實際執行替代變數只計算 Smart View 中可見的資料截塊,請將程式實際執行替代變數的值設為 POV,並將資料類型設為成員

    • 若從 Essbase Web 介面執行,MDX 命令檔可以使用替代變數,但程式實際執行替代變數除外。若要在 MDX 命令檔中使用程式實際執行替代變數,必須從 Smart View 使用 Essbase 功能區的計算來執行命令檔。

使用替代變數

MDX 命令檔範例

以下是可以從「工作」或 Smart View,對 Sample Basic 立方體執行的 MDX 命令檔範例。

MDX 插入

您可以儲存此 .mdx 命令檔,然後從工作或從 Smart View計算對話方塊執行。

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 命令檔,然後從工作或從 Smart View計算對話方塊執行。

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 命令檔,然後從 Smart View計算對話方塊執行。

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