23 Replies Latest reply: Mar 31, 2015 1:02 PM by Yuri Nicolett RSS

    If com analise de conjunto

    Edson Lana

      Bom dia,

       

      Estou com o seguinte cenário:

       

      Dependendo de alguma situação eu faço o calculo A ou faço o calculo B, eu pensei em resolver isso utilizando a função condicional if, porém nesse caso é necessário que o usuário faça a condição acontecer, ou seja, é preciso que a seleção dele atenda as condições para fazer o calculo A ou B.

       

      Já com analise de conjunto pelo que eu entendo eu não preciso que o usuário selecione os filtros para que o calculo aconteça.

       

      Tem como por analise de conjunto eu fazer essa condicional, ou algo parecido?

       

      por exemplo

       

      =sum({$<Campo1={'A'}, Campo2={'B'}, Campo3-={'Conteudo3'}, Campo4-={'Conteudo4'} >}[Vendas])

       

      Notem que eu quis desconsiderar o conteudo3 e conteudo4 dessa analise utilizando o -= parece estar funcionando. Agora minha duvida é como eu digo pra ele considerar outro calculo, que seja diferente de Sum (Vendas), caso o Campo3 seja igual a Conteudo3 e Campo4 seja igual a Conteudo4

        • Re: If com analise de conjunto
          Luciano Vasconcelos

          Boa tarde.

          Aconselho você calcular no script. Dessa forma a informação já estará pronta. Você pode criar na carga uma flag por exemplo flag_situacao com valores 1 e 2, um para cada situação e usar conforma abaixo:

           

          sum({1<Flag_Situacao={'1'} >}[Vendas])

          sum({1<Flag_Situacao={'2'} >}[Vendas])


          Com o 1 no lugar do dólar você força a condição.

            • Re: If com analise de conjunto
              Edson Lana

              Desculpa mas não entendi

               

              como seria essa flag criada?


              =sum({$<Campo1={'A'}, Campo2={'B'}, Campo3-={'Conteudo3'}, Campo4-={'Conteudo4'} >}[Vendas]) as FlagsemCampos


              =sum({$<Campo1={'A'}, Campo2={'B'}, Campo3={'Conteudo3'}, Campo4={'Conteudo4'} >}[Vendas]*50) as FlacomCampos


              a diferença de um do outro é que um cenario eu considero campos no outro nao, e faço calculos diferentes


              é isso que eu colocaria no script?

                • Re: If com analise de conjunto
                  Luciano Vasconcelos

                  Na verdade você não entendeu a ideia,  a sintaxe é a do script, não do set analysis.

                  Vamos lá:

                  No script você vai fazer um If que vai setar o campo. Mais ou menos assim:

                   

                  If(

                       (Campo1='A' and Campo2='B' and Campo3 <>'Conteudo3' and Campo4<> 'Conteudo4'), '1',

                       If(

                            (Campo1='A' and Campo2='B' and Campo3 = 'Conteudo3' and Campo4 = 'Conteudo4'), '2'

                       )

                  )     as Flag_Situacao


                  Na expressão fica assim:


                  If(Flag_Situacao = 1, sum({1<Flag_Situacao={'1'} >}[Vendas]), sum({1<Flag_Situacao={'2'} >}[Vendas]) * 50))


                  • Re: If com analise de conjunto
                    rodrigo silvestre

                    Da pra fazer assim também:

                     

                    sum( {$<Campo1={'A'}, Campo2={'B'}>}   if( Campo3 = 'Conteudo3' and Campo4 = 'Conteudo4', [Vendas]*50,[Vendas]) )

                      • Re: If com analise de conjunto
                        Edson Lana

                        mas ai o usuario vai ter que selecionar o campo3 e campo4 certo?

                          • Re: If com analise de conjunto
                            rodrigo silvestre

                            dentro do sum() não,  se fosse tipo if( campo3 = 'conteudo3', sum(venda*50), sum(venda)) dai seria quando fosse selecionado.

                              • Re: If com analise de conjunto
                                Edson Lana

                                Rodrigo tudo bem? desde ja obrigado pela ajuda.

                                 

                                passei o fds fazendo isso, parece ter dado certo em uma tabela que eu tenho.

                                 

                                -Preciso dessa formula para uma tabela simples (aparentemente certo.)

                                -Preciso também em um gráfico de barras com hierarquia. Essa formula é utilizada na ultima hierarquia, o que não estou entendendo é: só quando eu seleciono o o ultimo nivel e apenas um unico indicador ele retorna o valor correto.

                                 

                                Exemplo: Nivel > Nivel2 > Nivel3

                                No Nivel3 tem varios indicadores por exemplo tipo1, tipo2, tipo3, tipo4.

                                 

                                Quando eu abro o Nivel3 me mostram as 4 barras com alguns valores, mas o valor correto só encontro quando eu clico no tipo4 por exemplo, dai tenho a visão apenas daquele tipo e daquele nivel.

                                 

                                Estou com a seguinte duvida, ele já não deveria mostrar o valor correto quando acesso o Nivel3 e onde visualizo todos os tipos?

                              • Re: If com analise de conjunto
                                Luciano Vasconcelos

                                Testa a solução que eu te passei. Não vai precisar selecionar nada.

                                 

                                Se quiser usar a solução do Rodrigo, cria duas variáveis:

                                 

                                sum( {1<Campo1={'A'}, Campo2={'B'}, Campo3 = {'Conteudo3'}, Campo4 = {'Conteudo4'}>} [Vendas]) * 50

                                 

                                sum( {1<Campo1={'A'}, Campo2={'B'}, Campo3 -= {'Conteudo3'}, Campo4 -= {'Conteudo4'}>} [Vendas])

                                 

                                E faz o condicional para cada expressão com um IF:

                                 

                                If(Campo1='A' and Campo2='B' and Campo3 = 'Conteudo3' and Campo4 = 'Conteudo4')

                                 

                                If(Campo1='A' and Campo2='B' and Campo3 <>'Conteudo3' and Campo4<> 'Conteudo4')

                        • Re: If com analise de conjunto
                          Yuri Nicolett

                          Poderia disponibilizar uma porção de seus dados para realizar alguns testes?