Qlik Community

New to Qlik Sense

Discussion board where members can get started with Qlik Sense.

ernestolmalves
New Contributor III

Balancete, Saldo anterior

Bom dia,

Alguém pode me ajudar e me dar uma ideia de como calcular a última coluna da tabela abaixo, SALDOMÊS ?

Já tentei com Aggr, rangesum, peek, etc, mas ainda não achei uma forma correta.

     

CODIGOEMPRESACODIGOESTABCONTACTBDATASALDOVALORDEBVALORCREDSALDOMÊS
5991112017-12-018997490899749,00
5991112018-01-011930832,22830571,1910,00
5991112018-02-011159772,51133074,4726708,00
5991112018-03-011881628,21908326,2410,00
5991112018-04-01767886,44741104,2426792,20
5991112018-05-01772650,66799432,8610,00
5991112018-06-01967849,2967849,210,00

Desde já agradeço pela atenção.

1 Solution

Accepted Solutions
ernestolmalves
New Contributor III

Re: Balancete, Saldo anterior

Eu consegui resolver.

Usando uma combinação de previous() e peek(), cheguei no resultado que esperava.

    If(Previous(AutoNumberHash128(CODIGOEMPRESA,CODIGOESTAB,CONTACTB))=AutoNumberHash128(CODIGOEMPRESA,CODIGOESTAB,CONTACTB),

    If(Peek(ContaSaldo,-2)=AutoNumberHash128(CODIGOEMPRESA,CODIGOESTAB,CONTACTB),

                (Peek(SALDOCTBMES,-2)-Previous((VALORCRED-VALORDEB)))-(VALORCRED-VALORDEB), //

                Previous((VALORDEB-VALORCRED))-(VALORCRED-VALORDEB)),

(VALORDEB-VALORCRED)

) as SALDOCTBMES

Fica a dica para quem precisar de algo parecido.

10 Replies
guitartrova
Contributor III

Re: Balancete, Saldo anterior

Try

=([VALORDEB]-[VALORCRED])

ernestolmalves
New Contributor III

Re: Balancete, Saldo anterior

SALDOMÊS = SALDOMÊS_ANTERIOR-(VALORDEB-VALORCRED)

guitartrova
Contributor III

Re: Balancete, Saldo anterior

Try

let vMaxDate  = '=max(DATASALDO)'& chr(39) & 'DD MMM YYYY' & chr(39) & ')';

let vMaxDay   = '=day(max(DATASALDO))';

let vMaxMonth  = '=month(max(DATASALDO))';

let vMaxYear  = '=max(Year)';

let vPriorMonth  = '=month(addmonths(max(DATASALDO),-1))';

let vPriorMonthYear = '=Year(addmonths(max(DATASALDO),-1))';

let vPriorYear  = '=vMaxYear-1';

let vPriorYearDate = '=date(addyears(max(DATASALDO),-1),' & chr(39) & 'DD MMM YYYY' & chr(39) & ')';

[table]:

load

codigoemprea,

codigoestab,

Year([DATASALDO]) as Year,

Month(DATASALDO) as Month,

Day(DATASALDO) as Day,

Date(monthstart(DATASALDO), 'MM-YYYY') as MonthYear;

select * from table;

-------------

SALDOMÊS_ANTERIOR = (SUM({<Year={'$(vPriorMonthYear)'},Month={'$(vPriorMonth)'},Day={'<=$(vMaxDay)'},Date=,MonthYear=>}SALDOMÊS)


SALDOMÊS = SUM({<Year={'$(vPriorMonthYear)'},Month={'$(vPriorMonth)'},Day={'<=$(vMaxDay)'},Date=,MonthYear=>}SALDOMÊS)


-


(VALORDEB-VALORCRED)


)

ernestolmalves
New Contributor III

Re: Balancete, Saldo anterior

Mario,

A coluna SALDOMÊS não existe no BD, é a que preciso calcular, sempre pegando o Saldo_Anterior.

Pelo que entendi, fiz o script assim :

let vMaxDate  = '=max(DATASALDO)'& chr(39) & 'DD MMM YYYY' & chr(39) & ')';

let vMaxDay   = '=day(max(DATASALDO))';

let vMaxMonth  = '=month(max(DATASALDO))';

let vMaxYear  = '=max(Year)';

let vPriorMonth  = '=month(addmonths(max(DATASALDO),-1))';

let vPriorMonthYear = '=Year(addmonths(max(DATASALDO),-1))';

let vPriorYear  = '=vMaxYear-1';

let vPriorYearDate = '=date(addyears(max(DATASALDO),-1),' & chr(39) & 'DD MMM YYYY' & chr(39) & ')';

TempTable_Data:

Load

AutoNumberHash128(CODIGOEMPRESA,CODIGOESTAB,CONTACTB) as %Conta,

    CODIGOEMPRESA,

    CODIGOESTAB,

    CONTACTB,

    DATASALDO,

    VALORDEB,

    VALORCRED

FROM [lib://DOCS/SALDOCTBMENSAL.qvd](qvd);

DATA:

Load

    AutoNumberHash128(CODIGOEMPRESA,CODIGOESTAB,CONTACTB) as %Conta,

CODIGOEMPRESA,

CODIGOESTAB,

    CONTACTB,

Year([DATASALDO]) as Year,

Month(DATASALDO) as Month,

Day(DATASALDO) as Day,

Date(monthstart(DATASALDO), 'MM-YYYY') as MonthYear,

    DATASALDO,

    VALORDEB,

    VALORCRED

    Resident TempTable_Data

    Order by CODIGOEMPRESA,CODIGOESTAB,CONTACTB,DATASALDO;

   

Drop Table TempTable_Data;   

Agora para ter a coluna SALDOMÊS eu faria no set analysis em uma tabela, ou no script, mas é essa parte que não está dando certo.

guitartrova
Contributor III

Re: Balancete, Saldo anterior

Try calculating the current month's balance


SALDOMÊS CURRENT =

SUM({<Year={'$(vMaxYear)'},Month={'$(vMaxMonth)'},Day={'<=$(vMaxDay)'},Date=,MonthYear=>}(VALORDEB-VALORCRED)

ernestolmalves
New Contributor III

Re: Balancete, Saldo anterior

Ainda não deu certo.

SaldoMês.PNG

guitartrova
Contributor III

Re: Balancete, Saldo anterior

Ernesto

Could you pass your file to check it?

ernestolmalves
New Contributor III

Re: Balancete, Saldo anterior

Segue, QVF e QVD...

guitartrova
Contributor III

Re: Balancete, Saldo anterior

QVF With loaded data

Community Browser