Ssas 多维数据集的Mdx查询正在为“返回不同的结果”;“与成员一起”;如果成员标识符名称不同

Ssas 多维数据集的Mdx查询正在为“返回不同的结果”;“与成员一起”;如果成员标识符名称不同,ssas,mdx,cube,Ssas,Mdx,Cube,我使用“With Member”启动mdxquery以获取不同单元格的不同元组集组合。我的需求是在单个mdx查询中查询具有多维度的元组。 据我所知,成员标识符只是一个别名,它不应该影响查询结果。但是,如果我使用单独的成员标识符,它将为同一查询返回不同的结果集。过滤器所在的切片器也是相同的。 我的要求是我有一组元组,每个元组都有不同的成员维度/属性组合,我只想启动一个查询来获取每个元组集的数据。所以我使用“With Member”选项,它允许命名具有不同维度的成员集 查询1、查询2、查询3几乎相同

我使用“With Member”启动mdxquery以获取不同单元格的不同元组集组合。我的需求是在单个mdx查询中查询具有多维度的元组。 据我所知,成员标识符只是一个别名,它不应该影响查询结果。但是,如果我使用单独的成员标识符,它将为同一查询返回不同的结果集。过滤器所在的切片器也是相同的。
我的要求是我有一组元组,每个元组都有不同的成员维度/属性组合,我只想启动一个查询来获取每个元组集的数据。所以我使用“With Member”选项,它允许命名具有不同维度的成员集

查询1、查询2、查询3几乎相同,只是它们使用的成员名称不同。非常感谢您的帮助或建议

Query 1: 
With 
MEMBER [Account].[9] AS '([Account].&[500],[Department].&[102])' 
MEMBER [Account].[1] AS '([Account_Text].[Account_Text_Level].&[-1],[Account].&[161])' 
MEMBER [Account].[6] AS '([Account].&[500],[Account_Group].&[214])' 
MEMBER [Account].[10] AS '([Account].&[1])' 
MEMBER [Account].[13] AS '([Account].&[2881],[Company].&[173])' 
MEMBER [Account].[4] AS '([Company].&[1],[Company_Text].&[-1],[Account].&[500],[Account_Group].&[215],[Account_Text].[Account_Text_Level].&[-1],[Department].&[103])' 
Select 
{[Account].[9],[Account].[1],[Account].[6],[Account].[10],[Account].[13],[Account].[4]} 
Dimension Properties [Parent_Unique_Name] On Columns From [Adventure Works] 
Where ([BusinessCenter].&[1],[CalculatedDim].&[1],[CostCenter].&[1],[Department].&[1],[Geography].&[1],[ICSegment].&[1],
[ProductLine].&[1],[Reporting].[Level 1].&[14],[Company].&[1],[Scenario].&[1],[Time].&[2014])


Query 2:
With 
MEMBER [Test9] AS '([Account].&[500],[Department].&[102])' 
MEMBER [Test1] AS '([Account_Text].[Account_Text_Level].&[-1],[Account].&[161])' 
MEMBER [Test2] AS '([Account].&[500],[Account_Group].&[214])' 
MEMBER [Test10] AS '([Account].&[1])' 
MEMBER [Test13] AS '([Account].&[2881],[Company].&[173])' 
MEMBER [Test4] AS '([Company].&[1],[Company_Text].&[-1],[Account].&[500],[Account_Group].&[215],[Account_Text].[Account_Text_Level].&[-1],[Department].&[103])' 
Select 
{[Test9],[Test1],[Test2],[Test10],[Test13],[Test4]} 
Dimension Properties [Parent_Unique_Name] 
On Columns From  [Adventure Works]  
Where ([BusinessCenter].&[1],[CalculatedDim].&[1],[CostCenter].&[1],[Department].&[1],[Geography].&[1],
[ICSegment].&[1],
[ProductLine].&[1],[Reporting].[Level 1].&[14],[Company].&[1],[Scenario].&[1],[Time].&[2014]
)

Query 3:

With 
MEMBER [Company].[9] AS '([Account].&[500],[Department].&[102])' 
MEMBER [Company].[1] AS '([Account_Text].[Account_Text_Level].&[-1],[Account].&[161])' 
MEMBER [Company].[6] AS '([Account].&[500],[Account_Group].&[214])' 
MEMBER [Company].[10] AS '([Account].&[1])' 
MEMBER [Company].[13] AS '([Account].&[2881],[Company].&[173])' 
MEMBER [Company].[4] AS '([Company].&[1],[Company_Text].&[-1],[Account].&[500],[Account_Group].&[215],[Account_Text].[Account_Text_Level].&[-1],[Department].&[103])' 
Select 
{[Company].[9],[Company].[1], [Company].[6],[Company].[10],[Company].[13],[Company].[4]} 
Dimension Properties [Parent_Unique_Name] On Columns From  [Adventure Works]  
Where ([BusinessCenter].&[1],[CalculatedDim].&[1],[CostCenter].&[1],[Department].&[1],[Geography].&[1],[ICSegment].&[1],
[ProductLine].&[1],[Reporting].[Level 1].&[14],[Scenario].&[1],[Time].&[2014],[Account].&[1])

