Sql-Server

SSIS - SSAS:缺少數據處理

  • March 21, 2018

我在 SSDT 中有一個帶有 SSIS 和 SSAS 項目的解決方案,在數字和文本列中都缺少值。

在 SSIS 期間將這些列的所有缺失值轉換為 NULL 然後在 SSAS 中處理是一種好習慣嗎?

除了為每個可能的查詢定義計算度量等之外,是否有辦法在 SSAS OLAP 多維數據集中的每個查詢期間忽略所有 NULL 條目?

處理空數據或缺失數據的方式取決於缺失數據的位置。

如果您的度量列中的事實表中缺少數據,您可能應該將它們保留下來,以便在大多數報告應用程序發送null的查詢中不會考慮它們。NONEMPTYCROSSJOIN

如果您的事實表中的外鍵中缺少數據(即,當您的 ETL 流程在維度表中查找代理鍵但相關行在您的維度中不存在時)您需要根據您的使用者要求做出決定,但一般方法是將它們轉換為, blank‘或任何您的要求。unknown``invalid

如果您有空白屬性值,您可能應該將其保留為空白,以免混淆使用者。

SSAS 需要記住的一件事是,在 SSAS 中使用錯誤配置讓 SSAS 處理失去的維度鍵會對處理性能產生巨大影響,因此您可能應該在 ETL 過程中解決這個問題。維度成員對於(unknown)您的最終使用者來說也很令人困惑,因為他們不知道在報告中看到它意味著什麼,並且經常忘記將其包含在過濾器中(他們必須在每個維度上選擇未知成員,否則他們將失去數據)。

像往常一樣,Kimball 有一個處理維度模型中缺失數據的最佳實踐:設計技巧 #128 為 Null 選擇預設值

因此,在您的情況下,當涉及到事實表中的維度鍵時,我不會將它們轉換為NULL有意義的東西(只需在您的維度中插入一行,其中包含代理鍵和有意義的值,例如 -1,‘missing’)並將它們保留為 null 或將它們轉換為 null 實際上表度量,以便它們與聚合和NONEMPTY查詢很好地配合使用。

引用自:https://dba.stackexchange.com/questions/187574