數據庫很多,MDX數據庫只有一個

數據庫很多,MDX數據庫只有一個

MDX是”MultiDimensional eXpression”的縮寫,這是一種類似於SQL的數據庫查詢語言。這種查詢語言專門用於OLAP (Online analytical processing,在線分析處理)數據,這些數據是存儲於OLAP Cube(在線分析處理數據塊)中。


01 MDX的歷史

MDX由微軟於1997年作為ODBO規範的一部分最先提出。Microsoft Analysis Services(微軟分析服務)隨後基於這個規範發佈了“Microsoft OLAP Services 7.0”。微軟又於1999年正式發佈了該規範。

MDX僅僅只是一個微軟的規範,並不是一個開放的標準。但是這個規範正在被越來越多的OLAP服務提供商所採用。這正是MDX生命力頑強的體現。


02 MDX數據庫

MDX標準幾乎被所有的大型數據庫軟件提供商所採用。微軟有SSAS(Microsoft SQL Server Analysis Services),甲骨文有Essbase,SAP有SAP BW,IBM有TM1,除此之外還有各種各樣的OLAP服務提供商的商用軟件支持該標準。詳情見表格:

數據庫很多,MDX數據庫只有一個


03 MDX獲取數據

MDX規範裡定義了兩種獲取數據的方式:XMLA和OLE DB for OLAP。

3.1 XMLA

XMLA是“XML for Analysis”的縮寫。這是一個企業級標準,用於獲取分析系統(例如OLAP)的數據。

XMLA支持兩種SOAP方法:Execute和Discover。其中:

  • Execute用於執行MDX語句,返回的結果是多維數據的結構和對應的格式化結果
  • Discover用於獲取OLAP數據塊的結構數據,例如:目錄(Catalog),數據塊(Cube),維度(Dimension),屬性(Properties)等。

在XMLA標準中,MDX語句被放在<statement>標籤中,例如:/<statement>

<envelope>
<body>
<execute>
<command>
<statement>SELECT Measures.MEMBERS ON COLUMNS FROM Sales/<statement>
/<command>
<properties>
<propertylist>
<datasourceinfo>
<catalog>FoodMart/<catalog>
<format>Multidimensional/<format>
<axisformat>TupleFormat/<axisformat>

/<propertylist>
/<properties>
/<execute>
/<body>
/<envelope>

3.2 OLE DB for OLAP

OLE DB for OLAP 是“Object Linking and Embedding Database for Online Analytical Processing abbreviated ODBO”的縮寫。這是由微軟發佈的、用於處理多維數據的企業級標準。其中ODBO是一個在Windows平臺用於客戶端和OLAP服務器交互的標準API,而且ODBO拓展了OLE DB訪問OLAP數據能力。

如果用戶需要通過OLE DB for OLAP訪問支持MDX的數據庫,那麼MDX的數據庫必須提供Windows版本的客戶端API庫,同時用戶必須有一定的編程基礎才能正確地拿到數據。


04 MDX語句

一條基本的MDX語句樣例如下:

with member [Measures].[DoubleAmount] as '[Measures].[Amount] * 2'
select [Account].[Accounts].Levels(1).AllMembers on columns,
{[Measures].[Amount], [Measures].[DoubleAmount]} on rows
from [Finance]
where ([Date].[Calendar Year].&[2001])
  • “with” 語句部分;樣例中的第1行。該語句用於獲取數據前的預處理。在預處理的過程中,我們可以定義各種各樣的計算,這些計算包括可命名集合和計算成員。在本樣例中,我們定義的是計算成員。

    通過分析這個MDX語句樣例,我們可以看出MDX語句有以下幾個部分:
  • “select” 語句部分;樣例中的第2,3行。該語句用於選擇可獲取的數據。
  • “from” 語句部分;樣例中的第4行。該語句用來定義我們從哪個數據塊獲取數據。
  • “where” 語句部分;樣例中的第5行。該語句用來切割數據塊,併合計數據。

在這4個部分中,我們都有很大的自由度,可以根據自己的需求寫出很複雜的MDX語句以獲得相應的數據。


05 可以訪問MDX數據的客戶端

5.1 使用Firefox獲取MDX數據

對於支持XMLA標準的MDX數據庫,我們可以使用Firefox的開發者工具來訪問。具體的步驟如下:

  • 打開Firefox瀏覽器
  • 打開開發者工具:
  • 訪問XMLA對應的網址,類似於:http://OLAP-Datasource-Address/OLAP/MSMDPUMP.DLL .在開發者工具中會有一條訪問失敗的記錄:
  • 右鍵點擊失敗記錄,選擇“Edit and Resend”按鈕:
  • 修改“New Request”的方法為“POST”,同時把基於XMLA規範創建的請求放到“Request Body”裡面:
  • 點擊“Send”即可

在標準的XMLA規範裡,我們需要把用於登錄驗證的信息放到Request Header裡面,而且驗證信息需要加密。

5.2 使用Excel獲取MDX數據

另外我們還可以通過Excel來訪問大部分的MDX數據庫。具體的步驟如下

  • 打開新版本的Excel,小編使用的是Excel 2017
  • 換到Data那一頁,點擊“Get Data”下拉框
  • 如果是MSAS,就選擇”From Database”裡面的“From Analysis Services”選項
  • 填寫對應的登錄信息,然後點擊下一步
  • 選擇對應的數據塊或者表格,然後點擊結束
  • 在Excel的右邊區域會出現一個可編輯的對話框,我們可以在對話框裡進行操作
  • 結果會顯示在Excel的空白區域

Excel相對來說,操作起來比較簡單,使用也比較方便;但是Excel在篩選方面限制比較大,不能自由篩選數據。


06 微策略對MDX數據庫的支持

微策略從03年就開始支持MDX數據庫,到MicroStrategy 2019我們已經直接支持了以下MDX數據庫:

數據庫很多,MDX數據庫只有一個

基於這些MDX數據庫,微策略提供了靈活的數據探索方式和高度自由化的操作選擇。

在微策略的產品中,我們只需要簡單三步,就能創建出高可讀性的報表。

  • 創建MDX數據庫連接:
  • 導入MDX數據塊:
  • 創建可視化報表:

我們一直致力於支持更多的MDX數據庫,並提供可靠、快速的服務。更多信息請諮詢微策略MDX團隊。


07 總結

本文章簡要講述了MDX的歷史背景、MDX語句的介紹、MDX數據獲取方式以及微策略對於MDX數據庫支持。微策略對於MDX數據庫的支持有悠久的歷史,我們相信微策略能夠給客戶提供關於MDX專業全面的解決方案。

  • https://en.wikipedia.org/wiki/MultiDimensional_eXpression
  • https://en.wikipedia.org/wiki/XML_for_Analysis
  • https://en.wikipedia.org/wiki/OLE_DB_for_OLAP
  • https://en.wikipedia.org/wiki/Comparison_of_OLAP_servers
  • https://docs.microsoft.com/en-us/analysis-services/multidimensional-models/mdx/key-concepts-in-mdx-analysis-services


我們會每週推送商業智能、數據分析資訊、技術乾貨和程序員日常生活,歡迎關注我們的頭條&知乎公眾號“微策略中國”或微信公眾號“微策略 商業智能"。


分享到:


相關文章: