2017-04-18 166 views
0

替換空白值我想用其中「DepositLclCcy」不爲空的最大先前值代替空白值,即在這種情況下對於SEK爲5。 如何編寫此公式?DAX POWERPIVOT - 用以前的

當前結果

PositionDate Currency  DepositLclCcy 
2017-04-11  SEK    1 
2017-04-11  DKK    3 
2017-04-11  EUR    7 
2017-04-10  SEK    (blank) 
2017-04-10  DKK    3 
2017-04-10  EUR    5 
2017-04-07  SEK    5 
2017-04-07  DKK    3 
2017-04-07  EUR    5 

所需的結果

PositionDate Currency  DepositLclCcy 
2017-04-11  SEK    1 
2017-04-11  DKK    3 
2017-04-11  EUR    7 
2017-04-10  SEK    5 
2017-04-10  DKK    3 
2017-04-10  EUR    5 
2017-04-07  SEK    5 
2017-04-07  DKK    3 
2017-04-07  EUR    5 

回答

1

您可以使用以下DAX創建計算列:

ReplacedDepositLclCcy = 
IF(
    ISBLANK('Table'[DepositLclCcy]), 
    CALCULATE(
     FIRSTNONBLANK('Table'[DepositLclCcy], 0), 
     FILTER(
      'Table', 
      'Table'[PositionDate] < EARLIER('Table'[PositionDate]) && 
      'Table'[Currency] = EARLIER('Table'[Currency]) && 
      'Table'[PositionDate] = LASTDATE('Table'[PositionDate]) && 
      NOT(ISBLANK('Table'[DepositLclCcy])) 
     ) 
    ), 
    'Table'[DepositLclCcy] 
) 

因此,它基本上過濾與最大的行PositionDate其中有相同的Currency和非空白DepositLclCcy,並返回DepositLclCcy。它也適用於存在連續空白值的情況。

根據數據類型DepositLclCcy,您可能需要將ISBLANK('Table'[DepositLclCcy])更改爲'Table'[DepositLclCcy] = ""

結果:

results

+0

這個公式卻拿起第一個非空值,例如一年回來。我想要最新的非空值。 – Haggan

+0

@Haggan你能分享更多關於細節嗎?正如你可以從上面的例子看到的那樣,它確實返回了最新的非空值。 –