用于计算全商品量的MDX公式(%ACV)

时间:2016-03-07 09:31:49

标签: ssas mdx

我想为All-Commodity Volume(ACV)指标创建一个衡量指标。公式如下:

销售产品的经销商/所有经销商的总销售额的总销售额

让我们举一个例子,例如来自AdventureWorks2012DW Cube的产品“LL Touring Frame - Blue,44”。

我们可以看到它由14家经销商销售

enter image description here

这14家经销商合计销售2 706 909 $

enter image description here

如果我带走了所有经销商,他们将获得80 450 596美元的销售额

enter image description here

我的ACV措施将返回2 607 909/80 450 596 = 2%的产品“LL Touring Frame - Blue,44”,这意味着它出现在我的间接销售额的2%的经销商处。

我正在寻找的是MDX表达式,它取代所有产品的“经销商销售额”而不是所选产品的经销商销售额,但仅限于“所选产品的经销商销售额不为空” ”。

enter image description here

到目前为止,感谢社区的帮助,如果我对某些特定产品进行过滤,我可以提出一个查询,以便给出正确的结果:

WITH SET ActiveStores As NonEmpty(             [DimStore] [存储] [存储]             ,{([DimProduct]。[Product] .CurrentMember,[Measures]。[Sales])}         )

会员ACV为SUM(ActiveStores,[Measures]。[Store Sales])/ [Measures]。[Store Sales]

在列上选择非空的ACV, NON EMPTY {([DimProduct]。[Product]。[Product] .ALLMEMBERS)} ON ROWS FROM(SELECT({[DimProduct]。[Product]。& [HAMAC DE VOYAGE]})来自[Cube]的栏目

此查询为过滤后的产品返回9%的ACV。但是,如果我只通过放置FROM [Cube]来删除过滤器,则所有产品的ACV变为100%,即使是之前查询的ACV变为9%。

就像ActiveStores集绑定了WHERE子句而不是ROWS轴。

此致

3 个答案:

答案 0 :(得分:0)

要查找Sales不为null的成员,您可以使用NonEmpty函数:

NonEmpty(
  [Stores].[Stores].members
  ,(
     [Product].[Product].[ProductA]
   , [Measures].[Sales]
   )
)

答案 1 :(得分:0)

怎么样:

#body_splash#body_main

答案 2 :(得分:0)

我可以通过这种方式找到解决方案:

我添加了一个聚合事实(Store Sales)作为维度商店的属性。从中创建一个Measure Store Sales,然后使用以下表达式创建计算度量:

SUM(NonEmpty(
            [DimStore].[Store].[Store]
            ,([Measures].[Sales])
        ), [Measures].[Store Sales]) / (ROOT([DimStore]), [Measures].[Store Sales])