2015-12-24 53 views
0

獨特的商店銷售的產品,我不是太有經驗豐富的DAX指數,和我的老闆問我要一些指標這似乎過去我的能力。具體而言,她想知道商店中有多少商店正在銷售。
我們有一個商店表是在與措施一對多關係表[STORE_ID]相關的表。所述表也與1到M向措施表由[ITEM_ID]。在措施表包含除其他事項外,其表示,項目的每週[出售]。如何計算的PowerPivot

我的當前邏輯一直到這個問題分成兩個更簡單的部件,(商店銷售產品)/(總存儲)。發現店面表中的店面總數很容易分開,下一個更加困難。我試過Stores_Selling_Product = countrows(filter(filter(Measures, earlier(measures[ITEM_ID]) = measures[ITEM_ID]), EARLIER(Measures[STORE_ID]) <> Measures[STORE_ID])),但我發現只排除與當前商店ID匹配的商店。有沒有辦法排除已經計數的商店?

如果有幫助,還有一個二元單元[SoldInStore],如果該零部件在該零售店中出售,則爲1 [2]。我非常肯定,我將不得不使用除countrows以外的其他東西,但我不知道在哪裏看。任何建議會超級好。在此先感謝, -Mudkip。

回答

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

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

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

無論透視表中的任何過濾器上下文如何,第一個度量將始終返回「商店」表中的商店總數。

第二個利用magic of cross table filtering將'Stores'過濾爲'Measures'中當前存在的任何過濾器上下文中只有'Measures'中至少有一個相應行的行。可以認爲它基本上與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> 
      ); 
+0

嘿,感謝您的解決方案!對不起,遲到的迴應,聖誕節推遲了我。這對我來說很有意義,但實現它有點時髦。我發現當我在calculatetable(calculatetable(store,Measures))的filter部分中沒有條件地實現這個時,它會按預期方式返回存儲表中的每個存儲。但是每當我用一個實際的過濾器(如Measures [Store with sales] = 1)替換一般'措施'時,它每次都會返回1。任何想法爲什麼這是? – Mudkip

+0

我不太知道我理解的問題,但也許這解決了你問:當你操縱的關係和背景,你必須單獨做這些,因此,基於在措施領域應用過濾器的參數,你」 d具有使用雙重嵌套CALCULATE():計算(COUNTROWS(CALCULATETABLE( '商店', '措施')),<濾波器上 '措施'>)內CALCULATETABLE()調節關係導航,外CALCULATE()調整關係中使用的度量值的過濾器上下文。 – greggyb

+0

啊哈,謝謝你澄清。額外的計算是我需要的。 – Mudkip