Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Want to see what's currently in public preview? We've pulled it all together in one place. Check it out here
cancel
Showing results for 
Search instead for 
Did you mean: 
Clever_Anjos
Support
Support

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
Partner Ambassador/MVP
Partner Ambassador/MVP

Muito bom o post Clever!

AsOf já salvou muitas vidas!

danielmelonatal
Partner - Contributor
Partner - Contributor

Show! Valeu.