我对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。
答案 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>
);