Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

Modelagem do LinkTable

Possuo os Campos NR_PROCESSO e NR_GUIA, em 3 tabelas distintas, preciso criar um LinkTable para eles e também para os campos data que o painel possui, porém ao criar o linktable como foi sugerido por aqui e retirar estes campos-chave nas tabelas de origem acabo perdendo a modelagem dos dados. Eu preciso fazer a modelagem dimensional para este painel mas não estou conseguindo. QVW em anexo.

6 Replies
srchagas
Creator III
Creator III

Vamos la

Sim Esta correto voce tirar das tabelas originais, porem o que tu vai fazer e :

1 - Criar uma chave composta com os campos que sao comum e devems er relacionados por exemplo:

NR_PROCESSO  & '|'  NR_GUIA as %KeyProcessoGuia ou %KeyLinktable,

NR_PROCESSO  ,

NR_GUIA

Campo_de_Data as Data


Em todos as tabelas depois tu vai fazer isso :



Linktable:

NoConcatenate

Load

%KeyProcessoGuia ou %KeyLinktable,

NR_PROCESSO  ,

NR_GUIA

Data

From Table_A


drop  Fields  NR_PROCESSO  , NR_GUIA, Data From Tabela_A


Voce faz isso em todas as tabela e fica tudo na Linktable.



Porque :

A Link table fica todas todos os relacionamentos, tanto de dimensao , quanto para as fatos, ele tem que achar as informacoes dentro da tabela fato porque o relacionamento do Processo + Guia vai gerar uma chave Unica na tabela, nao precisando manter no Tabela de origem.


Se voce manter, tera uma Chave Syntetica gigante.



Anonymous
Not applicable
Author

srchagas

Então não devo realmente apagar os campos nas tabelas originais como havia entendido e sim criar  primeiro uma chave composta nestas tabelas como:

NR_PROCESSO & '|'  NR_GUIA as %KeyProcessoGuia ou %KeyLinktable,

NR_PROCESSO ,

NR_GUIA

Campo_de_Data as Data

Posteriormente referencio estes campos na linktable, correto?

A dúvida que ficou agora foi quanto ao uso do concatanete, pode acontecer que numa destas 3 tabelas exista o mesmo NR_PROCESSO, porque que eu usaria NoConcatanete ao invés de Concatanete?

A outra dúvida mais primária seria ao referenciar a tabela na linktable existe diferença entre usar

Resident Tabela_A

ou

FROM

(qvd);

Anonymous
Not applicable
Author

srchagas

Acredito que a solução que você deu seria a mais viável, porém não estou conseguindo implementar pois na tabela boletos por exemplo existem 3 Campos data, e não posso uni-los em um única chave por nele existir DT_VENCIMENTO, onde utilizo uma flag para datas futiras que exibe os boletos a vencer.

Para boletos o script ficou da seguinte forma:

  NR_GUIA as %ID_LINK,

     date( DT_PROCESSAMENTO) & '|' & Date( DT_PAGAMENTO) & '|' & Date( DT_VENCIMENTO) AS %TIPO_DATA,

srchagas
Creator III
Creator III

Opa

entao so na primeira tabela do NoConcatenate , nas seguinte tu via usar concatenate para a Link table

Entao as tabela B e C vao concatenar os mesmo campos na Link e serao removido das origens.

algo assim:

NoConcatenate:

Linktable:

%KeyProcessoGuia ou %KeyLinktable,

NR_PROCESSO ,

NR_GUIA

Data

resident Tabela_A


drop Fields

NR_PROCESSO ,

NR_GUIA,

Data

FRom Tabela_A


Concatenate(Linktable)

%KeyProcessoGuia ou %KeyLinktable,

NR_PROCESSO ,

NR_GUIA

Data

resident Tabela_B


drop Fields

NR_PROCESSO ,

NR_GUIA,

Data

From Tabela_B



----------------------------------------------------------


Com relacao ao campo de Data, se ele precisa relacionar na Link e sempre mostrar, usar assim :


Alt(DT_PROCESSAMENTO,DT_PAGAMENTO,DT_VENCIMENTO) as %Tipo_DATA


Alt : verifica se o campo esta vazio e completa com proximo, como se fosse um "Case"


assim voce sempre tera a data possivel


ai tu ve a melhor ordem pra ti, poorque usei como exemplo, mas voce tem certeza que tem sempre data de Processamento, mas nao nem sempre tem de vencimento e precisa ser prioritario poderia ser assim tb


Alt(DT_PAGAMENTO,DT_VENCIMENTO, DT_PROCESSAMENTO) as %Tipo_DATA


Da Menor possibilidade de existir para a maior


Anonymous
Not applicable
Author

Olá srchagas

Consegui implementar a Linktable da forma que você sugeriu, por análise das tabelas eu havia deduzido que esta seria a melhor modelagem de dados para este painel, no entanto os valores continuam incorretos. Eu já testei diversas formas, porém minha experiência com o Qlik ainda é pequena.

Um exemplo seria para o dia 30/03/2017, boletos em aberto deveria exibir 46, e 35 Ordens Canceladas. Outra inconsistência é na tabela da aba Ordens Executadas, a coluna Tipo Alvará não mostra Alvará Eletrônico algum, enquanto a base está cheia deles.

Tem como você analisar o QVW desta resposta e me dar mais uma força nesta modelagem?

Desde já agradeço.

srchagas
Creator III
Creator III

Cara eu  cheguei em 265 tirando as guias zeradas...tu fez a chave somente com Processo...nao seria melhor processo e guia? o codigo da guia nao se repete para processo diferente? pr se tiver vai dduplicar...triplicar a ingormacao...nao consegue fazer com processo e guia ??

=count(  DISTINCT {< NR_GUIA = {">0"}  >}  NR_GUIA)

alem do mais essa base ta estranha o que eu entendo de  processo e que geralmente ele tem o ano no comeco, logo achei dados de 2014...2015  com essa data, isso ta certo?

Pode ser o campo data ai tu usou nao ta legal....segue o exemplo