Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Want to see what's currently in public preview? We've pulled it all together in one place. Check it out here
cancel
Showing results for 
Search instead for 
Did you mean: 
fonmarcelo
Contributor III
Contributor III

Erro rangesum com count - Script

Boa tarde!

Tenho o seguinte script:

DOENCAS:

LOAD

  KEY_LINKTABLE,

RangeMax(0,

  if (

  RangeSum(

      (If(Count(DISTINCT IF(FATO_DOENCA = 'DIABETES',FATO_NUMERO_GUIA)>2,3,0))),

      (If(Count(DISTINCT IF(FATO_GRUPO_EXAME = 'EXAM_Hemoglobina',FATO_NUMERO_GUIA)>0,3,0))),

      (If(Count(DISTINCT IF(FATO_GRUPO_EXAME = 'EXAM_Glicose',FATO_NUMERO_GUIA)>1,2,0))),

      (If(Count(DISTINCT IF(FATO_GRUPO_EXAME = 'EXAM_MicroAlbuminura',FATO_NUMERO_GUIA)>0,1,0))),

      (If(Count(DISTINCT IF(FATO_GRUPO_EXAME = 'PROC_Amputacao', FATO_NUMERO_GUIA)>0,1,0)))

  )>=5, 'S'

  )

  ) AS DOENCA_DIABETES

RESIDENT BASE

GROUP BY KEY_LINKTABLE;

E quando executamos, acontece o erro "Error in expression: Count takes 1 parameter"

Alguém poderia me ajudar com este erro?

Labels (1)
1 Solution

Accepted Solutions
paulovendruscol
Creator
Creator

‌Marcelo, conforme print enviado por você, o "editor de escript" já está acusando algo "errado" na sua estrutura. Faça um teste:

No meu post anterior eu postei a sua estrutura com alguns ajustes, pegue essa estrutura e teste no seu modelo para verificar se o erro continua ou não.

View solution in original post

5 Replies
paulovendruscol
Creator
Creator

Marcelo,

Em princípio os parenteses não foram fechados na posição correta. Se for possível, informar mais detalhes da sua necessidade.

Exemplo:

DOENCAS:

LOAD

  KEY_LINKTABLE,

RangeMax(0,

  if (

  RangeSum(

      if(Count(DISTINCT if(FATO_DOENCA = 'DIABETES',FATO_NUMERO_GUIA))>2,3,0),

      if(Count(DISTINCT if(FATO_GRUPO_EXAME = 'EXAM_Hemoglobina',FATO_NUMERO_GUIA))>0,3,0),

      if(Count(DISTINCT if(FATO_GRUPO_EXAME = 'EXAM_Glicose',FATO_NUMERO_GUIA))>1,2,0),

      if(Count(DISTINCT if(FATO_GRUPO_EXAME = 'EXAM_MicroAlbuminura',FATO_NUMERO_GUIA))>0,1,0),

      if(Count(DISTINCT if(FATO_GRUPO_EXAME = 'PROC_Amputacao', FATO_NUMERO_GUIA))>0,1,0))>=5,'S')) AS DOENCA_DIABETES

RESIDENT BASE

GROUP BY KEY_LINKTABLE;

Abs

fonmarcelo
Contributor III
Contributor III
Author

Olá Paulo!

Obrigado pelo contato.

A estrutura de parênteses está correta, não consegui identificar algum erro.

Preciso que o RangeSum totalize as 5 linhas, e o IF fará a verificação: Se for maior ou igual a 5, então classifico como "S". Não tenho valor se_falso.

ERRO RANGESUM_ll.jpg

O script está acusando o erro, mas, não consegui identificar onde.

paulovendruscol
Creator
Creator

‌Marcelo, conforme print enviado por você, o "editor de escript" já está acusando algo "errado" na sua estrutura. Faça um teste:

No meu post anterior eu postei a sua estrutura com alguns ajustes, pegue essa estrutura e teste no seu modelo para verificar se o erro continua ou não.

fonmarcelo
Contributor III
Contributor III
Author

Obrigado, funcionou!

Havia fechado os parenteses no local errado.

paulovendruscol
Creator
Creator

Marcelo,

Uma observação: Não se esqueça que na sua estrutura você está utilizando a função RangeMax, ou seja, se o RangeSum retornar "S", o resultado final será 0 por conta do RangeMax(0,S).