Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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:
Obrigado pelo apoio!
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&'|'®ional_codigo as Venda_ID RESIDENT DRE_temp;
DROP TABLE DRE_temp;
// Agora farei o Load das vendas
Vendas:
LOAD
periodo&'|'®ional_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&'|'®ional_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.
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
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&'|'®ional_codigo as Venda_ID RESIDENT DRE_temp;
DROP TABLE DRE_temp;
// Agora farei o Load das vendas
Vendas:
LOAD
periodo&'|'®ional_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&'|'®ional_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.
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!
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!
Arthur!
ficou assim agora:
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&'|'®ional_codigo as Venda_ID Resident DRE_temp;
DROP Table DRE_temp;
Vendas:
LOAD
periodo&'|'®ional_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
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.
Welinton, segue um material bem lega sobre modelagem de dados.
Vale a pena dar uma lida
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!
Te oriento a se aprofundar bastante neste assunto, pois este é 80% (Fonte: Eu mesmo rsrs) de um projeto bem elaborado.