这与Cognos Calculate Variance Crosstab (Relational)非常相似,但我的数据源是维度。
我有一个简单的交叉表,例如:
| 04-13-2013 | 04-13-2014
---------------------------------------
Sold | 75 | 50
Purchased | 10 | 15
Repaired | 33 | 44
以下是报告工作室的内容:
| <#Day#> | <#Day#>
---------------------------------------
<#Sold#> | <#1234#> | <#1234#>
<#Purchased#> | <#1234#> | <#1234#>
<#Repaired#> | <#1234#> | <#1234#>
我希望能够将这种方差计算为每个度量的两个时间段之间的百分比。
| 04-13-2013 | 04-13-2014 | Var. %
-----------------------------------------------
Sold | 75 | 50 | -33%
Purchased | 10 | 15 | 50%
Repaired | 33 | 44 | 33%
我在&lt;#Day#&gt;右侧添加了一个查询表达式。如下所示,但我无法使方差计算起作用。
| <#Day#> | <#Variance#>
---------------------------------------
<#Sold#> | <#1234#> | <#1234#>
<#Purchased#> | <#1234#> | <#1234#>
<#Repaired#> | <#1234#> | <#1234#>
这些是我尝试的表达方式和我得到的结果:
硬编码的表达式有效,但仅适用于该1个度量:
total(case when [date] = 2014-04-13 then [Sold] end)
/
total(case when [date] = 2013-04-13 then [Sold] end)
-1
我认为 CurrentMember 和 PrevMember 可能会有效,但它会产生空白单元格:
CurrentMember( [YQMD Hierarchy] )
/
prevMember(CurrentMember([YQMD Hierarchy]))
-1
我认为这是因为 prevMember 会产生空白。
prevMember(CurrentMember([YQMD Hierarchy]))
仅使用 CurrentMember 会同时显示两列:
CurrentMember([YQMD Hierarchy])
我可以使用什么表达式来利用我的维度模型并添加一个包含%variance的列?
这些是我用于研究的页面:
答案 0 :(得分:0)
我希望有更好的方法来做到这一点。我终于找到了一个描述这个问题的方法的资源。使用尾和头函数,我们可以到达第一个和最后一个句点,从而计算%方差。
item(tail(members([Day])),0)
/
item(head(members([Day])),0)
-1
这个想法来自IBM Cognos BI – Using Dimensional Functions to Determine Current Period。
示例2 - 通过过滤测量数据来查找当前周期
如果OLAP或DMR数据源已填入未来的时间段(例如年末或未来年份),则当前时段的计算更复杂。但是,仍然可以通过查找具有给定度量数据的最新时段来确定。
item(tail(filter(members([sales_and_marketing].[Time].[Time].[Month]),
tuple([Revenue], currentMember([sales_and_marketing].[Time].[Time]))
is not null), 1), 0)