Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
welinton123
Contributor III
Contributor III

Organizar Tabelas e Link Tables

Boa noite,

Alguém ai com criatividade e conhecimento de tabelas links para organizar este grupo de tabelas?

Tentei criar algumas link tables mas já estava chegando na KEY6 já ai desisti de fazer uma "bagunça organizada" nas tabelas.

Segue as tabelas:

Capturar.PNG

Obrigado pelo apoio!

Labels (2)
1 Solution

Accepted Solutions
arthur_dom
Creator III
Creator III

Vixe Maninho... Vamos comecar pelo básico! CR, CR GRUPO E REGIONAL possuem cr_codigo e regional_codigo em comum, sendo assim (e por parecer ser uma dimensão) você poderia fazer:

Regional:

LOAD

cr_codigo

, regional_codigo

, regional_descricao

, regional_gerente

, regional_comercial

, regional_superintendente

FROM <SUA FONTE DE DADOS DE REGIONAL!!!> ;

LEFT JOIN(Regional)

LOAD

cr_codigo

,regional_codigo

, cr_grupo_sisplan

FROM <SUA FONTE DE DADOS DE CR!!!> ;

LEFT JOIN(Regional)

LOAD

cr_codigo

, regional_codigo

, cr_descricao

FROM <SUA FONTE DE DADOS DE CR GRUPO!!!> ;

//Depois disso vamos encarar o DRE REALIZADO E O ORCADO, vou fazer aqui pela destra

//(join) mas existem outras maneiras (concatenate)

DRE_temp:

LOAD

cr_codigo

,un_codigo

,conta_codigo

,periodo

,dre_real_valor

FROM <SUA FONTE DE DADOS DE DRE REALIZADO!!!> ;

JOIN( DRE_temp)

LOAD

cr_codigo

,un_codigo

,conta_codigo

,periodo

,dre_orc_valor

FROM <SUA FONTE DE DADOS DE DRE ORCADO!!!> ;

// Para poder linkar com Vendas uma chave que contenha Periodo e regional precisa ser criada,

//então farei um left join para criar os campos para a chave e um LOAD RESIDENT para criar a tabela

// com a chave correta

LEFT JOIN (DRE_temp)

LOAD

cr_codigo

,regional_codigo

RESIDENT Regional;

NOCONCATENATE

DRE:

LOAD *, periodo&'|'&regional_codigo as Venda_ID RESIDENT DRE_temp;

DROP TABLE DRE_temp;

// Agora farei o Load das vendas

Vendas:

LOAD

periodo&'|'&regional_codigo as Venda_ID

,vendas_qtd_recargas

,vendas_preco_face

,vendas_comissao_pdv

FROM <SUA FONTE DE DADOS DE  VENDAS!!!> ;


//Veja que Venda_ID é a primeira chave que criei, agora vou carregar nesta ordem capilariedade,valor face, margem pdv orcamento:

Capilariedade:

LOAD

periodo&'|'&regional_codigo as Venda_ID

,periodo&'|'&segmento_grupo as Segmento_ID

,segmento_grupo

,capilariedade_orc_valor

FROM <SUA FONTE DE DADOS DE  CAPILARIEDADE!!!> ;

VendaFace:

LOAD

periodo&'|'&operadora_grupo as Operadora_ID

,periodo&'|'&segmento_grupo as Segmento_ID

,regional_grupo

,venda_face_orc_valor

FROM <SUA FONTE DE DADOS DE  VENDA FACE!!!> ;

MargemPDV:

LOAD

periodo&'|'&operadora_grupo as Operadora_ID,

margem_pdv_valor

FROM <SUA FONTE DE DADOS DE  MARGEM PDV!!!> ;

// Ai pode carregar a ultima tabela

ContasDRE:

LOAD conta_codigo

,conta_descricao

,conta_grupo

,conta_linha_dre

FROM <SUA FONTE DE DADOS DE  CONTAS DRE!!!> ;

//*OBSERVACOES:

//1-------------------------------------------------------------------------------------------------------------------------------------------------------

//Considerei que todas as tabelas tem correspondencias de 100% ( os campos chaves existem e sempre encontram

//pelo menos um valor nas duas tabelas em que existe a chave

//2-------------------------------------------------------------------------------------------------------------------------------------------------------

// Se o resultado não satisfazer as necessidades, por favor, procure criar mais dimensões e tabelas que estejam

//vinculadas com uma chave razoavel.

View solution in original post

15 Replies
pablolabbe
Luminary Alumni
Luminary Alumni