我的回答是基于你的评论


我有一组元组,每个元组都有不同的成员,我想要 只触发一个查询以获取每个元组集的数据。所以我 我使用“With Member”选项,该选项允许命名成员集 具有不同的维度苏迪

你的问题涉及维度和层次的概念。层次性表示一个集合中的所有元组都应该包含相同的维度层次结构,维度表示它们必须具有相同的顺序。因此,如果元组缺少成员,则在查询中使用其默认成员来满足属性。这不会影响结果,因为这是查询处理器对元组中遗漏的每个维度所做的操作。您的查询将如下所示

Select 
{
([Account].&[500], [Department].&[102],                       [Account_Text].[Account_Text_Level].defaultmember, [Account_Group].[YourHierarchy].defaultmember, [Company].[YourHierarchy].defaultmember,[Company_Text].[YourHierarchy].defaultmember),
([Account].&[161], [Department].[Youhierarchy].defaultmember, [Account_Text].[Account_Text_Level].&[-1],         [Account_Group].[YourHierarchy].defaultmember, [Company].[YourHierarchy].defaultmember,[Company_Text].[YourHierarchy].defaultmember),
([Account].&[500], [Department].[Youhierarchy].defaultmember, [Account_Text].[Account_Text_Level].defaultmember, [Account_Group].&[214]                       , [Company].[YourHierarchy].defaultmember,[Company_Text].[YourHierarchy].defaultmember),
([Account].&[1],   [Department].[Youhierarchy].defaultmember, [Account_Text].[Account_Text_Level].defaultmember, [Account_Group].[YourHierarchy].defaultmember, [Company].[YourHierarchy].defaultmember,[Company_Text].[YourHierarchy].defaultmember),
([Account].&[2881],[Department].[Youhierarchy].defaultmember, [Account_Text].[Account_Text_Level].defaultmember, [Account_Group].[YourHierarchy].defaultmember, [Company].&[173]),
([Account].&[500], [Department].&[103],                       [Account_Text].[Account_Text_Level].&[-1],         [Account_Group].&[215]                       ,[Company].&[1]                          ,[Company_Text].&[-1])
} 
Dimension Properties [Parent_Unique_Name] On Columns 
From [Adventure Works] 
Where 
([BusinessCenter].&[1],[CalculatedDim].&[1],
[CostCenter].&[1],[Department].&[1],
[Geography].&[1],[ICSegment].&[1],
[ProductLine].&[1],[Reporting].[Level 1].&[14],
[Company].&[1],[Scenario].&[1],[Time].&[2014])
编辑:根据下面的评论

看一看

select 
[Measures].[Internet Sales Amount]
on columns,
([Date].[Calendar Year].&[2012],[Product].[Category].&[1])
on 
rows 
from [Adventure Works]
结果

第二元组

select 
[Measures].[Internet Sales Amount]
on columns,
([Date].[Calendar Year].&[2012],[Customer].[Country].&[United States])
on 
rows 
from [Adventure Works]
结果:

第三元组

select 
[Measures].[Internet Sales Amount]
on columns,
{
([Customer].[Gender].&[F],[Product].[Category].&[3])
}
on 
rows 
from [Adventure Works]
结果

现在让我们把它们结合起来

select 
[Measures].[Internet Sales Amount]
on columns,
{
([Date].[Calendar Year].&[2012],[Product].[Category].&[1],[Customer].[Country].defaultmember,[Customer].[Gender].defaultmember),
([Date].[Calendar Year].&[2012],[Product].[Category].defaultmember,[Customer].[Country].&[United States],[Customer].[Gender].defaultmember),
([Date].[Calendar Year].defaultmember,[Product].[Category].&[3],[Customer].[Country].defaultmember,[Customer].[Gender].&[F])
}
on 
rows 
from [Adventure Works]
结果

我的回答是基于你的评论


我有一组元组,每个元组都有不同的成员,我想要 只触发一个查询以获取每个元组集的数据。所以我 我使用“With Member”选项,该选项允许命名成员集 具有不同的维度苏迪

你的问题涉及维度和层次的概念。层次性表示一个集合中的所有元组都应该包含相同的维度层次结构,维度表示它们必须具有相同的顺序。因此,如果元组缺少成员,则在查询中使用其默认成员来满足属性。这不会影响结果,因为这是查询处理器对元组中遗漏的每个维度所做的操作。您的查询将如下所示

