4 Replies Latest reply: Dec 20, 2012 10:16 AM by Eduardo Correa da Silva RSS

    Duvida Load + Loop + Popular

    Paulo Vanzela

      Saudações Pessoal, Tudo certo ?

       

      Estou me batendo uns 2 dias para criar a seguinte situação:

       

      Determinada carteira de sócios pode ter seu analista responsavel substituido ao decorrer de um periodo.

       

      Vejam a figura abaixo:

       

      Até o mes 11/2012 o Analista X era responsavel,

      Após o mes 12/2012 o Analista Y passou a ser o responsavel. Notem que o campo Ano/mes estao nulos, então se não houver nova troca de analista, este sera responsavel ate data corrente.

       

      Pois bem, segue o problema. Imaginamos que eu determine a data de inicio 01/06/2012 até 01/06/2013.

      O Resultado que viso buscar seria o da segunda figura em anexo.

       

      Ja tentei varias formas com loop e sem sucesso, se alguem ja passou por situacao semelhante ...

       

      Grato

       

      Abraço a todos.


        • Re: Duvida Load + Loop + Popular
          Aderlan Rodrigues

          Boa noite Paulo,

           

          Use o código do link abaixo para criar um calendário com as datas que você precisa usando o código como chave, assim, você vai ter uma relação enriquecida dos dados e nos gráficos, tabelas, lista poderá usar as dimensões e medidas normalmente da forma que você predente.

           

          http://community.qlik.com/message/162975#162975

           

          Faça em um arquivo que possa postar aqui, para testes, caso tenha alguma dúvida a galera ajuda.

           

          Grande abraço.

            • Re: Duvida Load + Loop + Popular
              Paulo Vanzela

              Caro Aderlan,

               

              Depois de bater cabeça durante um tempo consegui improvisar uma solução, ao meu ver não ficou o código tão "elegante" , porem funcional.

                • Re: Duvida Load + Loop + Popular
                  Aderlan Rodrigues

                  É o que importa Paulo, funcionar e documentar, inclua comentários para você saber o que esta feito, daqui a algum tempo os comentários são valiosos. Rsrsrs

                   

                  Abraço

                    • Re: Duvida Load + Loop + Popular

                      Tem um exemplo que fiz aqui para ajudar.

                       

                      Abraços!!

                       

                      ------------------------------------------------------------------------------------------------------------------------

                       

                      LET vDataIni = '01/06/2012';

                      LET vDataFim = '01/06/2013';

                      LET vData = 0;

                      LET vDataUsuario = 0;

                      LET vRegistro = 0;

                      LET vCount = 0;

                       

                       

                      vCount = ((NUM(YEAR(vDataFim), 0) - NUM(YEAR(vDataIni), 0)) * 12) + (NUM(MONTH(vDataFim), 0) - NUM(MONTH(vDataIni), 0)) ;

                       

                       

                      TMP:

                      LOAD

                                ANALISTA_FUNCIONARIO,

                                ANALISTA_CODIGO,

                                ANALISTA_NOME,

                                CARTEIRA,

                                ANO,

                                MES,

                                1 AS TIPO_TABELA

                      INLINE [

                          ANALISTA_FUNCIONARIO, ANALISTA_CODIGO, ANALISTA_NOME, CARTEIRA, ANO, MES

                          Aline, 179, Analista 01, 167, 2012, 11

                          Rafaela, 220, Analista 01, 167

                      ];

                       

                      vData = vDataIni;

                       

                       

                      FOR i=1 TO vCount   

                         

                          vDataUsuario = MAKEDATE(PEEK('ANO', $(vRegistro), 'TMP'), PEEK('MES', $(vRegistro), 'TMP'), 1);

                         

                          IF( TEXT(vDataUsuario) = TEXT(vData) ) THEN

                            vRegistro = 1;

                          END IF;

                         

                                CONCATENATE

                                LOAD

                                          PEEK('ANALISTA_FUNCIONARIO', $(vRegistro), 'TMP') AS ANALISTA_FUNCIONARIO,

                                          PEEK('ANALISTA_CODIGO', $(vRegistro), 'TMP') AS ANALISTA_CODIGO,

                                          PEEK('ANALISTA_NOME', $(vRegistro), 'TMP') AS ANALISTA_NOME,

                                          PEEK('CARTEIRA', $(vRegistro), 'TMP') AS CARTEIRA,

                                          YEAR('$(vData)') AS ANO,

                                          NUM(MONTH('$(vData)')) AS MES,

                                          2 AS TIPO_TABELA

                                AUTOGENERATE(1);

                       

                                vData = DATE(MonthEnd(vData) + 1, 'DD/MM/YYYY');

                       

                      NEXT

                       

                       

                                TABELA:

                                NOCONCATENATE

                                LOAD

                                          ANALISTA_FUNCIONARIO,

                                          ANALISTA_CODIGO,

                                          ANALISTA_NOME,

                                          CARTEIRA,

                                          ANO,

                                          MES

                                RESIDENT TMP

                                WHERE TIPO_TABELA = 2;

                       

                       

                       

                      DROP TABLE TMP;