2016-06-23 87 views
0

我試圖向我的SSAS多維數據集添加一個新列。該列是日期字段,並鏈接到我的DimDate表(日期維度)。此日期代表項目完成日期。SSAS:日期爲空時如何處理日期維度

但是......並非所有的項目都有項目完成日期,因爲舊項目從未分配過此值。這是預料之中的。我們不想爲了讓SSAS正常工作而將虛假日期放入現場。

當處理多維數據集,它與崩潰:

Errors in the OLAP storage engine: The attribute key cannot be found when 
processing: Table: 'dbo_FactMyTable', Column: 'MyDate_id', Value: '0'. 
The attribute is 'Date Id'. 

我不能代表整個項目,因爲在大多數情況下,這確實是一個錯誤禁用「遺漏值」。如何禁用這個尺寸的缺失值?

或者是否有更好的方法來處理這樣的缺失日期/值?

回答

0

小修正 - 根據您的問題,您需要更改特殊處理錯誤處理度量組,而不是維度。您可以針對鏈接到某個度量值組的所有維度執行此操作,但不能對特定維度執行此操作
您可以使用_Table處理單個度量值組:'dbo_FactMyTable'首先使用必要的缺失值設置,然後 - 使用默認設置處理多維數據集的其餘部分。
這裏主要問題 - 如何處理其餘的立方體。你可能有一個複雜的系統,它根據數據更新知識動態地處理XMLA腳本(我用SSIS來完成);在這種情況下,你不會問這個問題。假設您的環境更簡單 - 您更新了多維數據集,並且希望完整地處理它。在這樣的情況下我會sudgest以下工作流程:

  1. 進程默認所有尺寸(會做初步處理或結構的變化)
  2. 進程更新所有尺寸
  3. 處理多維數據集與Unprocess - 無效它
  4. 處理您的特殊度量組
  5. 與處理缺省
  6. 處理多維數據集

這第一個行動將日期維度,然後 - 清除多維數據集中所有度量值組的處理狀態標誌。之後,您用特殊標誌處理您的度量組;這爲MG設置了處理狀態。然後在「多維數據集上的流程默認值」期間 - 只有未處理的MG將被覆蓋,這會將您的特殊MG從處理範圍中排除。

0

答案有點複雜,但這篇文章做了很好的解釋,包括SSAS挑戰我的屏幕截圖。

http://msbusinessintelligence.blogspot.com/2015/06/handling-null-dates-in-sql-server.html?m=1

+0

是做的最好的事情就是包括不明過去的日期,並在您datedimmension一個未知的未來的日期。將你的事實映射到這些關鍵字。在你的情況下,因爲項目完成在未來我會使用它。如果您使用日期作爲主鍵,則會使用1/1/1900和12/31/2999多次。雖然作爲主鍵的整數或VARCHAR()也可以注入一些邏輯。 – Matt