2 Replies Latest reply: Jul 14, 2011 1:37 PM by rodrigo silvestre RSS

    Ajuda com formula.

    rodrigo silvestre

      dados_teste.pngdashboard_teste.png

       

      Olá a todos,

       

      estou com uma dificuldade e gostaria de ver se alguém aqui poderia me ajudar...  eu preciso de que quando não houver um [valor], busque o  'valor da formula' que aparece na imagem acima...  @1 + @2 =  ( valor do cod =1 + valor do cod =2)  (somente dos códigos da mesma agencia)...

       

      Eu tentei modificar aquele campo fórmula... para que ficasse entre aspas e com uma vírgula de separador...  e tentei usa isso em um set analisys (conforme mostra o print) , só que não deu muito certo... os valores só batem se eu selecionar apenas um código e uma agência...

       

      me deram a dica de tentar modificar isso no script e só depois relacionar a conta com o  valor ( ja arumado )... porém não sei como chegaria nesse valor pelo script...

       

      se alguém tiver alguma dica ...

        • Re: Ajuda com formula.

          Bom dia,

           

          Uma sugestão é trabalhar no script.

           

          Para cada registro que possuir valor no campo formula deve ser criada uma nova linha para cada campo citado na fórmula, por exemplo:

           

          tabela_inicial:

           

          contaagenciacodformulavalor
          11111111-20
          22222212-50
          33333313@1+@20


          Após tratamento:

           

          contaagenciacodformulavalor
          11111111-20
          22222212-50
          33333313-20
          33333313-50


          Não tenho a solução completa mas é um bom começo.

           

          Para facilitar a agregação e soma dos valores (pois a fórmula possui apenas o campo codigo e este deve respeitar sempre a agencia do mesmo registro) crie um novo campo concatenando agencia e o codigo: agencia & '#' & cod AS agencia_cod, ficará algo parecido com: 1#1  1#2  1#3...

           

          Separe da tabela já existentes os registros que possuem formula dos que não possuem:

           

          tmp_sem_formula:

          LOAD ...

          FROM ...

          WHERE ISNULL(formula) = -1;

           

          tmp_com_formula:

          LOAD ...

          FROM ...

          WHERE ISNULL(formula) = 0;

           

          O tratamento deve ser realizado apenas na tabela "tmp_com_formula".

           

          Agora é necessário verificar em quantas linhas o registro será quebrado, para isso utilize a função:

           

          SubStringCount(formula, '@') + 1 AS contador

           

          A partir desta parte deverá ser utlizado laços de repetições para percorrer a tabela e desmembrar 1 registro em "n" registros.

           

          Quando criar esta tabela, você deverá utilizar um join para relacionar este novo registro com os valores da tabela "tmp_sem_formula".

           

          Espero ter ajudado, abraços!