我正在使用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 再次感谢您的帮助!
答案 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。