如何在一列中获取维度的所有成员

时间:2015-04-16 01:16:06

标签: ssas mdx

我希望将所有客户端名称放在单个列的单独行中。 我在MDX中试过这个

WITH MEMBER ClientName
AS [Client].[Client].CURRENTMEMBER.NAME

SELECT {[ClientName]} ON 0
FROM [UserActivity]

这给了我一个名为" ClientName"的列。用" All"行它的价值。我想要的是此列中的多行,每个客户端名称一行。我怎么能这样做?

最终,我尝试工作的是这样的......其中每个客户名称显示在第0列中,相应的度量显示在第1列

WITH MEMBER ClientName
AS [Client].[Client].CURRENTMEMBER.NAME

SELECT {([ClientName], [Measures].[Total Engaged Users])} ON 0
FROM [UserActivity]

现在我知道,如果我将我的维度放在ROWS上,但是我不想要这个,因为我使用的客户端应用程序并不尊重

SELECT {[Client].[Client].Members} ON 0, {[Measures].[Total Engaged Users]} ON 1
FROM [UserActivity]

2 个答案:

答案 0 :(得分:1)

要使函数.CurrentMember正常运行,它需要一个上下文,因此您需要在行上包含[Client].[Client].MEMBERS

WITH 
  MEMBER [Measures].ClientName AS 
    [Client].[Client].CurrentMember.Name 
SELECT 
  {
    [Measures].[ClientName]
   ,[Measures].[Total Engaged Users]
  } ON 0
 ,[Client].[Client].MEMBERS ON 1
FROM [UserActivity];

如果客户层次结构中有一些计算成员,那么AllMembers函数优于Members

WITH 
  MEMBER [Measures].ClientName AS 
    [Client].[Client].CurrentMember.Name 
SELECT 
  {
    [Measures].[ClientName]
   ,[Measures].[Total Engaged Users]
  } ON 0
 ,[Client].[Client].ALLMEMBERS ON 1
FROM [UserActivity];

答案 1 :(得分:0)

你应该看看使用DESCENDANTS。如果您要查找的所有客户端都是层次结构中的叶子,那么这将起作用:

DESCENDANTS ([Client].[Client].MEMBERS,,LEAVES)