Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
savio_bueno
New Contributor III

Expressão calculada

Olá a todos.


Galera, estou precisando de uma luz de vocês em relação a uma expressão a ser utilizada em um gráfico, onde tenho um valor informado em uma variável (vValorContratado) que vai decrescendo em relação ao Valor Executado (consumo).

O gráfico deve apresentar o Valor Executado (consumo), com sua média, e o Valor Contratado (Saldo disponível) atualizado por mês.

ValorExecutado.jpg

Fiz numa planilha do excel ,a simulação dos valores, de como devem ser apresentados, onde a formula seria:

Mês (Dimensão)Total MensalSaldo Disponível
Mar729.594,49R$ 7.638.817,00
Abr802.661,31R$ 6.836.155,70
Mai756.010,01R$ 6.080.145,69
Jun808.283,62R$ 5.271.862,07
Jul788.002,24R$ 4.483.859,83
Ago839.573,62R$ 3.644.286,21
Set835.640,39R$ 2.808.645,82
Out782.371,99R$ 2.026.273,83
Nov825.732,10R$ 1.200.541,73
Dez799.209,25R$ 401.332,48

Lembrando que o valor contratado, utilizado na primeira conta é de R$ 8.368.411,49, ou seja: vValorContratado - Sum(SaldoDisponivel) sendo 8.368.411,49 - 729.594,49 = 7.638.817,00.

Em Abril o valor a ser calculado como Valor Contratado é 7.638.817,00 - 802.661,31 = 6.836.155,70 e assim por diante. É aí que não estou conseguindo resolver e conto com o apoio de vocês.

Agradeço antecipadamente a atenção dispensada.

1 Solution

Accepted Solutions
savio_bueno
New Contributor III

Re: Expressão calculada

Bom senhores, consegui a solução com um grande amigo Hudson Faria, que é consultor na IN Brasília.

A solução foi realizada na carga, utilizando o script abaixo:

________________________________________________________________________________________

let vInicio = num(MakeDate(2016,6));
let vQtdeMeses = 6;

//CRIA A TABELA, PADRAO COM AS DATAS E VALORES APENAS DOS MESES QUE EXISTEM
ExecutadoTMP:
LOAD DATE(DATE#(Referencia,'MM/YYYY'),'MM/YYYY') as Referencia,
ValorRenovado;
LOAD * INLINE [
    Referencia,     ValorRenovado
    $(vDataValorContratado),  $(vValorContratado)
];

Outer JOIN

LOAD DATE(DATE#(Referência_EO,'YYYY/MM'),'MM/YYYY') as Referencia,
ValorExecutado;
LOAD
Referência   AS Referência_EO,
[Valor Executado] AS ValorExecutado
FROM [..\TABELAS\Execucao_Orcamentaria.xlsx] (ooxml, embedded labels, table is Planilha1, filters(Remove(Row, Pos(Top, 11)), Remove(Row, Pos(Top, 3)), Remove(Row, Pos(Top, 2)) ));


Concatenate

//Cria os meses que nao existem na base e concatena na tabela de cima
Calendario:
LOAD DATE(AddMonths($(vInicio),(RowNo()-1)),'MM/YYYY') as Referencia
AutoGenerate $(vQtdeMeses);

________________________________________________________________________________________

De qualquer forma agradeço muito a atenção daqueles que tiraram seu tempo a ajudar, aqui na comunidade.

Abraço.

4 Replies
JacksonAlfonso
Contributor

Re: Expressão calculada

Nesse post, tem uma resposta do nicolett.yuri, que resolve essa sua questão.

Re: Como preencher dinamicamente o valor de saldo de uma tabela

marcelviegas
Contributor II

Re: Expressão calculada

A ordem é o mes?

savio_bueno
New Contributor III

Re: Expressão calculada

Sim.

Na primeira imagem, onde tem o gráfico com o Valor Executado, penso em colocar o gráfico do Saldo Disponível. Uma linha que deve ser negativa.

savio_bueno
New Contributor III

Re: Expressão calculada

Bom senhores, consegui a solução com um grande amigo Hudson Faria, que é consultor na IN Brasília.

A solução foi realizada na carga, utilizando o script abaixo:

________________________________________________________________________________________

let vInicio = num(MakeDate(2016,6));
let vQtdeMeses = 6;

//CRIA A TABELA, PADRAO COM AS DATAS E VALORES APENAS DOS MESES QUE EXISTEM
ExecutadoTMP:
LOAD DATE(DATE#(Referencia,'MM/YYYY'),'MM/YYYY') as Referencia,
ValorRenovado;
LOAD * INLINE [
    Referencia,     ValorRenovado
    $(vDataValorContratado),  $(vValorContratado)
];

Outer JOIN

LOAD DATE(DATE#(Referência_EO,'YYYY/MM'),'MM/YYYY') as Referencia,
ValorExecutado;
LOAD
Referência   AS Referência_EO,
[Valor Executado] AS ValorExecutado
FROM [..\TABELAS\Execucao_Orcamentaria.xlsx] (ooxml, embedded labels, table is Planilha1, filters(Remove(Row, Pos(Top, 11)), Remove(Row, Pos(Top, 3)), Remove(Row, Pos(Top, 2)) ));


Concatenate

//Cria os meses que nao existem na base e concatena na tabela de cima
Calendario:
LOAD DATE(AddMonths($(vInicio),(RowNo()-1)),'MM/YYYY') as Referencia
AutoGenerate $(vQtdeMeses);

________________________________________________________________________________________

De qualquer forma agradeço muito a atenção daqueles que tiraram seu tempo a ajudar, aqui na comunidade.

Abraço.