无法使 ConvertToUnknown 维度对 SSAS OLAP 多维数据集起作用

Cannot make a ConvertToUnknown dimension work on an SSAS OLAP cube

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

其中一个维度(并且只有一个)无法按预期工作,当在维度上找不到 table 值时,将不考虑这些值。

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

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

Select fields_from_fact_table,dim_key 来自 fact_table、dim_table 其中 fact_table.value_key=dim_table.dim_key

像这样的连接只有 returns 条记录出现在 dim_table 上,这就是我们看不到不存在的值的原因。

但是我们看不出发生这种情况的任何原因。为什么是这个特定维度而不是另一个维度?使用具有定义为 DiscardRecord 的维度的联接是合乎逻辑的(是的,可以在我们的多维数据集上选择一些维度)但是使用定义为 ConvertToUnknown 的维度只会破坏声明本身。

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

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

一个不同的 fact_table 具有不同的维度,也使用了连接(这里没有引用维度),所以似乎总是使用连接。

知道发生了什么事吗?我们怎样才能使这个维度按预期工作?

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