Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
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