Select 
{
([Account].&[500], [Department].&[102],                       [Account_Text].[Account_Text_Level].defaultmember, [Account_Group].[YourHierarchy].defaultmember, [Company].[YourHierarchy].defaultmember,[Company_Text].[YourHierarchy].defaultmember),
([Account].&[161], [Department].[Youhierarchy].defaultmember, [Account_Text].[Account_Text_Level].&[-1],         [Account_Group].[YourHierarchy].defaultmember, [Company].[YourHierarchy].defaultmember,[Company_Text].[YourHierarchy].defaultmember),
([Account].&[500], [Department].[Youhierarchy].defaultmember, [Account_Text].[Account_Text_Level].defaultmember, [Account_Group].&[214]                       , [Company].[YourHierarchy].defaultmember,[Company_Text].[YourHierarchy].defaultmember),
([Account].&[1],   [Department].[Youhierarchy].defaultmember, [Account_Text].[Account_Text_Level].defaultmember, [Account_Group].[YourHierarchy].defaultmember, [Company].[YourHierarchy].defaultmember,[Company_Text].[YourHierarchy].defaultmember),
([Account].&[2881],[Department].[Youhierarchy].defaultmember, [Account_Text].[Account_Text_Level].defaultmember, [Account_Group].[YourHierarchy].defaultmember, [Company].&[173]),
([Account].&[500], [Department].&[103],                       [Account_Text].[Account_Text_Level].&[-1],         [Account_Group].&[215]                       ,[Company].&[1]                          ,[Company_Text].&[-1])
} 
Dimension Properties [Parent_Unique_Name] On Columns 
From [Adventure Works] 
Where 
([BusinessCenter].&[1],[CalculatedDim].&[1],
[CostCenter].&[1],[Department].&[1],
[Geography].&[1],[ICSegment].&[1],
[ProductLine].&[1],[Reporting].[Level 1].&[14],
[Company].&[1],[Scenario].&[1],[Time].&[2014])
编辑:根据下面的评论

看一看

select 
[Measures].[Internet Sales Amount]
on columns,
([Date].[Calendar Year].&[2012],[Product].[Category].&[1])
on 
rows 
from [Adventure Works]
结果

第二元组

select 
[Measures].[Internet Sales Amount]
on columns,
([Date].[Calendar Year].&[2012],[Customer].[Country].&[United States])
on 
rows 
from [Adventure Works]
结果:

第三元组

select 
[Measures].[Internet Sales Amount]
on columns,
{
([Customer].[Gender].&[F],[Product].[Category].&[3])
}
on 
rows 
from [Adventure Works]
结果

现在让我们把它们结合起来

select 
[Measures].[Internet Sales Amount]
on columns,
{
([Date].[Calendar Year].&[2012],[Product].[Category].&[1],[Customer].[Country].defaultmember,[Customer].[Gender].defaultmember),
([Date].[Calendar Year].&[2012],[Product].[Category].defaultmember,[Customer].[Country].&[United States],[Customer].[Gender].defaultmember),
([Date].[Calendar Year].defaultmember,[Product].[Category].&[3],[Customer].[Country].defaultmember,[Customer].[Gender].&[F])
}
on 
rows 
from [Adventure Works]
结果

您能附上结果吗。第二,你想用这个实现什么?我有一组元组,每个元组都有不同的成员,我只想启动一个查询来获取每个元组集的数据。所以我使用了“With Member”选项,它允许有不同维度的命名成员集。你能附上结果吗。第二,你想用这个实现什么?我有一组元组,每个元组都有不同的成员,我只想启动一个查询来获取每个元组集的数据。所以我使用“With Member”选项,它允许命名具有不同维度的成员集。嗨,MoazRub,谢谢你的回答。但在我的例子中,我可能有属性和维度的组合。如果只有维度来维护层次性,我可以添加默认维度,但对于属性,没有默认属性。所以唯一可行的选择就是使用“With Member”" . 但我无法理解为什么这会对不同的成员别名产生不同的结果。谢谢你的帮助。@Sudi我想我无法解释我自己。看一下编辑,但是这里所有的成员都是维度。如果我们的属性或属性层次结构中没有定义默认成员,那么如何查询属性的属性或属性层次结构。@Sudi例如“[Date].[Calendar Year].&[2012]”不仅仅是一个维度,“Calendar Year”是“Date”维度的属性。就属性层次而言,它被转换为基础属性。您将始终具有defaultmember值。通常它是“所有”的,否则是您定义的,否则是第一个成员。请使用成员[All]而不是defaultmember。所有都是使用的标准成员。嗨,MoazRub,谢谢你的回答。但在我的例子中,我可能有属性和维度的组合。如果只有维度来维护层次性,我可以添加默认维度,但对于属性,没有默认属性。所以唯一可行的选择就是使用“With Member”" . 但我无法理解为什么这会对不同的成员别名产生不同的结果。谢谢你的帮助。@Sudi我想我无法解释我自己。看一下编辑,但是这里所有的成员都是维度。如果我们的属性或属性层次结构中没有定义默认成员,那么如何查询属性的属性或属性层次结构。@Sudi例如“[Date].[Calendar Year].&[2012]”不仅仅是一个维度,“Calendar Year”是“Date”维度的属性。就属性层次而言,它被转换为基础属性。您将始终具有defaultmember值。通常它是“所有”的,否则是您定义的,否则是第一个成员。请使用成员[All]而不是defaultmember。所有都是要使用的标准成员。