我正在使用“上一期”的计算成员:
Case
// Test for current coordinate being on (All) member.
When [<<Target Dimension>>].[<<Target Hierarchy>>].CurrentMember.Level Is
[<<Target Dimension>>].[<<Target Hierarchy>>].[(All)]
Then "NA"
Else (
ParallelPeriod
(
[<<Target Dimension>>].[<<Target Hierarchy>>].[<<Target Level>>],
<<Number of Periods>>,
[<<Target Dimension>>].[<<Target Hierarchy>>].CurrentMember
),
[Measures].[<<Target Measure>>]
)
End
// This expression evaluates the difference between the value of the numeric
// expression in the previous period and that of the current period.
(直接取自微软建议的片段代码)
它按预期工作,但在呈现总计时,我得到全年总计,即使在行上选择了几个月。
所以,如果我选择说2015年,1月到6月,我会得到2014年的6个正确值,但是2014年的总数而不是6个呈现值的总和。
任何获得“正确”总和值的方法?正确我指的是所选行的总和。
编辑添加实际代码:
Case
When [Dim Time].[Calendar].CurrentMember.Level Is [Dim Time].[Calendar].[(All)]
Then "NA"
Else (ParallelPeriod([Dim Time].[Calendar].[Year],
1,
[Dim Time].[Calendar].CurrentMember),[Measures].[Sales])
End
My Dim Time.Calendar以年 - 月 - 日为级别。很容易:)
在选择某些月份时,年份总数是一年中的总计,而不是所选月份的总数。 选择某些天时,月总数是该月的总计,而不是所选天数的总和。
编辑添加示例:
Year Month Day Sales previous year Sales
2015 04 03 74,154.56 € 135,156.41 €
Total 04 2,617,045.75 € 135,156.41 €
Total 2015 37,696,665.69 € 135,156.41 €
答案 0 :(得分:0)
(不确定我是否应该发布答案,因为它尚未解决,但似乎我找到了正确的方向)
使用建议here我定义了动态集(使用MS SAS在多维数据集定义时):
CREATE DYNAMIC SET CURRENTCUBE.[DynSet] AS [Dim Time].[Calendar]
和一个Calculated成员(在Excel上,更容易测试不同的语法):
count([DynSet])
现在我在所有行,单个,小计,总计...上得到1作为值,而不是所选月份的预期天数和总和。
也许具有更好MDX知识的人可以进一步发展它。
我还使用帖子计数的例子添加了CM(后代和计数(现有的(原来的[Dim Temps]。[日历] ...)这就是我得到的:
Year Month Day Previous sales Sales CountExisting CountDescendants CountDays
2015 04 03 74,154.56 € 135,156.41 € 1 1 1
04 132,992.88 € 152,179.24 € 1 1 1
05 130,651.80 € 128,971.65 € 1 1 1
Total 04 2,617,045.75 € 416,307.30 € 31 31 1
Total 2015 37,696,665.69 € 416,307.30 € 365 365 1
我无法理解如何使用新的动态集,因为我无法访问其组件,我期望[DynSet]。[Year] [Month]和[Day]存在所以我可以使用它们我以前的表达方式,但他们没有,所以不确定如何将它用于我的目的。
THKS
<强>编辑:强>
试图定义
CREATE DYNAMIC SET CURRENTCUBE.[DynSet] AS [Dim Time].[Calendar].[Day]
现在我的最后一列,即count([DynSet]),所有行的值都为3。
仍然不知道如何使用[DynSet]级别......
答案 1 :(得分:0)
我花了差不多两个星期,大量的搜索时间和十几个不同的论坛,但最后我得到了一个解决问题的不错的答案。
看看here
简而言之,添加一个命名计算(不是计算成员)并调整公式范围
$assets2012Q4 = $xpath->query("/xbrli:xbrl/us-gaap:Assets[@unitRef='usd'][@contextRef='FI2012Q4']");
一旦你知道它就够了!