Welinton,

  Teu modelo de dados parece um modelo de teste para uma certificação de modelagem de dados.

  Eu particularmente levaria ao menos um turno para reorganizar isso como consultoria de QA.

  O que posso te sugerir pra você ir resolvendo sozinho é fazer a concatenação das chaves compostas a fim de criar chaves únicas entre as tabelas. Isso já ajudaria a eliminar grande parte das chaves sintéticas. Depois com o que sobrar você avalia a necessidade de criar uma link table ou não.

Abraço,

Pablo

arthur_dom
Creator III
Creator III

Vixe Maninho... Vamos comecar pelo básico! CR, CR GRUPO E REGIONAL possuem cr_codigo e regional_codigo em comum, sendo assim (e por parecer ser uma dimensão) você poderia fazer:

Regional:

LOAD

cr_codigo

, regional_codigo

, regional_descricao

, regional_gerente

, regional_comercial

, regional_superintendente

FROM <SUA FONTE DE DADOS DE REGIONAL!!!> ;

LEFT JOIN(Regional)

LOAD

cr_codigo

,regional_codigo

, cr_grupo_sisplan

FROM <SUA FONTE DE DADOS DE CR!!!> ;

LEFT JOIN(Regional)

LOAD

cr_codigo

, regional_codigo

, cr_descricao

FROM <SUA FONTE DE DADOS DE CR GRUPO!!!> ;

//Depois disso vamos encarar o DRE REALIZADO E O ORCADO, vou fazer aqui pela destra

//(join) mas existem outras maneiras (concatenate)

DRE_temp:

LOAD

cr_codigo

,un_codigo

,conta_codigo

,periodo

,dre_real_valor

FROM <SUA FONTE DE DADOS DE DRE REALIZADO!!!> ;

JOIN( DRE_temp)

LOAD

cr_codigo

,un_codigo

,conta_codigo

,periodo

,dre_orc_valor

FROM <SUA FONTE DE DADOS DE DRE ORCADO!!!> ;

// Para poder linkar com Vendas uma chave que contenha Periodo e regional precisa ser criada,

//então farei um left join para criar os campos para a chave e um LOAD RESIDENT para criar a tabela

// com a chave correta

LEFT JOIN (DRE_temp)

LOAD

cr_codigo

,regional_codigo

RESIDENT Regional;

NOCONCATENATE

DRE:

LOAD *, periodo&'|'&regional_codigo as Venda_ID RESIDENT DRE_temp;

DROP TABLE DRE_temp;

// Agora farei o Load das vendas

Vendas:

LOAD

periodo&'|'&regional_codigo as Venda_ID

,vendas_qtd_recargas

,vendas_preco_face

,vendas_comissao_pdv

FROM <SUA FONTE DE DADOS DE  VENDAS!!!> ;


//Veja que Venda_ID é a primeira chave que criei, agora vou carregar nesta ordem capilariedade,valor face, margem pdv orcamento:

Capilariedade:

LOAD

periodo&'|'&regional_codigo as Venda_ID

,periodo&'|'&segmento_grupo as Segmento_ID

,segmento_grupo

,capilariedade_orc_valor

FROM <SUA FONTE DE DADOS DE  CAPILARIEDADE!!!> ;

VendaFace:

LOAD

periodo&'|'&operadora_grupo as Operadora_ID

,periodo&'|'&segmento_grupo as Segmento_ID

,regional_grupo

,venda_face_orc_valor

FROM <SUA FONTE DE DADOS DE  VENDA FACE!!!> ;

MargemPDV:

LOAD

periodo&'|'&operadora_grupo as Operadora_ID,

margem_pdv_valor

FROM <SUA FONTE DE DADOS DE  MARGEM PDV!!!> ;

// Ai pode carregar a ultima tabela

ContasDRE:

LOAD conta_codigo

,conta_descricao

,conta_grupo

,conta_linha_dre

FROM <SUA FONTE DE DADOS DE  CONTAS DRE!!!> ;

//*OBSERVACOES:

//1-------------------------------------------------------------------------------------------------------------------------------------------------------

//Considerei que todas as tabelas tem correspondencias de 100% ( os campos chaves existem e sempre encontram

//pelo menos um valor nas duas tabelas em que existe a chave

//2-------------------------------------------------------------------------------------------------------------------------------------------------------

// Se o resultado não satisfazer as necessidades, por favor, procure criar mais dimensões e tabelas que estejam

//vinculadas com uma chave razoavel.

welinton123
Contributor III
Contributor III
Author

