首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

資料倉庫 MDX 查詢實戰:基本查詢與跨層級查詢範例解析

     編輯:Oracle 資料庫基礎

MDX 基礎:多維度資料集查詢語言

MDX (Multidimensional Expressions) 是 OLAP 立方體查詢的標準語言,類比 SQL 之於關聯資料庫。本文以電信基站維度模型為例,示範兩類常見查詢模式。

場景模型:基站控制器 → 基站 → 小區 三層級

  • 維度:[基站控制器_基站_小區]
  • 層級:所有 → 基站控制器 → 基站 → 小區
  • 屬性:基站載頻數、基站設備型號
  • 量測:自訂計算成員

查詢一:基本查詢 - 取得特定基站的屬性值

WITH 
MEMBER [Measures].[基站站名] AS 
    '[基站控制器_基站_小區].CurrentMember.Properties("基站載頻數")'
MEMBER [Measures].[基站] AS 
    '[基站控制器_基站_小區].CurrentMember.Properties("基站設備型號")'
SELECT 
    { [Measures].[基站], [Measures].[基站站名] } ON COLUMNS,
    { [基站控制器_基站_小區].[所有 基站控制器_基站_小區].[成都BSC83].[BSS83:BSS83:SITE-1:] } ON ROWS
FROM Radio_cell

關鍵點解析

  • WITH MEMBER:定義查詢範圍內的計算量測,不持久化到立方體
  • CurrentMember.Properties(...):存取維度成員的內建/自訂屬性
  • ON COLUMNS / ON ROWS:定義軸向,MDX 支援最多 128 軸(實務常用 2 軸)
  • ROW 軸指定完整路徑:[All].[成都BSC83].[BSS83:BSS83:SITE-1:] 精確定位單一基站節點

查詢二:跨層級查詢 - 獲取所有基站層級成員的屬性

WITH 
MEMBER [Measures].[基站載頻數] AS 
    '[基站控制器_基站_小區].CurrentMember.Properties("基站載頻數")'
MEMBER [Measures].[基站設備型號] AS 
    '[基站控制器_基站_小區].CurrentMember.Properties("基站設備型號")'
SELECT 
    { [Measures].[基站設備型號], [Measures].[基站載頻數] } ON COLUMNS,
    EXCEPT(
        GENERATE(
            [基站控制器_基站_小區].Members,
            {
                DESCENDANTS(
                    [基站控制器_基站_小區].CurrentMember,
                    [基站控制器_基站_小區].[基站],
                    SELF_AND_BEFORE
                )
            }
        ),
        { [基站控制器_基站_小區].[基站控制器].Members }
    ) ON ROWS
FROM Radio_cell

進階函數解析

查詢邏輯流程

  1. [基站控制器_基站_小區].Members 取得所有層級成員(含 All、控制器、基站、小區)
  2. 對每個成員,用 DESCENDANTS(..., [基站], SELF_AND_BEFORE) 取得其下的基站層級節點
  3. GENERATE 將所有基站節點聯集
  4. EXCEPT(..., [基站控制器].Members) 剔除控制器層級節點(避免重複/雜訊)
  5. 最終 ROW 軸包含:所有基站節點(不含控制器、小區、All)

實務應用提示

  • 效能考量:GENERATE + DESCENDANTS 在大型維度可能較慢,可考慮預先建立 Named Set 或透過 Scope 陳述式優化
  • Properties 存取:屬性值儲存在維度表,頻繁存取建議提升為量測或計算成員
  • 跨層級報表:此模式常用於「列出所有基站的設備型號與載頻」類管理報表
  • 安全性:配合角色安全性(Cell Security)可限制使用者僅見特定控制器下的基站

延伸學習資源

  • Microsoft MDX 參考文件 / ICAS 2004 MDX 教程
  • Mondrian / SSAS / Oracle OLAP 實作差異比較
  • 進階主題:SCOPE、KPI、ACTION、MDX Script 部署
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
函數作用
GENERATE(set, set_expression)對第一個集合的每個成員評估第二個集合運算式,並聯集結果
DESCENDANTS(member, level, flags)取得指定成員在目標層級的後代。SELF_AND_BEFORE 含自身及同層之前輩
EXCEPT(set1, set2)集合差集:移除 set2 中出現的成員