如何在WITH MEMBER计算MDX中获取当前行值?
问题描述:
我想根据当前行计算度量值。 问题是我找不到在WITH MEMBER部分中获取当前行的方法。如何在WITH MEMBER计算MDX中获取当前行值?
WITH MEMBER [Measures].[Test] AS AVG(
NonEmptyCrossJoin(
FILTER(DESCENDANTS([Exigences].[ENVGR], [Levier], SELF),
[Exigences].CurrentMember.Name = 'Chemicals'),
DESCENDANTS([Organization].[Valeo].[Powertrain Systems], [entity], SELF)),
[Measures].[ProgressLevel])
SELECT {[Measures].[ProgressLevel], [Measures].[Test]} ON COLUMNS,
DESCENDANTS([Exigences].[ENVGR].[ENVGR-01.001], [Levier], SELF) ON
ROWS FROM [Exigences]
化学物质目前为硬编码。这是例子。 我想用'化学物'代替当前的行数。
因此,假设这些值是行将返回'化学物质','药房','测试',我想[度量]。[测试]计算改变。
MDX能做到吗?如果是这样,我怎么能得到当前值。
我试过[Levier] .CurrentMember.Name,但我认为它与[Exigences] .CurrentMember.Name冲突。
任何人有一个想法?
谢谢
答
这已采取努力一点,但是这就是优势,拥有一个漂亮的金色徽章。我们使用的MDX Generate功能和命名集(myCellSet在link & 2D为例):
不知道这是要为你的供应商工作,但你可以试试这个:
WITH MEMBER [Measures].[Test] AS AVG(
NonEmptyCrossJoin(
Generate({[Exigences].CurrentMember} as MyCellSet,
FILTER(DESCENDANTS([Exigences].[ENVGR], [Levier], SELF),
[Exigences].CurrentMember.Name = MyCellSet.CurrentMember.Name)
)
,
DESCENDANTS([Organization].[Valeo].[Powertrain Systems], [entity], SELF)),
[Measures].[ProgressLevel])
不知道理解,你是什么意思到当前行。底层表的行?如果是,哪一个? (这不是非常OLAP得到rowid :-)) – ic3
在ON ROWS选择上,我做了一个DESCENDANTS,它会给我一组[Levier]成员。现在在顶部的WITH MEMBER中,您可以看到硬编码的'Chemicals'字符串。我想这个字符串是我的[Levier] .CurrentMember.Name值。但由于[Exigences]维上的过滤我有冲突,[Exigences] .CurrentMember.Name和[Levier] .CurrentMember.Name之间的平等测试将始终为真,因此,过滤器将不会过滤任何内容。 – Spredzy
我看到你的问题,棘手的问题之一。 icCube OLAP服务器支持功能语言来解决问题。对不起,我没有看到如何解决你的问题,除非在Axis()上做些什么或使用重复的层次结构。你需要为这个标准的MDX su..s创建一个变量uff。 – ic3