4 Replies Latest reply: Sep 1, 2011 6:57 PM by JACKSON RIBEIRO ALFONSO RSS

    Concatenate - como contar os campos corretamente ??????

    JACKSON RIBEIRO ALFONSO

      Pessoal, olha eu aqui outra vez, seguinte:

       

      concatenei duas tabelas, ATENDIMENTO e ANDAMENTO, cada uma das tabelas possuem campos distintos, quando fiz o concatenate, criei um campo chamado FONTE, onde digo se é ATENDIMENTO ou ANDAMENTO, bom agora fiz um load para dizer em cada andamento qual deles é o ultimo, então criei um campo ULTIMO_ANDAMENTO, onde por padrão é NÃO, e o ultimo fica como SIM, fiz isso fazendo um load na tabela ordenando de forma descendente, ok ate aqui esta tudo tranquilo.

       

      o problema começa agora, tipo, as totalizações estão me dando problema, tipo tenho as tabelas abaixo e seu campos (alguns apenas para nao me alongar ainda mais aqui....):

       

      ATENDIMENTO:

                   Campos: NUMERO, ABERTURA, HORA, DESPACHO, CLIENTE, APLICATIVO

      ANDAMENTO   :

                   Campos: NUMERO, SEQUENCIA, DATA, HORA, USUARIO_ORIGEM, USUARIO_DESTINO, ULTIMO_ANDAMENTO

       

      com o comando usado no meu caso concatenate, minha tabela ficou assim:

       

      ATENDIMENTO: 

                  Campos: NUMERO, ABERTURA, HORA, DESPACHO, CLIENTE, APLICATIVO, SEQUENCIA, USUARIO_ORIGEM, USUARIO_DESTINO,                                     ULTIMO_ANDAMENTO, FONTE

       

      usando as dimensões: USUARIO_DESTINO, SETOR_DESTINO e a expressão: Count({<ULTIMO_ANDAMENTO={SIM}>}, NUMERO)

      consigo a totalização correta dos dados.

       

      O MEU PROBLEMA, esta quando uso como dimensão o campo: CLIENTE e/ou APLICATIVO, a função não me retorna nada, percebi que o problema pelo jeito é a FONTE, mas não consegui resolver, alguem pode me dar uma ajudinha ou idéia de como resolver isso ?????

        • Concatenate - como contar os campos corretamente ??????
          Erich Shiino

          Jackson,

          No seu caso, quando você força o ULTIMO_ANDAMENTO=SIM, está implicitamente forçando a contagem do campo número apenas no bloco que veio da tabela andamento.

          Como os campos CLIENTE e APLICATIVO só fazem parte do bloco ATENDIMENTO, não há nenhum resultado para os valores nesta dimensão.

          Quer dizer, não existe o conceito de último andamento para cliente ou aplicativo, pois este critério só foi definido para o ANDAMENTO.

          Talvez, nestes casos, você poderia usar uma expressão sem esta condição:

          Count( NUMERO)

          ou  forçar que todos os atendimentos sejam o último andamento

           

          ATENDIMENTO:

          LOAD NUMERO, ABERTURA, HORA, DESPACHO, 'SIM' AS  ULTIMO_ANDAMENTO

          FROM...

           

          Espero ter ajudado,

          Erich

            • Concatenate - como contar os campos corretamente ??????
              JACKSON RIBEIRO ALFONSO

              Erich, vou fazer os testes e posto o resultado depois !!!

               

              Obrigado pela atenção !!!!  

              • Concatenate - como contar os campos corretamente ??????
                JACKSON RIBEIRO ALFONSO

                Erich, fiz da forma descrita abaixo, e consegui chegar no resultado que eu queria, deu trabalho mais deu certo !!! só não sei se apenas fazendo o que você disse conseguiria, pois não testei ainda, mas de qualquer forma valeu como experiencia por enquanto !!!!

                 

                1 - Fiz um load resident somente nos campos da tabela de Atendimentos.

                2 - Fiz um join com os campos da tabela de Andamentos.

                3 - Tive que criar varios load's, para as tabelas de dimensão, mas tudo bem.

                4 - Na expressão quando vou contar o campo quantidade para Setor que é amarrado ao usuario_destino, da tabela de andamentos, eu testo se o o campo IDTIPO_ATENDIMENTO_FINAL  é maior que zero, uma vez que esse campo é da tabela de Atendimentos.

                 

                Com isso o resultado é o esperado e consigo calcular todas as dimensoes independente se o campo é da tabela Atendimento ou Andamento.

                 

                O Script de Load que fiz é esse ai, só trago os campos que serão as dimensões vamos dizer assim.

                 

                FINAL_ATENDIMENTO:

                LOAD

                     %KEY_ATENDIMENTO AS IDATENDIMENTO_FINAL,

                     [ID_APLICATIVO] AS IDAPLICATIVO_FINAL,

                     [ID_CLIENTE] AS IDCLIENTE_FINAL,

                     [IDTIPO_ATENDIMENTO] AS IDTIPO_ATENDIMENTO_FINAL

                RESIDENT ATENDIMENTO;

                JOIN

                LOAD

                     %KEY_ATENDIMENTO AS IDATENDIMENTO_FINAL,

                     [IDUSUARIO_DESTINO] AS IDUSUARIO_FINAL,

                     '1' AS QUANTIDADE

                RESIDENT ATENDIMENTO

                WHERE ULTIMO_ANDAMENTO = 'SIM';