在 MDX 语句中使用 .CHILDREN 和 .ALLMEMBERS 时的结果差异

Sou*_*avA 3 sql sql-server ssas mdx ssas-2012

我有两个几乎相似的 MDX 查询,一个是我使用 .CHILDREN,另一个是 .ALLMEMBERS。第一个不返回行,第二个返回两行。请帮助我理解为什么!

查询 1

select 
[Measures].[Claim As Of - Count] on 0,
[Accident Date].[Year].allmembers on 1
from [AW Cube]
where [Accident Date].[Year-Quarter-Month-Date].[Year].&[2010]
Run Code Online (Sandbox Code Playgroud)

---2行

查询 2

select 
[Measures].[Claim As Of - Count] on 0,
[Accident Date].[Year].children on 1
from [AW Cube]
where [Accident Date].[Year-Quarter-Month-Date].[Year].&[2010]
Run Code Online (Sandbox Code Playgroud)

--没有行

---- 索赔截至 - 计数 -- 全部 637,350 --2010 637,350

总而言之,AccidentDate 是我的 Cube [AW Cube] 中的维度之一。Year 是自然层次结构,而 [Year-Quarter-Month-Date] 是用户定义的层次结构。[年-季-月-日]按以下方式创建:年-->月-->季度-->日期。所以'年'可以通过做[事故日期].[年-季度-月-日].[年].成员和[事故日期].[年].成员来获得。

Sou*_*avA 5

嗯,我自己得到了答案。实际上,每个都.CHILDREN在内部转换为.CURRENTMEMBER.CHILDRENNow,[Accident Date].[Year].&[2010]是用户定义层次结构上切片器的相应值。在这里,[Accident Date].[Year].CHILDREN实际上被翻译成[Accident Date].[Year].&[2010].CHILDREN基本上是一个空集。因此,瞧!空结果集!