Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
silviolma
New Contributor III

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.

Tags (1)
6 Replies
srchagas
Contributor III

Re: Modelagem do LinkTable

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.



silviolma
New Contributor III

Re: Modelagem do LinkTable

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);

silviolma
New Contributor III

Re: Modelagem do LinkTable

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

Re: Modelagem do LinkTable

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


silviolma
New Contributor III

Re: Modelagem do LinkTable

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

Re: Modelagem do LinkTable

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