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

Problemas no groupby com resident

Boa tarde a todos, estou enfrentando um problema de sintaxe que não consigo resolver. Alguém poderia me ajudar?

LCTR_TEMP1:

LOAD * Resident LCTR Order by new_idcliente , PESO_CTR , PESO_L_CTR ;

DROP table LCTR;

NoConcatenate

LCTR_TEMP2:

LOAD  * , Count(1)  Resident LCTR_TEMP1 Group by new_idcliente;

DROP table LCTR_TEMP1;

A tabela LCTR tras muitas colunas e por isso estou incluindo o " * ".

Obrigado.

Labels (3)
9 Replies
nicolett_yuri

Qual o erro de sintaxe?

Um erro que detectei foi na tabela LCTR_TEMP2. Ao utilizar uma função de agregação ,você deve fazer o GROUP BY por todas as outras dimensões que esta retornando em sua tabela.

maxgro
MVP
MVP

also

noconcatenate

should go beforeload not before the table name

thiago_mlg
Creator II
Creator II

Bom dia,

Olha esse count(1) que vc está dando na tabela, desculpe, mas não faz sentido. Tente tira-lo e recarregar a tabela. E mesmo que vc desse um count(campo_qualquer) não faria sentido tambem, por que como o select passa registro a registro, se funcionasse no load ele daria sempre 1.

Abraços.

nicolett_yuri

No,

Concatenate or NonConcatenate works after or before the load

Not applicable
Author

Se tiro a função de agregação ele pede uma ela informando erro de sitaxe.

Not applicable
Author

Se tiro, a query pede uma função de agregação.

thiago_mlg
Creator II
Creator II

Sim, ele irá pedir mesmo.

Alem do group by pedir uma função de agregação ele tambem exige que se coloque no group by todos os campos pelo qual vc esta trazendo na query, ou seja, como você está utilizando o script abaixo vc teria de colocar todos os campos.

LCTR_TEMP2:

LOAD  * , Count(1)  Resident LCTR_TEMP1 Group by new_idcliente, campo1, campo2, campo3, campo4, e assim com todos os campos;

Se a sua ideia é agrupar o NEW_IDCLIENTE contando quantos registros vc tem pelo id do cliente faça o seguinte:

LOAD  * , Count(NEW_IDCLIENTE)  Resident LCTR_TEMP1 Group by new_idcliente, campo1, campo2, campo3, campo4, e todos os campos.


Espero tem ajudado.


Thiago Gonçalo

rphpacheco
Creator III
Creator III

Você está utilizando (*) para a leitura dos campos e colocando apenas o new_idcliente dentro do Group By e isso é errado. Todos os campos que não possuem agregação (Sum, Count, etc) deverão estar referenciados no group by. Agora, concordo com o Thiago que este count não faz sentido, uma vez que vc está querendo carregar todos os campos da tabela anterior.

Se queres apenas dar valor de contagem a cada registro de tabela, coloque apenas um simples ('1' as Registro) no lugar deste Count e elimine o Group By.


Abraço!

Clever_Anjos
Employee
Employee

Já conseguiu a resposta? Se sim, escolha uma e marque como "Correta" para fechar o tópico e nos ajudar a manter a comunidade organizada