Skip to main content
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
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).