SSAS:如何在date为null时处理日期维度

时间:2016-06-23 17:51:10

标签: ssas

我试图在我的SSAS多维数据集中添加一个新列。该列是日期字段,并链接到我的DimDate表(日期维度)。该日期表示项目完成日期。

然而......并非所有项目项目完成日期,因为旧项目没有被赋予此值。这是预料之中的。我们不想把伪造的日期放到现场,只是为了让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'.

我无法禁用"缺少值"对于整个项目,因为在大多数情况下,这确实是一个错误。如何为维度禁用缺失值?

或者有更好的方法来处理这样的缺失日期/值吗?

2 个答案:

答案 0 :(得分:0)

小修正 - 根据您的问题,您需要更改特殊测量组的处理错误处理,而不是Dimension。您可以对链接到某个度量值组的所有维度执行此操作,但不能对特定维度执行此操作 您可以使用_Table处理单个度量值组:' dbo_FactMyTable' _首先使用必要的缺失值设置,然后 - 使用默认设置处理多维数据集的其余部分。
这里的主要问题 - 如何处理其余的多维数据集。您可能拥有复杂的系统,可根据数据更新知识动态创建处理XMLA脚本(我使用SSIS);在这种情况下,你不会问这个问题。假设您的环境更简单 - 您更新多维数据集并希望完全处理它。在这种情况下,我会推出以下工作流程:

  1. 处理默认所有尺寸(将进行初始处理或在结构更改中)
  2. 处理更新所有维度
  3. 使用Unprocess处理多维数据集 - 使其无效
  4. 处理您的特殊措施小组
  5. 具有流程默认值的流程多维数据集
  6. 这将首先更新Dimensions,然后 - 清除多维数据集中所有度量值组的处理状态标志。之后,您将使用特殊标志处理您的度量组;这个MG的设置处理状态。然后在Cube上的Process Default期间 - 仅覆盖未处理的MG,这将使您的特殊MG不在处理范围内。

答案 1 :(得分:0)

答案有点复杂,但是这篇文章很好地解释了它,包括像我这样受SSAS挑战的屏幕截图。

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