无法使ConvertToUnknown维度在SSAS OLAP多维数据集上运行

时间:2017-08-25 14:37:47

标签: ssas olap

我们有一个SSAS OLAP多维数据集,其中一些维度定义为 KeyNotFound - > IgnoreError和 KeyErrorAction - > ConvertToUnknown

其中一个维度(且只有一个)没有按预期工作,当在维度上找不到事实表值时,不考虑这些值。

换句话说,这个特定的维度就好像它被定义为 KeyErrorAction-> DiscardRecord

查看构建过程的详细日志,很明显行为必须是这个,因为选择看起来像(简化)

选择fields_from_fact_table,dim_key 来自fact_table,dim_table fact_table.value_key = dim_table.dim_key

像这样的连接只返回dim_table上的记录,这就是我们看不到不存在的值的原因。

但是我们看不出为什么会这样。为什么这个具体的维度而不是另一个?使用定义为DiscardRecord的维度的连接将是合乎逻辑的(是的,可以在我们的多维数据集上选择一些维度),但使用定义为ConvertToUnknown的维度只会使声明本身失败。

我们可以想象的唯一原因是这个特定的维度被用作另一个"引用的"的中间维度。维度(不确定英文名称是否正确,以及当fact_table链接到维度而这个链接到第二个维度时的情况)。

如果是这种情况,SSAS应该在您选择ConvertToUnknown方法时发出错误警告。

具有不同维度的不同fact_table也使用连接(此处没有引用的维度),因此似乎总是使用连接。

有关正在发生的事情的任何想法?我们如何才能使这个维度按预期工作?

1 个答案:

答案 0 :(得分:0)

哇!偶然发现了这个原因。此特定维度用作另一个维度的中间维度。在这种情况下,您不能有空值。