3 Replies Latest reply: Nov 22, 2016 5:11 PM by Flavio Eduardo RSS

    Funções desconsiderando set analisys

    Flavio Eduardo

      Olá,

      Já passei por algumas situações onde ocorre algo com o QlikView que não faz muito sentido pra mim, esse é mais um caso onde eu não entendo o funcionamento dos filtro que o QlikView aplica.

       

      1.png

       

      Tenho a tabela acima, o objetivo é que clicando em Realizado na caixinha abaixo da tabela a pessoa veja o que vendeu nos meses, clicando em objetivo ela tem o histórico das metas, como é um histórico eu desconsidero o ano e o mês que a pessoa seleciona em um filtro do painel assim a tabela mostra todos os anos que eu quero apresentar no histórico.

       

      O problema esta ocorrendo na expressão que alterna entre o objetivo e o realizado, as formulas que eu uso são essas:

       

      Tenho uma variável chamada eVolumeMensal que retorna o realizado do mês:

      "

       

      (
      Sum({$<[Mes Contabil] ={$1},Ano =,[Tri. Contabil] =, Mes =, [Tipo Revisao]=>} Pick(ID_Tipo_Resultado, FaturamentoVolume, FaturamentoVolumeKE, FaturamentoLiquido))
      +
      Sum({$<[Mes Contabil] ={$1},Ano =,[Tri. Contabil] =, Mes =, [Tipo Revisao]=>} Pick(ID_Tipo_Resultado, PedidoVolume, PedidoVolumeKE, PedidoFaturamentoLiquido))
      )
      "

       

      e outra variavel chamada  vVolumeObjetivoMensal que calcula o objetivo:

       

       

      (
      Sum({$<[Mes Contabil] ={$1},Ano =,[Tri. Contabil] =, Mes =>} Pick(ID_Tipo_Resultado, ObjetivoVolume, ObjetivoVolumeKE, ObjetivoFaturamentoLiquido))
      )

       

       

       

       

      Na tabela se eu usar por exemplo a seguinte variável: $(eVolumeMensal(3)) o resultado que aparece na tabela é o que esta no mês Nov, todos os valores aparecem corretamente em todos os anos.

       

      Agora se eu usar a formula Pick(ID_Tipo_Historico, $(eVolumeMensal(2)), $(vVolumeObjetivoMensal(2))) o valor retornado é o que esta no mês Out, algo esta desconsiderando o set analisys e somente o resultado do ano que esta filtrado aparece corretamente, os outros anos aparecem zerados, isso não faz sentido pra mim, eu achei que a função pick somente iria retornar a variável e o calculo seria feito corretamente.

       

      Tentei resolver o problema com a formula abaixo:

      Only({1}
      Aggr(Pick(ID_Tipo_Historico, $(eVolumeMensal(1)), $(vVolumeObjetivoMensal(1))),Ano)
      )

       

      O resultado é do mês Set que também esta errado, eu achei que colocando uma formula com um set analisys que desconsidera todas as dimensões iria resolver o problema mas não deu certo.

       

      alguém consegue ver algum sentido no que esta acontecendo?

        • Re: Funções desconsiderando set analisys
          Alessandro Furtado

          Flavio,

           

          por não usa a condicional da expressão?

           

          Quem sabe testar sem o uso da variável, pois dependendo da forma como chama e das dimensões pode retornar um valor não esperado......

           

          2016-11-22 19_42_56-Configurações.png

          2016-11-22 19_43_01-QlikView x64 - [C__tmp_Meta e Real.qvw_].png

          2016-11-22 19_43_11-Propriedades do Gráfico [Meta].png

            • Re: Funções desconsiderando set analisys
              Flavio Eduardo

              Alessandro,

               

              eu tinha pensado em fazer de alguma outra forma, tinha pensado em criar outra tabela e ela ocultar ou aparecer de acordo com o filtro, mas o que gostaria mesmo é entender o porque isso acontece, vira e meche eu me deparo com uma situação que eu não entendo o que o QV está filtrando, fica muito difícil as vezes entender o que esta acontecendo já que não tem como debugar isso, o resultado aparece na tela e não tem como analisar internamente o porque.

              Não faz sentido nenhum pra mim esse caso porque a formula funciona perfeitamente sem o pick mas com o pick acontece isso, o pick não deveria só retornar o que esta no array dele?

            • Re: Funções desconsiderando set analisys
              Flavio Eduardo

              Consegui resolver fazendo isso aqui:

               

               

              $(=Pick(ID_Tipo_Historico, '$(eVolumeMensal(1))', '$(vVolumeObjetivoMensal(1))'))

               

              Pelo que eu entendi ele retorna a String da formula e recalcula depois do Pick, deu certo, não faz muito sentido mas deu certo.

               

              Obrigado.