Forum Discussion

belaalva's avatar
belaalva
New Member
1 year ago
Solved

REFERÊNCIA CIRCULAR

Olá, preciso de ajuda para resolver um problema de referência circular que dá no poweer bi - linguagem dax. Esse é o comportamento esperado > preciso calcular a coluna de SALDO (saldo final) ess...
  • lbendlin's avatar
    1 year ago

    The standard way to avoid circular references in DAX is to push the calculation down into Power Query.

     

    But you can also consider changing your whole approach. "Ending Balance"  is just another word for "Running Total".  Rework your formulas (or use quick measures) to calculate the RT instead.

  • AmiraBedh's avatar
    1 year ago

    You can use a combination of variables and iterative functions.

    You need to calculate the previous balance for each row, filtered by the same matricula.

    Saldo Anterior = 
    VAR CurrentMatricula = 'Equacionamento_Query'[Matrícula]
    VAR CurrentOcorrencia = 'Equacionamento_Query'[Ocorrência]
    RETURN
        CALCULATE(
            MAX('Equacionamento_Query'[Saldo Final]),
            FILTER(
                'Equacionamento_Query',
                'Equacionamento_Query'[Matrícula] = CurrentMatricula &&
                'Equacionamento_Query'[Ocorrência] = CurrentOcorrencia - 1
            )
        )

    and another calculated column for the final balance using the previous balance and the current values :

    Saldo Final = 
    VAR Atualizacao = 'Equacionamento_Query'[AtualizaçãoCota.Cota]
    VAR Valor = 'Equacionamento_Query'[VL EQ. PARTIC]
    VAR SaldoAnterior = 'Equacionamento_Query'[Saldo Anterior]
    RETURN
        IF(
            ISBLANK(SaldoAnterior),
            Valor,
            SaldoAnterior * Atualizacao + Valor
        )