Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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
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;
// 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;
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.
exists is for an optimized load
where isn't optimized