Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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)))
));
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;
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;
Yuri,
Rodou bem.
Obrigado pelo apoio.
De: Yuri Nicolett
Enviada em: sexta-feira, 8 de julho de 2016 09:43
Para: Gustavo Souza <gustavo@consorciominafabrica.com.br>
Assunto: Re: - Criar uma variável no Script
<https://community.qlik.com/resources/images/palette-1004/headerLogo-1391206184624-QlikCommunity_logo.gif>