10 Replies Latest reply: Jan 18, 2012 10:56 AM by rodrigo silvestre RSS

    Ajuda em fórmula...

      Pessoal, boa tarde!

      Estou precisando de uma dica..
      O que estou tentando fazer, tenho uma tabela com campo Ano, Mes e quantidade de funcionarios.. Estou fazendo uma análise anual, para mostrar diversas informações e um dos campos, quero mostrar a quantidade de funcionários.
      Mas para este caso, quero mostrar a quantidade de funcionarios do maior mes daquele ano.

       

       

      Como eu fiz:

       

      sum ({$< ACID_DT_ANO_ACIDENTE = ,
                     ACID_NR_MES_ACIDENTE = {$(=MAX(ACID_DT_MES_ACIDENTE))

                   >}

             )

       

       

      O que acontece é que no caso de 2012 eu só tenho informações do mês de janeiro no momento e dos outros anos tenho de janeiro a dezembro. Esta acontecendo que quando não seleciono nada no filtro de ano e mês aparece o valor de quantidade de funcionários para os anos 2009, 2010, 2011, porém para 2012 traz zerado o valor.
      Se eu selecionar então o mês de janeiro, mostra o valor de 2012, porém altera também as quantidades do ano de 2009, 2010, 2011, trazendo as quantidade do mes de janeiro dos respectivos anos e não do último mês.

      Alguém tem alguma dica de como posso tratar isto?

       

      Desde já agradeço a ajuda! Valeu...


      Juliana Holstein.

        • Ajuda em fórmula...
          rodrigo silvestre

          Olá Juliana,

           

          acredito que com if ja resolva seu problema

           

          if(ACID_NR_MES_ACIDENTE  = MAX(ACID_DT_MES_ACIDENTE) , count(funcionarios))

            • Ajuda em fórmula...

              Olá Rodrigo, bom dia!
              Obrigada por responder viu?

              Fiz os testes, funcionou em parte, acho que estou fazendo alguma coisa errada.


              Tirando a minha fórmula anterior

               

              sum ({$< ACID_DT_ANO_ACIDENTE = ,
                             ACID_NR_MES_ACIDENTE = {$(=MAX(ACID_DT_MES_ACIDENTE))

                           >}

                     )

              e colocando a que você me sugeriu

               

               

              if(ACID_NR_MES_ACIDENTE  = MAX(ACID_DT_MES_ACIDENTE) , count(funcionarios)).

               

              Funciona para o ano de 2012 daí, mas para os demais anos fica em branco.
              Creio que eu deva fazer algum tratamento para o ano como fiz anterioremente né? Não levando em consideração a seleção do ano. É isso?

              Eu faria mais um IF neste caso? Ou utilizaria a minha fórmula e incluiria o IF?

              Te mando um print para você ver.


              Desde já agradeço sua ajuda,

              Abs,

              Juliana.exemplo.jpg

               

               

               

              • Re: Ajuda em fórmula...

                Olá Rodrigo, bom dia!
                Obrigada por responder viu?

                Fiz os testes, funcionou em parte, acho que estou fazendo alguma coisa errada.


                Tirando a minha fórmula anterior

                 

                sum ({$< ACID_DT_ANO_ACIDENTE = ,
                               ACID_NR_MES_ACIDENTE = {$(=MAX(ACID_DT_MES_ACIDENTE))

                             >}

                       )

                e colocando a que você me sugeriu

                 

                 

                if(ACID_NR_MES_ACIDENTE  = MAX(ACID_DT_MES_ACIDENTE) , count(funcionarios)).

                 

                Funciona para o ano de 2012 daí, mas para os demais anos fica em branco.
                Creio que eu deva fazer algum tratamento para o ano como fiz anterioremente né? Não levando em consideração a seleção do ano. É isso?

                Eu faria mais um IF neste caso? Ou utilizaria a minha fórmula e incluiria o IF?

                Te mando um print para você ver.


                Desde já agradeço sua ajuda,

                Abs,

                Juliana.

                 

                 

                 

                  • Re: Ajuda em fórmula...
                    rodrigo silvestre

                    Juliana... vamos fazer um teste... inclui um campo só

                     

                    max(mes)

                     

                    e veja se acontece a mesma coisa.. só aparece 2012..

                      • Ajuda em fórmula...

                        Olá Rodrigo, ele trouxe o último mês de cada ano, veja o print.

                         

                        exemplo 1.jpg

                        Obrigada pela ajuda até agora..


                        Abs,

                        Juliana

                          • Ajuda em fórmula...
                            rodrigo silvestre

                            Então juliana,

                             

                            parece algo simples, porém não é tao simples assim,

                            achei uma maneira de resolver isso , segue um exemplo:

                             

                            if ( Max(Mês) = 12 ,

                            sum( {<Mês = {$(=MaxString(Mês))}>} [Valor de Venda])  ,

                            sum({<Mês = {$(=MaxString( {<Ano = {$(=max(Ano))}>}  Mês))}>} [Valor de Venda])

                            )

                             

                            a idéia dessa expressão é o seguinte... se o mês for dezembro, usa aquela sua primeira expressão, do contrário

                            usa aquela sua expressão com um set analysis dentro do max(mês) para pegar do ultimo ano ...

                             

                            -----------

                            Essa não é a melhor maneira, parece até algo meio POG (programação orientada a gambiarra) rsrs. Mas acredito que resolve.

                            Já tive essa mesma dúvida e lembro que me bati bastante ... lembro também que com a ajuda aqui da comunidade consegui resolver com uma agregação e dentro uma condicional, porém não estou lembrando e nem achando aqui na comunidade.

                             

                            OBS: Isso é algo que eu não consigo entender no QlikView... o max() dentro de um set analisys nao considera a dimensão da tabela... por isso pedi pra você fazer aquele teste de criar um campo max... observe que o campo max traz perfeitamente os ultimos meses dos anos... e quando esse mesmo max é colocado dentro do set analysis ele ultiliza o mes 12 para todos os anos.

                             

                            Espero que tenha ajudado.

                             

                            Abraço.

                              • Ajuda em fórmula...

                                Olá Rodrigo,


                                Pois então isso é bem estranho né? No set Analysis não funcionar muito bem.
                                Fiz a fórmula conforme sua dica e funcionou certinho.
                                Só queria te incomodar mais um pouco, existe a possibilidade de nesta fórmula colocar para não levar em consideração o que eu seleciono nos filtros de Mes e Ano que tenho ?

                                 

                                Desde já agradeço sua ajuda!

                                 

                                Abraço,

                                  • Ajuda em fórmula...
                                    rodrigo silvestre

                                    Juliana,

                                     

                                    Fico feliz que tenha dado certo. Uma dúvida jamais é um incomodo, é um aprendizado!

                                     

                                    Acredito que é possível, mas não tenho certeza de como fazer isso...

                                     

                                    eu sei que é possível vc colocar antes do set analisys o 1 ... e ele nao considera nenhuma seleção, somente o que é colocado no set analysis

                                     

                                    ex: sum( {1} Vendas )

                        • Re: Ajuda em fórmula...

                          Pessoal, boa tarde.

                           

                          Passei por problemas parecidos, e resolvi transferindo a fórmula Max(MesAno) para uma variável, e no Set Analises referencio apenas a Variável, exemplo:

                           

                          sum ({$< ACID_DT_ANO_ACIDENTE = ,
                                         ACID_NR_MES_ACIDENTE = {$(Variavel)}

                                       >}

                                 )

                           

                          Espero ter ajudado.