如何计算在powerpivot销售产品的独特商店

时间:2015-12-24 18:58:53

标签: excel powerpivot dax

我对DAX没有过多的经验,而且我的老板已经问我一些看似超出我能力的指标。具体来说,她想知道任何商品的销售比例是多少  我们有一个 Stores 表,它与[STORE_ID]相关的 measure 表有一对多的关系。 表也通过[ITEM_ID]与度量表1-to-M相关。 度量表包含其中指示项目的每周[已售出]。

我目前的逻辑是将这个问题分成两个更简单的部分,(商店销售产品)/(总商店)。在商店表中找到一个简单明显的商店总数,下一个更难。我尝试了Stores_Selling_Product = countrows(filter(filter(Measures, earlier(measures[ITEM_ID]) = measures[ITEM_ID]), EARLIER(Measures[STORE_ID]) <> Measures[STORE_ID])),但我发现只排除了与当前商店ID匹配的商店。有没有办法排除已经计算过的商店?

如果它有帮助还有一个二进制单元格[SoldInStore],如果该商品在该商店出售,那么该商品为1.我很确定我将不得不使用除了国家以外的其他商品,但我不知道不知道在哪里看。任何建议都会非常好。提前致谢,  -Mudkip。

1 个答案:

答案 0 :(得分:1)

AllStores:=
COUNTROWS( ALL( 'Stores' ) )

StoresWithSales:=
COUNTROWS(
    CALCULATETABLE(
        'Stores'
        ,'Measures'
    )
)

%StoresSelling:=
DIVIDE( [StoresWithSales], [AllStores] )

第一项措施将始终返回“商店”中的商店总数。表,不管数据透视表中的任何过滤器上下文。

第二个使用magic of cross table filtering过滤商店&#39;只有那些在&#39; Measures&#39;中具有至少一个相应行的行。基于&#39; Measures&#39;当前存在的任何过滤器上下文。可以认为它与SQL中的以下内容基本相同:

SELECT
    COUNT(1)
FROM Stores
WHERE EXISTS (SELECT 
                  COUNT(1)
              FROM Measures
              WHERE Measures.StoreKey = Stores.StoreKey
                AND <whatever filter context exists on Measures>
             );