层次结构中真正不同的计数(MDX)

时间:2017-01-25 18:54:20

标签: mdx olap-cube

我正在使用OLAP-cube设置中的数据。我希望显示所有数学学生组,每个组都有不同的学生计数。学生将根据他们在数学分班考试中的得分情况进入数学小组。它们也被放置在每个数学组中,低于他们放入的数学组。 (放入数学106,也是数学105,104,103,102,101和100的成员)目前,我只能在我的行上显示数学组,并且在列上显示不同的学生。显示的计数仅在每行不同,而不是整个报告。所以Math 100小组正在显示数学小组中所有学生的数量,而不仅仅是数学100。

WITH 
/*- Qv6.0.3431.1887 -*/

SELECT  
NON EMPTY 
{
 DISTINCT ( { [Measures].[Distinct Students] } ) 
} 
PROPERTIES PARENT_UNIQUE_NAME,  MEMBER_KEY, MEMBER_TYPE 

 ON COLUMNS, 
NON EMPTY 
{
  { [Student].[Student].[All Students] } 
  *  { {  {  DISTINCT(
 {  {  FILTER(
 {  {  FILTER(
 { DESCENDANTS( [Student Group].[Student Group].[All Student Groups] ,     [Student Group].[Student Group].[Student Group])  }  ,  InStr(1,IIF( ISERROR(   [Student Group].[Student Group].CURRENTMEMBER.MEMBER_CAPTION ),"", [Student Group].[Student Group].CURRENTMEMBER.MEMBER_CAPTION ) , "Math") <> 0
)  } 
 }  ,  InStr(1,IIF( ISERROR( [Student Group].[Student     Group].CURRENTMEMBER.MEMBER_CAPTION ),"", [Student Group].[Student        Group].CURRENTMEMBER.MEMBER_CAPTION ) , "eligible") <> 0
)  } 
 } )  } 
 }   }  
} 
PROPERTIES PARENT_UNIQUE_NAME,  MEMBER_KEY, MEMBER_TYPE 

 ON ROWS 

FROM [Student Term]  
WHERE ( [Terms].[Terms].[Term].&[138] ) 
CELL PROPERTIES FORMATTED_VALUE, VALUE, FONT_NAME

以下是输出的屏幕截图: Math Groups Student counts

我试过在这里搜索但是没有成功找到任何帮助。我并不精通MDX,我们使用的报告工具根据我们在报告构建器中选择的项目(主要是拖放)来创建它。该工具允许您使用MDX创建自定义度量和元素。我非常感谢所有的帮助,如果需要更多信息,请告诉我。

谢谢!

====更新1-FEB-2017 ======= 感谢您的回复。我终于再次开始研究这个问题了。我根据您的代码在我们的前端工具中创建了自定义度量。我将[Measures]。[StudentsCount]更改为[Measures]。[Distinct Students]以匹配可用的度量。如果我选择“StudentsCountDC”自定义度量并运行报告,则不返回任何内容。如果我选择'IsStudentsTop'自定义度量,它返回的计数非常大,就像它没有为所选术语运行一样。以下是使用新创建的自定义度量“StudentsCountDC”运行报告后生成的新MDX。

WITH 
/*- Qv6.0.3431.1887 -*/

SELECT  
NON EMPTY 
{
 DISTINCT ( { [Measures].[#~~2d0c2a98-fed9-4797-a573-170d3e450e4c~~#] } ) 
} 
PROPERTIES PARENT_UNIQUE_NAME,  MEMBER_KEY, MEMBER_TYPE 

 ON COLUMNS, 
NON EMPTY 
{
  { [Student].[Student].[All Students] } 
  *  { [#~~9faf06d9-a022-493d-9dfd-dadd55793c37~~#] }  
} 
PROPERTIES PARENT_UNIQUE_NAME,  MEMBER_KEY, MEMBER_TYPE 

 ON ROWS 

FROM [Student Term]  
WHERE ( [Terms].[Terms].[Term].&[136] ) 
CELL PROPERTIES FORMATTED_VALUE, VALUE, FONT_NAME  

新措施的屏幕截图:IsStudentsTop & StudentsCountDC measures 再次感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

这有点棘手,我个人还没有测试过。希望,你会明白这一点:

with 

Member [Measures].[StudentsCountDC] as
SUM(
    [Student].[Student].[Student].Members,
    IIF(
        not [Measures].[IsStudentsTop]
        and 
        [Measures].[StudentsCount],
        1,
        NULL
    )
)

Member [Measures].[IsStudentsTop] as
SUM(
    {[Student Group].[Student Group].PrevMember:NULL},
    [Measures].[StudentsCount]
)

IsStudentsTop 会检查上层组中是否存在 StudentsCount (按您的属性排序)。 StudentsCountDC 检查当前学生是否为空 IsStudentsTop StudentsCount 为非空,然后为每个学生返回1,否则返回Null。