Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
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

Tags (1)
7 Replies
joao_sp_campina
Contributor II

Re: Modelagem de Dados

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
Valued Contributor

Re: Modelagem de Dados

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

Re: Modelagem de Dados

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

Re: Modelagem de Dados

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;

MVP
MVP

Re: Modelagem de Dados

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

jonas_rezende
Valued Contributor

Re: Modelagem de Dados

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.

Employee
Employee

Re: Modelagem de Dados

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.