3 Replies Latest reply: Jul 8, 2016 11:48 AM by Gustavo Souza RSS

    Criar uma variável no Script

    Gustavo Souza

      Estou necessitando incluir a função group by no Script abaixo para poder criar uma variável com agregação.

      As linhas a serem criadas estão comentadas (//) no Script.

      Alguém poderia me informar como incluo o "group by" neste Script para poder rodar as variáveis que pretendo criar?

      Obrigado.

       

      LOAD

          Seq.,

          "Data O.S.

      (Aberta)" as "Data O.S.(Aberta)",

          "Nº O.S.

      Aberta" as "Nº O.S.Aberta",

          Date (Data) as Data, Year (Data) as Ano, Month(Data) as Mes,

          "Nº O.S.

      Fechada" as "Nº O.S.Fechada",

          "Horímetro

      (revisão)" as "HORÍM. ULTIMA REVISÃO",

          "Horas

      revisado" as Horasrevisado,

          "Próxima

      Revisão" as "Próxima Revisão",

          "+ (Atrasado)

      - (Adiantado)" as "Atraso / Antecipação",

          "Horas

      (restantes)" as "Horas (Restantes)",

          "Alerta

      < 100" as "Alerta< 100",

          "Alerta

      < 50" as "Alerta< 50",

          "Alerta

      < 0" as "Alerta< 0",

          Revis.,

          "Revisão

      (Horimetro)" as "Horímetro da Revisão",

          Prefixo

       

      //    Max('Próxima Revisão') as "HOR.U.R."

      // Uma opção seria identificar a máxima revisão para depois efetuar o cálculo com esta máxima   

      //    If('HOR.U.R' - 'Horímetro Atual' < 100, 'ALERTA < 100', 'Ok') as STATUS

      // ou fazer o cálculo direto com este máximo:  

      //    If((Max('Próxima Revisão')) - 'Horímetro Atual' < 100 , 'ALERTA < 100', 'Ok') as STATUS

         

      FROM [lib://BaseRevisao/CONTROLE REVISAO 1.xlsx]

      (ooxml, embedded labels, header is 2 lines, table is [CMF-0083], filters(

      ColXtr(3, RowCnd(Interval, Pos(Top, 1), Pos(Top, 1), Select(1, 0)), 0),

      Replace(17, top, StrCnd(null)),

      Remove(Row, RowCnd(Interval, Pos(Top, 1), Pos(Top, 8), Select(1, 0))),

      Top(17, 'Prefixo'),

      Remove(Row, RowCnd(CellValue, 6, StrCnd(null)))

      ));

        • Re: Criar uma variável no Script
          Yuri Nicolett

          Gustavo, sempre que for utilizar uma agregação, como o MAX, você deve incluir todos os demais campos da sua tabela no group by, mas fique atento, pois essa agregação vai considerar todas essas dimensões.

           

          No exemplo abaixo, vou recuperar o maior valor da coluna CAMPO5, porém será o maior valor considerando as quebras dos demais campos.

           

          Tabela:

          LOAD

          CAMPO1,

          CAMPO2,

          CAMPO3,

          CAMPO4,

          MAX(CAMPO5) as MaiorValorCampo5

          FROM Tabela.qvd (qvd)

          GROUP BY

          CAMPO1,

          CAMPO2,

          CAMPO3,

          CAMPO4;

            • Re: Criar uma variável no Script
              Yuri Nicolett

              Considerando o seu exemplo, acho melhor fazer um resident e depois um group by:

               

              Tabela_Tmp:

              LOAD

                  Seq.,

                  "Data O.S.

              (Aberta)" as "Data O.S.(Aberta)",

                  "Nº O.S.

              Aberta" as "Nº O.S.Aberta",

                  Date (Data) as Data, Year (Data) as Ano, Month(Data) as Mes,

                  "Nº O.S.

              Fechada" as "Nº O.S.Fechada",

                  "Horímetro

              (revisão)" as "HORÍM. ULTIMA REVISÃO",

                  "Horas

              revisado" as Horasrevisado,

                  "Próxima

              Revisão" as "Próxima Revisão",

                  "+ (Atrasado)

              - (Adiantado)" as "Atraso / Antecipação",

                  "Horas

              (restantes)" as "Horas (Restantes)",

                  "Alerta

              < 100" as "Alerta< 100",

                  "Alerta

              < 50" as "Alerta< 50",

                  "Alerta

              < 0" as "Alerta< 0",

                  Revis.,

                  "Revisão

              (Horimetro)" as "Horímetro da Revisão",

                  Prefixo  

              FROM [lib://BaseRevisao/CONTROLE REVISAO 1.xlsx]

              (ooxml, embedded labels, header is 2 lines, table is [CMF-0083], filters(

              ColXtr(3, RowCnd(Interval, Pos(Top, 1), Pos(Top, 1), Select(1, 0)), 0),

              Replace(17, top, StrCnd(null)),

              Remove(Row, RowCnd(Interval, Pos(Top, 1), Pos(Top, 8), Select(1, 0))),

              Top(17, 'Prefixo'),

              Remove(Row, RowCnd(CellValue, 6, StrCnd(null)))

              ));

               

              Tabela:

              NoConcatenate

              LOAD

              *,

                  Max([Próxima Revisão]) as [HOR.U.R.],

                  If(Max([Próxima Revisão]) - [Horímetro Atual] < 100, 'ALERTA < 100', 'Ok') as STATUS

              RESIDENT Tabela_Tmp

              GROUP BY

                  Seq.,

                  [Data O.S.(Aberta)],

                  [Nº O.S.Aberta],

                  Data,

                  Ano,

                  Mes,

                  [Nº O.S.Fechada],

                  [HORÍM. ULTIMA REVISÃO],

                  [Horasrevisado],

                  [Próxima Revisão],

                  [Atraso / Antecipação],

                  [Horas (Restantes)],

                  [Alerta< 100],

                  [Alerta< 50],

                  [Alerta< 0],

                  [Revis.],

                 [Horímetro da Revisão],

                  [Prefixo];

               

              DROP TABLE Tabela_Tmp;