Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
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.