Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
ldourado
New Contributor

Como resolver essa referência circular?

Bom dia,

Como posso resolver a referência circular abaixo?

referencia circular.png

No modelo de dados original:

A tabela LICITAÇÕES se relaciona com LICITACOES_LOTES pelo ID_LICITACAO.

A tabela LICITACOES_LOTES se relaciona com LICITACOES_LICITANTES pelo CODIGO_LICITACAO_LOTE.

A tabela LICITACOES_LICITANTES se relaciona com LICITAÇÕES  pelo ID_LICITACAO.


Como forma de identificar cada relação, fiz o seguinte no script:

[LICITACOES]:

LOAD

[IDLICITACAO] AS $IDLICITACAO,                               //chave para relacionar com outras tabelas

[IDLICITACAO] AS [CODIGO LICITACAO],

[IDLICITACAO] AS $LICLICITANTES.IDLICITACAO,   //chave para relacionar com a tabela LICITACOES_LICITANTES

[IDLICITACAO] AS $LICLOTE.IDLICITACAO,              //chave para relacionar com a tabela LICITACOES_LOTE     

[NUMEROEDITAL] AS [LIC.NUMEROEDITAL],

[ANOEDITAL]  AS [LIC.ANOEDITAL];

SELECT [....];

[LICITACOES_LOTES]:

LOAD

[CODIGO_LICITACAO_LOTE],

// [IDLICITACAO],

[CODIGO_LICITACAO_LOTE] AS $LICLICITANTES.CODIGO_LICITACAO_LOTE,    //chave para relacionar com a tabela LICITACOES_LICITANTES

[IDLICITACAO] AS $LICLOTE.IDLICITACAO,  //chave para relacionar com a tabela LICITACOES    

[SEQUENCIAL] AS [LICLOTE.SEQUENCIAL],

[DESCRICAO] AS [LICLOTE.DESCRICAO],

[CODIGO_LICITACAO_LOTE] AS $LICLOTESITU.CODIGO_LICITACAO_LOTE,      //chave para relacionar com a tabela LICITACOES_LOTES_SITUACAO

SELECT [....];

[LICITACOES_LICITANTES]:

LOAD

[CODIGO_LICITACOES_LICITANTES],

// [CODIGO_LICITACAO_LOTE],        

// [IDLICITACAO],

[CODIGO_LICITACAO_LOTE] AS $LICLICITANTES.CODIGO_LICITACAO_LOTE,       //chave para relacionar com a tabela LICITACOES_LOTES

[IDLICITACAO] AS $LICLICITANTES.IDLICITACAO,  //chave para relacionar com a tabela LICITACOES

[VENCEDOR] AS [LICLICITANTES.VENCEDOR],

[CLASSIFICACAO_LABEL]   AS [LICLICITANTES.CLASSIFICACAO],    

    [VALOR_PROPOSTA] AS [LICLICITANTES.VALOR_PROPOSTA],

[PRAZO_EXECUCAO] AS [LICLICITANTES.PRAZO_EXECUCAO],

[IDPESSOA];

SELECT [...];

Por favor, me ajudem, pois percebi a ocorrência de pelo menos uma três referências circulares em todo o modelo a ser carregado, muito semelhante a esse que descrevi.

Agradeço a quem puder me ajudar!!!

11 Replies
mario_sergio_ti
Valued Contributor

Re: Como resolver essa referência circular?

thiago_justen
Valued Contributor III

Re: Como resolver essa referência circular?

Remover esta linha [IDLICITACAO] AS $LICLICITANTES.IDLICITACAO da tabela [LICITACOES_LICITANTES] resolveria seu problema de referência circular. Mas qual o impacto? O que você perderia com isso?


Como o mario.sergio.ti bem disse, vale a pena ler o help para identificar melhor o problema.

Thiago Justen Teixeira Gonçalves
WhatsApp: 24 98152-1675
Skype: justen.thiago
mario_sergio_ti
Valued Contributor

Re: Como resolver essa referência circular?

Ou teste documentar a linha da tabela [LICITACOES_LICITANTES]

     //[CODIGO_LICITACAO_LOTE] AS $LICLICITANTES.CODIGO_LICITACAO_LOTE, 


Mas é importante entender o objetivo de cada tabela para fazer os ajustes adequados no modelo de dados...

ldourado
New Contributor

Re: Como resolver essa referência circular?

Há licitações com e sem lotes, e se remover isso, não tenho como saber os licitantes das licitações sem lotes. Portanto, não posso removê-lo.

thiago_justen
Valued Contributor III

Re: Como resolver essa referência circular?

E se:

[LICITACOES_LOTES]:

LOAD

[CODIGO_LICITACAO_LOTE]&[IDLICITACAO] as Chave,

[CODIGO_LICITACAO_LOTE],

// [IDLICITACAO],

//[CODIGO_LICITACAO_LOTE],

[IDLICITACAO] AS $LICLOTE.IDLICITACAO,  //chave para relacionar com a tabela LICITACOES   

[SEQUENCIAL] AS [LICLOTE.SEQUENCIAL],

[DESCRICAO] AS [LICLOTE.DESCRICAO],

[CODIGO_LICITACAO_LOTE] AS $LICLOTESITU.CODIGO_LICITACAO_LOTE,      //chave para relacionar com a tabela LICITACOES_LOTES_SITUACAO

SELECT [....];

[LICITACOES_LICITANTES]:

LOAD

[CODIGO_LICITACAO_LOTE]&[IDLICITACAO] as Chave,

[CODIGO_LICITACOES_LICITANTES],

// [CODIGO_LICITACAO_LOTE],       

// [IDLICITACAO],

[CODIGO_LICITACAO_LOTE],

[IDLICITACAO] AS $LICLICITANTES.IDLICITACAO,

[VENCEDOR] AS [LICLICITANTES.VENCEDOR],

[CLASSIFICACAO_LABEL]   AS [LICLICITANTES.CLASSIFICACAO],   

[VALOR_PROPOSTA] AS [LICLICITANTES.VALOR_PROPOSTA],

[PRAZO_EXECUCAO] AS [LICLICITANTES.PRAZO_EXECUCAO],

[IDPESSOA];

SELECT [...];

Thiago Justen Teixeira Gonçalves
WhatsApp: 24 98152-1675
Skype: justen.thiago

Re: Como resolver essa referência circular?

Crie uma linktable entre as 3

ldourado
New Contributor

Re: Como resolver essa referência circular?

Sou iniciante no qlik, poderia me ajudar em como criar essa linktable?

thiago_justen
Valued Contributor III

Re: Como resolver essa referência circular?

Eis um exemplo bem didático:

Exemplo de Link table

Abs e Sucesso!!

Thiago Justen Teixeira Gonçalves
WhatsApp: 24 98152-1675
Skype: justen.thiago
ldourado
New Contributor

Re: Como resolver essa referência circular?

Deu chave sintética Chave+CODIGO_LICITACAO_LOTE entre LICITACOES_LOTES e LICITACOES_LICITANTES, e não resolveu a referencia circular.