2015-12-29 28 views
0

我有這個表不同的值總結:如何在該組的其他值

Family_ID Person_ID Weight Spent_amount category 
A   1   10  500  flight 
A   2   10  500  flight 
A   1   10  200  Hotel 
A   2   10  200  Hotel 
B   3   20  250  flight 
B   3   20  300  Hotel 

我們在這裏看到每個家庭都有成員和每個爲家庭而不是個人計算類別的費用。正如我們所看到的,並不是每個家庭都與其他家庭相等,但它有體重,因此每一次的消費都應該乘以家庭重量。 現在我的目標是編寫一個度量花在每個家庭

我寫了一個公式,但我看到了很複雜的,我想給它一個錯誤的值。法蘭克福股市DAX公式我寫的是

cash_wieght:=SUMX (
    SUMMARIZE (
s2g516_full, 
s2g516_full[DIM_HOUSEHOLD_REF_ID], 
"cash", CALCULATE (MAXX (SUMMARIZE (
s2g516_full, 
    s2g516_full[Persons], 
    s2g516_full[DIM_HOUSEHOLD_REF_ID] ,"cash1", CALCULATE (Sum(s2g516_full[SPENT_PER_REASON])*MAX (s2g516_full[Weight])) 
/distinctcount(s2g516_full[person]) ),[Cash1])) 
), 
    [cash] 
) 

當我帶着樣品與family_ID過濾,它給了我正確的數字樣品測試,但也許不是他們。那麼如何判斷我是否得到了正確的結果呢?

我想要的結果是要進行求和,並與family_ID過濾彷彿PERSON_ID不是像表weight * spent_amount:「如果我在過濾Family_ID」

A 700*10 
B 550 *20 

回答

0

首先,DAX Formatter是你的朋友。

cash_wieght := 
SUMX (
    SUMMARIZE (
     s2g516_full, 
     s2g516_full[DIM_HOUSEHOLD_REF_ID], 
     "cash", CALCULATE (
      MAXX (
       SUMMARIZE (
        s2g516_full, 
        s2g516_full[Persons], 
        s2g516_full[DIM_HOUSEHOLD_REF_ID], 
        "cash1", CALCULATE (
         SUM (s2g516_full[SPENT_PER_REASON]) * MAX (s2g516_full[Weight]) 
        ) 
         /DISTINCTCOUNT (s2g516_full[person]) 
       ), 
       [Cash1] 
      ) 
     ) 
    ), 
    [cash] 
) 

在那之後,我覺得你有與總結()正確的直覺,但它可以比你正在做的事情要簡單得多。按照您傳遞給它的表中的字段對SUMMARIZE()進行分組。由於具有相同[Family_ID]的成員在給定[類別]中的[Spent_Amount]具有相同的值,因此我們所需要做的就是將表中除[Person_ID]之外的所有內容組合在一起。

cash_wieght:= 
SUMX (
    SUMMARIZE(
     FactSpend 
     ,FactSpend[Family_ID] 
     ,FactSpend[Weight] 
     ,FactSpend[Category] 
     ,FactSpend[Spent_Amount] 
    ) 
    ,FactSpend[Weight] * FactSpend[Spent_Amount] 
) 

在這裏,我們使用總結()來組由[Family_ID],[重量],[類別]和[Spent_Amount]。由於加法和乘法是可交換的,因此,如果我們先加或先乘,那並不重要。因此,我們使用SUMX()迭代由SUMMARIZE()返回的每一行,並累計爲該分組表中每行的[Weight] * [Spent_Amount]值的總和。

下面是我的示例數據和基於此度量正確執行的數據透視表的圖像。當從表中添加任何屬性以過濾上下文時,它也可以工作。如果一個[Person_ID]在上下文中,則該度量將返回該家庭的值,並且在家庭級別將返回該家庭的值。如有必要,我們可以改變措施只給出[Person_ID]的[Family_ID]整個部分。

enter image description here

+0

謝謝你看起來棒極了..但是這是真正的表的樣本......如果表包括許多列的我應該包括他們所有的分組? – ray

+0

包含最小數量的字段,它們可以爲您提供合適的值的基數。如果[Opportunity_ID]唯一標識了該值,並且我期望它應該,那麼這就是您所需要的。 – greggyb

相關問題