hahaha vou tomar essa tua primeira linha como um super elogio! então se eu me virar com essa quantidade de dados sou "certificado" a me aventurar pelo mundo Qlik? rs .. brincadeira .. sou bem iniciante e estou aproveitando para escrever alguns modelos em excel que uso na empresa em qlikview (acredite, tudo isso ai tem em uma planilha de 34 MB em formato xls, mas lá tem mais indicadores do que ai hahaha).

Sobre reduzir o número de chaves duplicadas, eu cheguei a fazer 2 link tables completas, mas ai começou a dar referência circular, tentei contornar e acabei me perdendo no meio de tudo e resolvi começar novamente.

Valeu Pablo!

welinton123
Contributor III
Contributor III
Author

kkk vish Deus! acho que graças a você vou aprender join, porque parece ser a solução do problema!

Isso ai é quase um curso de modelagem de dados kk vou precisar de um tempo para ler e testar essa joça ai kkk.

Muito obrigado mesmo Arthur, deixa testar esse monstrinho e já te conto o que houve!

welinton123
Contributor III
Contributor III
Author

Arthur!

ficou assim agora:

Capturar.PNG

e o script ficou o seguinte:

Regional:

LOAD

cr_codigo

,regional_codigo

,regional_descricao

,regional_gerente

,regional_comercial

,regional_superintendente

FROM [..\03-QVD\REGIONAL.QVD](qvd);

Left Join (Regional)

LOAD

cr_codigo

,cr_descricao

FROM [..\03-QVD\CR.QVD] (qvd);

Left join(Regional)

LOAD

cr_codigo

,cr_grupo_sisplan

FROM [..\03-QVD\CR GRUPO.QVD] (qvd);

DRE_temp:

LOAD

cr_codigo

,un_codigo

,conta_codigo

,periodo

,dre_real_valor

FROM [..\03-QVD\DRE REALIZADO.QVD] (qvd);

Join(DRE_temp)

LOAD

cr_codigo

,un_codigo

,conta_codigo

,periodo

,dre_orc_valor

FROM [..\03-QVD\DRE ORCAMENTO.QVD] (qvd);

Left Join(DRE_temp)

LOAD

cr_codigo

,regional_codigo

Resident Regional;

NoConcatenate

DRE:

LOAD *, periodo&'|'&regional_codigo as Venda_ID Resident DRE_temp;

DROP Table DRE_temp;

Vendas:

LOAD

periodo&'|'&regional_codigo as Venda_ID

,vendas_qtd_recargas

,vendas_preco_face

,vendas_comissao_pdv

FROM [..\03-QVD\VENDAS.QVD] (qvd);

Capilaridade:

LOAD

Mês&'|'&[Regional Código] as Venda_ID

,Mês&'|'&[Segmento Grupo] as Segmento_ID

,[Segmento Grupo] as segmento_grupo

,[Orc Capilaridade] as capilaridade_orc_valor

FROM [..\03-QVD\ORCAMENTO CAPILARIDADE.QVD] (qvd);

VendaFace:

LOAD

Mês&'|'&[Regional Código] as Venda_ID

,Mês&'|'&[Segmento Grupo] as Segmento_ID

,[Segmento Grupo] as segmento_grupo

,[Orc Valor Face] as face_orc_valor

FROM [..\03-QVD\ORCAMENTO FACE.QVD] (qvd);

MargemPDV:

LOAD

Mês&'|'&[Operadora Grupo] as Operadora_ID

,[Orc Margem PDV] as margem_pdv_valor

FROM [..\03-QVD\ORCAMENTO MPDV.QVD] (qvd);

ContasDRE:

LOAD

conta_codigo

,conta_descricao

,conta_grupo

,conta_linha_dre

FROM [..\03-QVD\CONTAS DRE.QVD] (qvd);

Preciso agora só vincular aquelas tabelas isoladas, o que acha do resultado?

Abs

arthur_dom
Creator III
Creator III

Ficou um pouco melhor, mas evite a criacao de chaves sinteticas. Se o campo é carregado em uma tabela, faca com que tenha apenas um campo para ligar com outras tabelas.

nicolett_yuri

Welinton, segue um material bem lega sobre modelagem de dados.

Vale a pena dar uma lida

welinton123
Contributor III
Contributor III
Author

Bom dia Yuri!

Obrigado, olhei por dentro da caixa de entrada e não tinha visto o anexo, vou ler certamente, tenho muita dificuldade em desenhar o modelo de dados, mas no ultimo mês aprendi bastante sobre tratar a informação e criação dos elementos na ferramenta então cedo ou tarde eu ia bater e parar nessa parte.

Muito Obrigado!

nicolett_yuri

Te oriento a se aprofundar bastante neste assunto, pois este é 80% (Fonte: Eu mesmo rsrs) de um projeto bem elaborado.