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: 
Not applicable

Store Incremental QVD

Boa tarde,

Gostaria de saber se é possível, baseado em uma query que tenha dados de vários anos, quebrar em vários QVDs com nome distintos?

A query me traz tudo junto e eu queria fazer o STORE baseado no Ano.

Exemplo:

Balancete:

LOAD *

  FROM  QVD_Balancete.qvd (QVD);

STORE * FROM Balancete INTO Balancete_2013.qvd (QVD);

STORE * FROM Balancete INTO Balancete_2014.qvd (QVD);

STORE * FROM Balancete INTO Balancete_2015.qvd (QVD);

STORE * FROM Balancete INTO Balancete_2016.qvd (QVD);

Ou terei de fazer "n" LOADs usando EXISTS(ANO) por cada STORE, sabendo que eu já tenho 1 QVD principal com todos os dados???

Obrigado

4 Replies
Anonymous
Not applicable
Author

hi joao,

try:

//Yearly QVD:

TempTable:
LOAD Distinct Year(Date) AS Year
FROM QVD\Main.qvd(qvd)
Order by Year(Date) asc;

NoConcatenate

Table:
Load Year,Min(Year) as minYear, max(Year) as maxYear
Resident TempTable;

Let vMin=Peek('minYear', 0, 'Table');
Let vMax=Peek('maxYear', 0, 'Table');

FOR i=$(vMin) to $(vMax)
LET vYear = Peek('Year',$(i),'Table');

YearWise:
NoConcatenate
LOAD * FROM QVD\Main.qvd(qvd)
Where Year(Date) = '$(vYear)';

STORE YearWise into TableName_$(vYear).qvd;
DROP Table YearWise;

Next

DROP Table TempTable;
DROP Table Table;

maxgro
MVP
MVP

// test data

Balancete:

load

  2013 + floor(rand()*4) as ano

AutoGenerate 1000;

STORE Balancete into QVD_Balancete.qvd (qvd);

DROP Table Balancete;

// elab

for i=2013 to 2016

  e: load $(i) as ano AutoGenerate 1;


  Balancete_$(i):

  NoConcatenate load *

  from QVD_Balancete.qvd (qvd)

  where Exists(ano);

  STORE Balancete_$(i) into Balancete_$(i).qvd (qvd);


  DROP Table Balancete_$(i), e;

NEXT;

Not applicable
Author

Olá João,

Dei uma pesquisada e a solução proposta em Split one big QVD file into multiple

parece bem simples.

No caso você usaria um loop do tipo 'for' para não precisar criar múltiplos loads na mão.

E ao invés de usar exists, você pode simplesmente usar um WHERE.

maxgro
MVP
MVP

exists is for an optimized load

where isn't optimized