none
SSAS里计算期末库存SKU的问题 RRS feed

  • 问题

  •    我是新手,首先请教版主一个问题,SSAS、SSIS、SSRS相关的问题是在这里提么?
       需求描述:【库存SKU】的算法是时间范围内最后一天的库存量大于零的不重复货号的个数.

       我实现了,但是有问题,如下:

    [00 年] [03 月] [库存SKU] [库存量]
    2012 201210 2694 547194
    201211 2703 559340
    201212 2694 493385
    汇总 2694 493385
    总计 0 493385

       

    从上面看起来是正确的,但是汇总的值是当年最后一天的库存SKU,如下:

       

    [00 年] [03 月] [库存SKU] [库存量]
    2012 201210 2694 547194
    201211 2703 559340
    汇总 2694 559340
    总计 0 559340

         如上所示:实际上在【库存SKU】汇总的那个单元格需要的是11月的数值,而不是12的数值,实现代码如下:

         我在CUBE里面新建了一个计算成员,

         count(Filter(([商品].[00 货号].[00 货号],ClosingPeriod([日期].[年-月-日].[03 月])), [Measures].[库存量]>0))

        我不知道是不是我实现的思路有问题,请大家指教,万分感谢!

       

       

    2013年1月8日 2:33

全部回复

  • 在Cube 设计中,你所需要实现的这个叫 Accumulation. 即累计和,也就是说一个基于时间点的值是以前的值的累加。这个在计算库存中非常常用。

    MDX 中有一个函数叫:PeriodsToDate 函数,是用来专门做这个的,它的 CurrentMember 的值是一段在PeriodsToDate 中指定范围的和。

    2013年1月15日 21:16
    版主
  • 楼主要的不是累计吧,是期末。度量的聚合函数,除了默认的Sum以外,还有很多。这个需求应该用LastChild或者LastNonEmpty。另外,“库存量大于零的不重复货号的个数.”这个在DW中预先计算比较好。

    想不想时已是想,不如不想都不想。

    2013年1月16日 2:13
    版主
  • 楼主的问题很矛盾呀。

    如果你需要:“【库存SKU】的算法是时间范围内最后一天的库存量大于零的不重复货号的个数.” ,当你选择月作为维度层次的时候,可以考虑 LastNonEmpty 函数。

    如果你需要:“实际上在【库存SKU】汇总的那个单元格需要的是11月的数值,而不是12的数值”,那么PeriodToDate 是唯一与上一期有关的函数。 

    2013年1月16日 16:59
    版主