如何在 MDX 中将级别的总和显示为其最后一个子级的值
Posted
技术标签:
【中文标题】如何在 MDX 中将级别的总和显示为其最后一个子级的值【英文标题】:How to display the total of a level as the value of its last child in MDX 【发布时间】:2010-09-12 08:19:09 【问题描述】:我有一个 MDX 查询,它列出了 OLAP 数据库中所有“周”和“日”级别的度量。例如
SELECT
HIERARCHIZE( [Business Time].[Week].members, [Business Time].[Date].members )
ON ROWS,
[Measures].[Quantity]
ON COLUMNS
FROM [Sales]
但是,在显示一周的度量值的地方,我想显示一周内最后一天的值,而不是显示所有 Day 值的总和。例如
第 1 周:12 9 月 15 日:10 9 月 16 日:20 9 月 17 日:12 9 月 18 日:15 9 月 19 日:8 9 月 20 日:9 9 月 21 日:12第 2 周:15 9 月 22 日:12 9 月 23 日:15
如何在 MDX 中实现这一点?
【问题讨论】:
【参考方案1】:在 MDX 的开头添加一个新的计算度量,仅当它以周级别显示时才显示最后一天的值,否则保持不变:
WITH MEMBER [Measures].[Blah] AS
'IIF(
[Business Time].currentMember.level.name = "Week",
([Business Time].currentMember.lastChild, [Measures].[Quantity]),
([Business Time].currentMember, [Measures].[Quantity])
)'
我预计会有客户提出这个奇怪的要求,并且我预计您会在一个月内接到来自同一办公室的某人的电话,说此报告中的每周“总计”有误!
【讨论】:
实际上,如果您将 Quantity 视为“期末存货金额”,这并不是一个奇怪的请求。所以一周的期末库存实际上是该项目最后一天的期末库存。 好答案。我只做一个改变:使用 IS 来找出成员所在的级别。例如。 [Business Time].currentMember.level IS [Business Time].[Week] 这样效率更高。以上是关于如何在 MDX 中将级别的总和显示为其最后一个子级的值的主要内容,如果未能解决你的问题,请参考以下文章