基于维度字段和度量字段的 MDX 过滤器未返回预期结果

MDX Filter based on a Dimension field and Measure field not returning expected result

我正在使用 SSAS 2019 并使用以下 MDX 查询来确定数据错误 - 即在这种情况下,给定分数 ([Measures].[Score]) 高于最大分数 ([PerformanceLevel]。 [MaxScore]) 是

SELECT NON EMPTY { 
    [Measures].[FactTestScoreCount]
} ON COLUMNS, 
NON EMPTY 
{(
    [TestEvent].[Key].[Key].Members 
)} ON ROWS 
FROM [TestScore]
WHERE 
(
    FILTER(
        [PerformanceLevel].[MaxScore].[MaxScore].Members,
        [PerformanceLevel].[MaxScore].CurrentMember.MemberValue < [Measures].[Score]
    )
)

...您会注意到它使用度量值与过滤器中的维度值进行比较

但是上面的查询不正确 return 所有行(它应该 return 零行,因为我们在当前数据库中没有高于最大分数的分数)

我尝试过使用 HAVING 并尝试将过滤器添加到 FROM 中,但是我得到了相同的结果。我还尝试在表达式的两边将数据类型转换为 int 但无济于事。我尝试暂时将条件更改为硬编码(数字)值,这似乎缩小了问题范围,因为 FILTER 中的 [Measures].[Score] - 即据我所知,将 Measure 放在 FILTER 中不会似乎没有按预期工作,但我不知道为什么

任何想法将不胜感激

我没有完全理解 Filter 函数的第一个参数表示什么 - 特别是粒度,否则它(取决于您的聚合类型将对度量求和)。此外,当 joining/displaying 行时,将过滤器向上移动到 select 允许更大的灵活性 - 所以我想出了下面的效果很好

SELECT NON EMPTY { 
  [Measures].[FactTestScoreCount]
} ON COLUMNS, 
Filter(
  NonEmpty(
    {(
      [TestEvent].[Key].[Key].members
    )}
  ), [Measures].[Score] > [PerformanceLevel.[MaxScore].CurrentMember.MemberValue 
) ON ROWS
FROM [TestScore]