4 Replies Latest reply: Sep 11, 2015 1:56 PM by Massimo Grossi RSS

    Store Incremental QVD

    Joao Valdoleiros

      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

        • Re: Store Incremental QVD
          neetha P

          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;

          • Re: Store Incremental QVD
            Massimo Grossi

            // 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;

            • Re: Store Incremental QVD
              Estela Nunes

              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.

              • Re: Store Incremental QVD
                Massimo Grossi

                exists is for an optimized load

                where isn't optimized