【问题标题】:Cognos Calculate Variance Crosstab (Dimensional)Cognos 计算方差交叉表(维度)
【发布时间】:2015-06-24 18:42:07
【问题描述】:

这与Cognos Calculate Variance Crosstab (Relational) 非常相似,但我的数据源是维度的。

我有一个简单的交叉表,例如:

          | 04-13-2013 | 04-13-2014  
---------------------------------------
Sold      |   75         |  50   
Purchased |   10         |  15   
Repaired  |   33         |  44  
  • 过滤器:用户选择了 1 个日期,然后我们包含该日期加上 1 年前。
  • 维度:日期是 YQMD 层次结构中的日级别。
  • 度量:我们从度量维度显示各种度量。
    • 已售出
    • 已购买
    • 已修复

这是报表工作室中的样子:

                  | <#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%

我在 的右侧添加了一个查询表达式,如下所示,但我无法进行方差计算。

                  | <#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

我认为 CurrentMemberPrevMember 可能有效,但它会产生空白单元格:

CurrentMember( [YQMD Hierarchy] ) 
/
prevMember(CurrentMember([YQMD Hierarchy]))
-1

我认为是因为 prevMember 产生空白。

prevMember(CurrentMember([YQMD Hierarchy]))

仅使用 CurrentMember 会给出两列的总和:

CurrentMember([YQMD Hierarchy]) 

我可以使用什么表达式来利用我的维度模型并添加具有 % 方差的列?

这些是我用于研究的页面:

【问题讨论】:

    标签: crosstab cognos cognos-10 cognos-bi


    【解决方案1】:

    我希望有更好的方法来做到这一点。我终于找到了描述解决此问题的一种方法的资源。使用 tailhead 函数,我们可以得到第一个和最后一个周期,从而计算百分比方差。

    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)
    

    【讨论】:

      猜你喜欢
      • 2014-06-05
      • 1970-01-01
      • 2015-03-04
      • 2019-10-22
      • 2015-01-14
      • 1970-01-01
      • 2010-10-01
      • 2012-06-13
      • 1970-01-01
      相关资源
      最近更新 更多