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

SSAS 2005 資料完整性處理:未知成員、空值策略與錯誤配置深度解析

     編輯:關於SqlServer

在關聯式 OLTP 系統中,外鍵、CHECK 條件、NOT NULL 等約束確保資料完整性;但資料倉庫 ETL 階段常面臨來源系統髒資料、遲到維度、業務例外等情境。SQL Server 2005 Analysis Services (SSAS) 提供維度層面的彈性完整性機制——未知成員、空值處理、錯誤配置,讓 Cube 在載入階段優雅處理異常,而非中斷整批處理。

核心三要素關係圖

維度屬性 (Dimension Attribute)
    │
    ├─ UnknownMember 屬性 (None / Hidden / Visible)
    │       │
    │       ├─ 啟用時自動建立「Unknown Member」
    │       └─ UnknownMemberName 可自訂顯示名稱
    │
    ├─ NullProcessing 屬性 (5 種模式)
    │       └─ 決定遭遇 NULL 時的轉換/拒收/導向 Unknown 行為
    │
    └─ ErrorConfiguration 屬性
            └─ 控制錯誤列的記錄、繼續/中止、錯誤限制門檻

1. 未知成員

設定值行為適用場景
None (預設)不建立 Unknown Member,NULL 依 NullProcessing 處理來源資料已嚴格清洗、無遲到維度
Hidden建立 Unknown Member,但查詢結果隱藏(不顯示於 UI)需維持鍵完整性,但不想暴露給商用使用者
Visible建立並顯示 Unknown Member(預設名稱「Unknown」)業務需明確追蹤「未歸類」筆數、金額

關鍵限制:Unknown Member 僅對鍵屬性生效;非鍵屬性若需類似機制,需自行在 ETL 階段轉換。

2. 空值處理

屬性 NullProcessing 五種模式:

模式行為錯誤事件適用對象
ZeroOrBlankNULL → 0 (數值) / '' (字串)否度量值、非鍵屬性
Preserve保留 NULL,視為獨立值否需區分「無值」與「零/空白」的業務
Error視為違規,產生錯誤記錄是嚴格品管、鍵屬性
UnknownMember導向 Unknown Member,並產生錯誤是僅限鍵屬性
Default條件式:維度/Cube=ZeroOrBlank,採礦=UnknownMember視情況不想顯式設定時的預設

3. 錯誤配置

在維度或分割區層級設定 ErrorConfiguration,控制處理過程中遇到錯誤(含 NullProcessing=Error 產生者)的行為:

  • KeyErrorAction:ReportAndContinue (預設) / ReportAndStop
  • KeyErrorLimit:允許錯誤筆數上限,超過則中止
  • KeyErrorLogFile:錯誤詳細記錄檔路徑 (CSV/XML)
  • NullKeyNotAllowed:True 視 NULL 鍵為錯誤,False 導向 Unknown Member

實戰決策矩陣

業務情境建議設定組合說明
遲到維度:事實表到達時維度尚未載入 鍵屬性:UnknownMember=Visible, NullProcessing=UnknownMember
ErrorConfig:KeyErrorAction=ReportAndContinue, KeyErrorLimit=大數值
自動歸入 Unknown,後續維度更新時以 ProcessUpdate 修正
來源系統允許選填欄位 (非鍵) NullProcessing=Preserve 或 ZeroOrBlank 視業務是否需分辨「未填寫」與「填 0」
嚴格帳務 Cube,不容許任何鍵遺漏 NullProcessing=Error, KeyErrorAction=ReportAndStop 處理失敗即告警,強制上游修正
採礦結構訓練資料含 NULL Default (自動套用 UnknownMember) 演算法內部處理缺失值

常見誤區與最佳實務

  1. 誤以為 Unknown Member 可用於所有屬性 → 僅限鍵屬性;非鍵屬性請在 DSV/ETL 階段用 ISNULL/COALESCE 處理
  2. Hidden Unknown Member 導致報表總額對不上 → 隱藏不代表不參與彙總;若需排除,需在 MDX/DAX 中額外過濾
  3. 忽略 ErrorConfiguration 的 KeyErrorLimit → 大量髒資料會產生龐大錯誤日誌,塞滿磁碟;務必設定合理上限
  4. 混淆 NullProcessing=Error 與 UnknownMember → 前者單純報錯,後者同時導向 Unknown Member 並報錯,行為不同

升級至現代版本 (Tabular / Power BI) 的對應

  • Tabular 模型:無直接對應 Unknown Member;建議在 Power Query / DAX 計算欄位以 BLANK()、COALESCE、TREATAS 處理
  • Power BI:資料流程階段即完成清洗;視覺化層可用「顯示無資料項目」切換
  • Azure Analysis Services:相容 SSAS 多維模型,上述設定完整保留

總結

SSAS 2005 的完整性三部曲——未知成員接住遲到鍵、空值處理定義轉換規則、錯誤配置控制容忍度——構建了彈性的載入防護網。正確組合這三項設定,能在不犧牲處理效能的前提下,滿足從「嚴格帳務」到「探勘分析」的多元品質需求。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved