2017-08-03 91 views
0

DAXで次のことが可能ですか?DAX計算された列の計算式 - パズル

以下のA、B、C、D、E、..成熟Buckets.Aが負のバケットであるが、Bは正のバケットである

バケット量

-100

B 90

C -200

D 300

E -10

F 30

H -2

要件は、各負amount.Theルールのバランスを計算することである正の量が次の前のバケットにマイナスの金額を控除後ことはできませんがあります。 この正の残差は次の利用可能なバケットに流れることができる

したがって、現在の負のバケットの残差=(前回の負のバケットの残差)+(前回の正のバケット量のSUm +前の負のバケット)+現在の負のバケット量のため

:以前のバケツには正の量

がCのため存在しないように-100、バランスは、0:-200、バランス=(90 + -200)= -110、このよう負の数です。次のバケットには使用されません。

E:-10、ba lance =(0)+ 300-10 = 290 cの前の残高は負であり、これは0として扱われるか無視される必要があります。 Hため

:-2、バランス=(290)+ 30から2 = 318

私は以前の関数を使用して計算カラムを使用して、DAXでこれを試みたが、前を検索する方法を理解することができませんでし循環的な依存性のエラーを投げます。

+0

これは面白いパズルです。私はこれをExcel式でかなり簡単に行うことができますが、DAXの循環依存関係を回避する方法を理解することはできません。私のExcelワークシートは、計算のために金額とDに列Bを使用します。 B1に列タイトルがあり、D1にゼロ(0)があります。金額はB2から始まります。私は '= IF(D1> 0、B2 + D1、B2)> 0、IF(D1> 0、B2 + D1、B2)、0)'をD2に入れ、それを列の下にコピーしたセル参照はコピー中に調整されるので、D3ではIF =(IF> 0、B3 + D2、B3> 0、IF(D2> 0、B3 + D2、B3)、0) 'を持ちます。 ..それは面白いです。 –

答えて

1

追加の列を1つ追加するのは理想的ではありませんが、3つのカスタム列を使用して期待される結果を生成することができました。 (注 - これはPowerBIを使用したので、Tabularモデルの場合はすべて同じです)

1)データにインデックスカラムを追加してください。

Step 1 - Index Column

2)は、前行の量が正の場合)(前行に各行の量を加算する列を追加します。

Step1 = IF(Data[Index] = 0, 0, 
    Data[Amount] + IF(
     LOOKUPVALUE(Data[Amount], Data[Index], Data[Index] - 1) > 0, 
     LOOKUPVALUE(Data[Amount], Data[Index], Data[Index] - 1), 
     0 
    ) 
) 

Step 2

3)前の行の結果が肯定的である場合には(結果の前の行の最初の式の各行の量を加算するカラム)

Step2 = IF(Data[Index] = 0, 0, 
    Data[Amount] + IF(
     LOOKUPVALUE(Data[Step1], Data[Index], Data[Index] - 1) > 0, 
     LOOKUPVALUE(Data[Step1], Data[Index], Data[Index] - 1), 
     0 
    ) 
) 

Step 3を追加

4)最後に、各行の量を前の行の2番目の数式の結果に加算する列を追加します。

FinalResults = IF(Data[Index] = 0, 0, 
    IF(Data[Amount] > 0, 0, Data[Amount] + 
     IF(
      LOOKUPVALUE(Data[Step2], Data[Index], Data[Index] - 1) > 0, 
      LOOKUPVALUE(Data[Step2], Data[Index], Data[Index] - 1), 
      0 
     ) 
    ) 
) 

Step 4

この方法は、データの異なるセットのために働くだろうかどうかは正直わかりませんが、それはこの1のために動作します。

前の行を取得するためにLOOKUPVALUEを使用することについてのアイデアについては、Darren Fullerの小道具。彼のブログ記事hereをチェックしてください。

関連する問題