Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Modelagem de Dados

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

Labels (2)
7 Replies
joao_sp_campina
Creator II
Creator II

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

jonas_rezende
Specialist
Specialist

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!

Not applicable
Author

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

Not applicable
Author

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;

afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

‌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....

furtado@farolbi.com.br
jonas_rezende
Specialist
Specialist

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.

Clever_Anjos
Employee
Employee

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.