4 Replies Latest reply: Dec 1, 2015 1:25 PM by Rafael Lima RSS

    Problema com IF - Qlik Sense

    Rafael Lima

      Boa tarde pessoal,

       

      Estou com mais uma dúvida, é o seguinte:

       

      Eu tenho os seguintes IF

       

      if(BMCServiceDesk__Incident__c.BMCServiceDesk__Status_ID__c = 'Closed' and (Interval(Date(BMCServiceDesk__Incident__c.BMCServiceDesk__closeDateTime__c,'DD-MM-YYYY hh:mm:ss') - Date(BMCServiceDesk__Incident__c.BMCServiceDesk__openDateTime__c,'DD-MM-YYYY hh:mm:ss'),'D') = 0),'Cumprido',

       

          if(BMCServiceDesk__Incident__c.BMCServiceDesk__Status_ID__c = 'Closed' and (Interval(Date(BMCServiceDesk__Incident__c.BMCServiceDesk__closeDateTime__c,'DD-MM-YYYY hh:mm:ss') - Date(BMCServiceDesk__Incident__c.BMCServiceDesk__openDateTime__c,'DD-MM-YYYY hh:mm:ss'),'D') >= 1) and (Interval(Date(BMCServiceDesk__Incident__c.BMCServiceDesk__closeDateTime__c,'DD-MM-YYYY hh:mm:ss') - Date(BMCServiceDesk__Incident__c.BMCServiceDesk__openDateTime__c,'DD-MM-YYYY hh:mm:ss'),'D') <= 2),'No Prazo',

       

          if(BMCServiceDesk__Incident__c.BMCServiceDesk__Status_ID__c = 'Pending' and (Interval(Date(BMCServiceDesk__Incident__c.BMCServiceDesk__closeDateTime__c,'DD-MM-YYYY hh:mm:ss') - Date(BMCServiceDesk__Incident__c.BMCServiceDesk__openDateTime__c,'DD-MM-YYYY hh:mm:ss'),'D') > 2),'Atrasado','Estourado'))) as SLA,

       

       

      Eu ainda não descobri mas o problema é que ele só considera o segundo IF e o Else... não sei oque acontece mas os outros dois IF são desconsiderados.

       

      É um simples calculo da quantidade de dias entre abertura e fechamento e dependendo do status ele mostra o SLA.

       

      Atenciosamente,


      Rafael Lima.

        • Re: Problema com IF - Qlik Sense
          Alessandro Furtado

          Rafael, boa tarde.

           

          Olhando o if  não consigo ver erro de logica, visto que se um if não for valido, ira ao próximo....

          Eu "renomeei" os campos para facilitar...

           

           

           

          if(ID = 'Closed' and

             (Interval(DataFechamento - DataAbertura,'D') = 0),'Cumprido',

           

               if(ID = 'Closed'

              and (Interval(DataFechamento

                   - DataAbertura,'D') <= 2) ,'No Prazo',

           

              if(ID = 'Pending'

              and (Interval(DataFechamento

                   - DataAbertura,'D') > 2),'Atrasado','Estourado'))) as SLA,

           

           

          O que eu faria seria colocar as linhas abaixo no LOAD

           

          Interval(DataFechamento - DataAbertura,'D')     as Campo,

          ID,

           

          para analisar o resultado que esta no SLA e verificar os campos que compõe o if para descobrir o que houve.

           

          Se puderes disponibilizar um pequeno modelo ajuda.....

           

          Outro if que poderia tentar seria....

           

          if(ID = 'Pending',

            // Se for Pendente....

            if(Interval(DataFechamento - DataAbertura,'D') > 2,'Atrasado','Estourado'),

            // Se nao....

            if(ID = 'Closed',

               //

               if((Interval(DataFechamento - DataAbertura,'D') = 0),'Cumprido',if((Interval(DataFechamento - DataAbertura,'D')<= 2),'No Prazo' ,'Estourado')))

          ,'Sem Definicao.....') as SLA,

            • Re: Problema com IF - Qlik Sense
              Rafael Lima

              Então Alessandro,

               

              Utilizando seu modelo simplificado eu ainda não consegui descobrir porque ele só reconhece o If do Pending

               

              if(ID = 'Closed' and

                 (Interval(DataFechamento - DataAbertura,'D') = 0),'Cumprido',

               

                   if(ID = 'Closed'

                  and (Interval(DataFechamento

                       - DataAbertura,'D') <= 2) ,'No Prazo',

               

                  if(ID = 'Pending'

                  and (Interval(DataFechamento

                       - DataAbertura,'D') > 2),'Atrasado','Estourado'))) as SLA,

               

              eu ja tinha colocado no load pra carregar um campo para verificar como ficou, veja no print:

               

              qlik_sense_1.png

               

              Os campos estão renomeados para facilitar o entendimento e o conteudo do status tambem.

              Veja que no caso do if em que o status é fechado e o dias é menor que 2 funciona mas ai ja cai depois no "se não"

               

              Atenciosamente,

               

              Rafael Lima.

                • Re: Problema com IF - Qlik Sense
                  Alessandro Furtado

                  Tens como disponibilizar um modelo reduzido?

                    • Re: Problema com IF - Qlik Sense
                      Rafael Lima

                      Boa tarde Alessandro,

                       

                      Consegui fazer com que funcionasse como esperado, utilizei a dica do nosso amigo Nilton Barcelos

                       

                      e acabei modificando os IF, ele disse que todo campo data na maioria das vezes é numérico então em vez de usar o Interval e date acabei usando o floor como abaixo, ai neste caso agora esta fazendo a conta certa e mostrando de acordo com cada situação, veja:

                       

                          if( BMCServiceDesk__Incident__c.BMCServiceDesk__Status_ID__c = 'Closed' and

                        (Floor(BMCServiceDesk__Incident__c.BMCServiceDesk__closeDateTime__c) - Floor(BMCServiceDesk__Incident__c.BMCServiceDesk__openDateTime__c) = 0),

                        'Cumprido',

                        if(BMCServiceDesk__Incident__c.BMCServiceDesk__Status_ID__c = 'Closed' and

                        (Floor(BMCServiceDesk__Incident__c.BMCServiceDesk__closeDateTime__c) - Floor(BMCServiceDesk__Incident__c.BMCServiceDesk__openDateTime__c) >= 1) and

                        (Floor(BMCServiceDesk__Incident__c.BMCServiceDesk__closeDateTime__c) - Floor(BMCServiceDesk__Incident__c.BMCServiceDesk__openDateTime__c) <= 2)

                        ,'No Prazo',

                        if(BMCServiceDesk__Incident__c.BMCServiceDesk__Status_ID__c = 'Pending' and

                        ( (Today() - Floor(BMCServiceDesk__Incident__c.BMCServiceDesk__openDateTime__c)) <= 1)

                        ,'No Prazo',

                        if(BMCServiceDesk__Incident__c.BMCServiceDesk__Status_ID__c = 'Pending' and

                        ( (Today() - Floor(BMCServiceDesk__Incident__c.BMCServiceDesk__openDateTime__c)) >  1) and

                        ( (Today() - Floor(BMCServiceDesk__Incident__c.BMCServiceDesk__openDateTime__c)) <= 2)

                        ,'Atrasado',

                        if(BMCServiceDesk__Incident__c.BMCServiceDesk__Status_ID__c = 'Open','Sem SLA','Estourado'

                        )

                        )

                        )

                        )

                        ) as SLA,

                       

                      Mesmo assim agradeço muito pelo seu apoio.

                       

                      Atenciosamente,

                       

                      Rafael Lima.