Skip to main content
Announcements
YOUR OPINION MATTERS! Please take the Qlik Experience survey you received via email. Survey ends June 14.
cancel
Showing results for 
Search instead for 
Did you mean: 
Clever_Anjos
Employee
Employee

Calculando acumulados com tabelas "AsOf"

É comum em QlikView (ou Sense) termos uma solicitação de implementar uma tabela (ou gráfico) contendo o acumulado do ano em uma coluna.

Capturar2.pngCapturar.png

Existem várias técnicas para fazer isso, algumas utilizam fórmulas relativamente complexas, valendo-se de funções tais como "RangeSum", "Above", "RowNo", etc. Mesmo assim, sofrem do efeito colateral de que se o usuário fizer um filtro, pode ser que o valor seja comprometido.

Vou ensinar aqui a técnica conhecida como "AsOf", que consiste em gerar um calendário, com "flags" apropriados que irão simplicificar sua análise.

Um exemplo,

Vendas:

LOAD

Date(Today() - RecNo()) as Data,

RecNo() & IterNo() as NumeroNF,

num(round(Rand() * 1000,0.01),'R$ #.##0,00;-R$ #.##0,00') as ValorVenda

AutoGenerate 400 While IterNo() < 5;

Calendario: // Tabela temporaria com todas as datas

LOAD FieldValue('Data',RecNo()) as Data

AUTOGENERATE FieldValueCount('Data');

CalendarioAsOf: // Periodo Atual

LOAD Distinct Data as Data ,

Data as AsOfData ,

'Atual' as AsOfTipo

RESIDENT Calendario;

tmp: LOAD Min(Data) as min Resident Calendario; // Limitador Registros

LET LimiteInferior = num(Peek('min'));

Drop Table tmp;

Concatenate(CalendarioAsOf) // Acumulado Geral

LOAD Distinct num(Data - IterNo() +1) as Data ,

Data as AsOfData ,

'Acumulado Geral' as AsOfTipo

RESIDENT Calendario WHILE num(Data - IterNo() +1) >= $(LimiteInferior);

Com esse código, teremos uma tabela "CalendarioAsOf" que irá conter todas as datas que logicamente compõe o "Acumulado até agora", ou seja todas as datas até aquela data em específico.

Capturar1-300x143.png

Construindo-se uma tabela como essa simplifica enormemente a construção de tabelas acumuladas, onde podemos incluir nessa tabela “CalendarioAsOf” todos as condições que precisarmos: YTD, MTD, LYTD, etc

Baixe aqui uma aplicação para avaliar: qvw

Link

Labels (4)
3 Replies
sergioabr_tocca
Partner - Contributor II
Partner - Contributor II

Muito obrigado por compartilhar.

Thank you for sharing.

nicolett_yuri

Muito bom o post Clever!

AsOf já salvou muitas vidas!

danielmelonatal
Partner - Contributor
Partner - Contributor

Show! Valeu.