使用 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 報表執行的特殊類型分析,這類分析通常難以在「臨機操作分析」檢視中完成。

以下是針對在「基本範例」立方體上運作所設計的範例。

中繼資料報表

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

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 這兩個主要市場。