7 Replies Latest reply: Jul 6, 2016 12:46 PM by Clever Anjos RSS

    Modelagem de Dados

    Carlos Alexandre Souza

      Boa tarde estou com a mesma dificuldade em relacionar a tabela de meta do Protheus. Vocês conseguiram resolver o relacionamento da tabela CT estou enviando a imagem de como estou relacionando sendo: Preciso relacionar a tabela META DE VENDA campo CT_GRUPO  a tabela ITENS DA NOTA campo CHV_GRUPO. Se alguém puder me ajudar agradecido.

      REF_CIRCULAR.png

        • Re: Modelagem de Dados
          Joao Ferreira

          Boa tarde Carlos,

           

          Seu problema está no modelo de dados. Se você fizer este relacionamento acredito que gerará uma referencia circular.

          Acho  que você não necessita realizar o relacionamento da Meta com a Nota pelo campo CHV_Vendedor. Assim você poderá amarrar a meta com  a tabela Itens de Nota.

           

          João Carlos

            • Re: Modelagem de Dados
              Carlos Alexandre Souza

              Boa tarde!

               

              Conforme exemplo já estou amarrando pela CHV_VENDEDOR e preciso também ligar a tabela de meta a tabela de itens da nota pelo grupo.

              A tabela Itens da nota não tem código do vendedor preciso de uma chave nessa tabela que seria:

               

              LEFT(D2_FILIAL,2)&'|'&"D2_GRUPO" &'|'&"D2_VEND1"as CHV_GRUPO

               

              QUE SERIA LIGADO NA TABELA

               

               

              LEFT(CT_FILIAL,2)&'|'&"CT_GRUPO" &'|'&"CT_VEND"as CHV_GRUPO

               

              Só que o campo citado d2_vend1 eu tenho ele em outra tabela do cabeçalho da nota campo  tabela NOTA: F2_VEND1 que é ligado na tabela ITENS NOTA através da chave CHV_NOTA

            • Re: Modelagem de Dados
              Jonas Melo

              Carlos Alexandre.

               

              Faça um left join de Nota com Itens Nota. Vamos aos exemplos.

               

              Temp:

              LOAD

              CHV_NOTA, //Unir Nota e Itens Nota

              *                  //Demais campos. Coloquei asterisco para ser ágil no exemplo. Em seu modelo declare os campos                    //necessários

              FROM [..\Nota.qvd] (qvd);

               

              Left join (Nota)

              LOAD

              CHV_NOTA, //Unir Nota e Itens Nota

              *                    //Demais campos. Coloquei asterisco para ser ágil no exemplo. Em seu modelo declare os campos                              //necessários

              FROM [..\Itens Nota.qvd] (qvd);

               

              NoContatenate //Evitar de não carregar a tabela Nota oriunda de um Resident

               

              Nota:

              LOAD

              (CHV_VEND...& '_' & CHV_GRUPO) AS [%Chave_VEND_GRUPO],

              CHV_VEND...,

              *                    //Demais campos. Coloquei asterisco para ser ágil no exemplo. Em seu modelo declare os                                           //campos  necessários

              Resident Temp;

               

              DROP TABLE Temp;

              DROP FIELD CHV_VEND... FROM Nota;

               

              Meta_Venda

              LOAD

              CHV_VEND...,

              (CHV_VEND...& '_' & CT_GRUPO) AS [%Chave_VEND_GRUPO],

              *

              From [..\Meta_Venda.qvd] (qvd);

               

              Com isso, terá as tabelas Variacao_Q..., Variação_Q..., Clientes, Itens Pedidos, Pedido, Produtos, Tipo Movi.. ligadas a Nota.

               

              Em seguida, crie uma chave composta  nas tabelas de Notas e Meta_Venda para ligá-las. Ex.:

              [%Chave_VEND_GRUPO].

               

              Ao final, terá o seu objetivo atendido, além da ligação da dimensão Vendedores à Meta_Venda.

               

              Nota: ainda sobrará oportunidade para construir uma única tabela entre Pedidos e Itens Pedidos.

               

              Espero que isso o ajude!

                • Re: Modelagem de Dados
                  Carlos Alexandre Souza

                  Boa tarde!

                   

                  Obrigado pelo retorno tive erro com o script  abaixo se puder me ajudar? Alterou a modelagem as tabelas de meta.ref_meta.png

                   

                  Temp:
                  LOAD
                  CHV_NOTA, //Unir Nota e Itens Nota
                  F2_VEND1   //Demais campos. Coloquei asterisco para ser ágil no exemplo. Em seu modelo declare os campos //necessários
                  Resident Nota;
                  Left join (Nota)
                  LOAD
                  CHV_NOTA, //Unir Nota e Itens Nota
                  GRUPO   //Demais campos. Coloquei asterisco para ser ágil no exemplo. Em seu modelo declare os campos //necessários
                  Resident [Itens_Nota];

                  //NoConcatenate //Evitar de não carregar a tabela Nota oriunda de um Resident

                  Nota:
                  LOAD
                  (
                  CHV_NOTA&'|' &CHV_GRUPO) AS [%Chave_VEND_GRUPO],

                  CHV_VENDEDOR,
                  GRUPO
                  //Demais campos. Coloquei asterisco para ser ágil no exemplo. Em seu modelo declare os //campos necessários


                  Resident Temp;



                  DROP TABLE Temp;

                  DROP FIELD F2_VEND1 FROM Nota;



                  Meta_Venda:
                  LOAD
                  CHV_VENDEDOR,
                  (
                  CHV_VENDEDOR& '|' & CHV_GRUPO) AS [%Chave_VEND_GRUPO]


                  Resident [Meta_Venda];

                  DROP TABLE Temp;

                  DROP FIELD CHV_VENDEDOR FROM Nota;

                   

                   

                    • Re: Modelagem de Dados
                      Jonas Melo

                      Carlos Alexandre.

                       

                      Algumas observações:

                       

                      1. O Resident é apenas na tabela Temp;

                      2. O NoConcatenate fica descomentado;

                      3. O drop é no campo CHV_VENDEDOR da tabela Nota logo após o Resident em Temp. Ele é o campo que faz ligação com a tabela Meta. Ou nem declara ele, afinal ele está contido na chave composta.

                       

                      Siga a sequência que está no primeiro post. Óbvio, declarando os campos da tabela no lugar do asterisco.

                       

                      Ah! Desculpe-me, no parêntesis do left join por um descuido coloquei Nota onde deve ser Temp - fica assim left join (Temp).

                       

                      Caso tenha dúvida, compartilhe o script.

                  • Re: Modelagem de Dados
                    Alessandro Furtado

                    Carlos, boa tarde.

                     

                    Eu normalmente quando tenho este tipo de situação (meta e faturamento ou venda) eu coloco todos na mesma tabela com o concatenate.

                     

                    No caso seria a Nota, left join dos itens e depois o concatenate da meta.  Claro que neste caso, ano,mes,vendedor,produto ou os campos que seriam iguais tem que estar com o mesmo nome para poder ser a mesma selecao.

                     

                    Assim crio uma tabela que normalmente chamo de Movimento e nela estao   Ja vi em outros posts pessoas preferindo o linked table....

                    • Re: Modelagem de Dados
                      Clever Anjos

                      Já achou uma solução? Se sim, marque umas das respostas como "Correta" para fechar o tópico e nos ajudar a manter o forum organizado.