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: 
Not applicable

Problemas com referencia circular, como resolvo?

Boa tarde!

Estou com o mesmo problema do Sr. Luis,  poderiam me ajudar ? rphpacheco

A tabela nova está à esquerda e que quero acrescentar às antigas da direita,  já tentei fazer ALIAS com nomes de campos diferentes mas deu referencia circular,  como posso interligar a tabela nova com as antigas ?

estou desesperado,  pois  estou tentando adicionar essa tabela de cursos da empresa ao fat. da empresa.

Obrigado quem puder ajudar e já agradeço!

tabelas-qlikview.png

os campos que consegui identificar da nova pra antiga são:


REFERENCIAS DE CAMPOS.png

Labels (5)
24 Replies
lucianosv
Specialist
Specialist

Você tirou o código.

Não ajuda nada. assim fica bem difícil ajudar.

Na prática é mais ou menos isso:

Você vai explitar esse select na sua modelagem atual.

Ex:

Concatenate(CLIENTES);

LOAD

A1_EST AS UF_CLIENTE,

A1_MUN AS NM_CIDADE_CLIENTE,

A1_NOME AS NM_CLIENTE,

COD_LJ_CLIENTE AS CD_CLIENTE

;

SQL SELECT *

FROM CONEXAO15.dbo."DW_EXTCURSOS";

Vai ter que fazer isso para cada tabela no modelo, tanto tabela fato como dimensões. Nas dimensões precisará usar Where not exists para não duplicar as linhas.

Marcio_Campestrini
Specialist
Specialist

Kleber

Faça a carga ligando a tabela nova gerando a referencia circular, e depois poste o arquivo...

Márcio Rodrigo Campestrini
Not applicable
Author

Meu script está assim (obs: acima tabela nova q quero ligar, na imagem tem as antigas à direita), acima no post tem uma tabela em excel onde identifiquei os campos iguais com nomes diferentes:

OLEDB CONNECT TO [Provider=SQLOLEDB.1;Persist Security Info=True;User ID=webreports;Initial Catalog=CONEXAO15;Data Source=USA;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=MAT187;Use Encryption for Data=False;Tag with column collation when possible=False] (XPassword is IAMeaRdNOLZQXQdNRZMQD);

ALIAS A1_EST AS UF_CLIENTE;

ALIAS A1_MUN AS NM_CIDADE_CLIENTE;

ALIAS A1_NOME AS NM_CLIENTE;

ALIAS A3_NOME AS NM_VENDEDOR;

ALIAS ANOMES AS CD_VENDEDOR_ANO_MES;

ALIAS COD_LJ_CLIENTE AS CD_CLIENTE;

ALIAS D2_COD AS CD_PRODUTO;

ALIAS D2_DESCON AS VL_DESCONTO_ITEM;

ALIAS D2_EMISSAO AS DT_NF_SAIDA;

ALIAS D2_FILIAL AS DS_FILIAL;

ALIAS D2_PRCVEN AS VL_UNIT_ITEM_NF_SAIDA;

ALIAS D2_PRUNIT AS VL_UNIT_ITEM_NF_SAIDA2;

ALIAS D2_QUANT AS QT_ITEM_SAIDA;

ALIAS D2_TES AS CD_TES;

ALIAS D2_TOTAL AS VL_TOTAL_ITEM_SAIDA;

ALIAS DESCR_PROD AS DS_PRODUTO;

ALIAS F2_TRANSP AS CD_TRANSPORTADORA;

ALIAS F2_VEND1 AS DS_CARTEIRA_CLIENTE;

ALIAS FAMILIA AS DS_FAMILIA_PRODUTO;

ALIAS NF_SERIE AS KEY_NF_SAIDA;

ALIAS TIPO AS DS_COND_PAGTO;

SQL SELECT "A1_EST", "A1_MUN", "A1_NOME", "A3_NOME", ANOMES, "C5_CURSO",

    "C5_OBSCRM", "C5_ORIDESC", "COD_LJ_CLIENTE", "COD_LJ_ENTIDADE",

    "D2_COD", "D2_DESCON", "D2_EMISSAO", "D2_FILIAL", "D2_PEDIDO",

    "D2_PRCVEN", "D2_PRUNIT", "D2_QUANT", "D2_TES", "D2_TOTAL",

    "DESCR_PROD", "ENT_EST", "ENT_MUN", "F2_COND", "F2_TRANSP",

    "F2_VEND1", "F4_CNDESC1", FAMILIA, "NF_SERIE", OPERACAO,

    "STATUS_CURSO", TIPO, "Z1_HIERAR", "Z1_TIPPES", "ZC_DESCUR",

    "ZC_DTFIM", "ZC_NOMENT"

FROM CONEXAO15.dbo."DW_EXTCURSOS";

referencia erro circular.png

Not applicable
Author

Segue passei

lucianosv
Specialist
Specialist

Precisamos do script inteiro.

A parte das tabelas antigas também.

Só têm a aba Leitura Final

Not applicable
Author

bi-script externo QVD.png

As antigas já eram carregadas por arquivos QVD externos e não constam na tela script,  mas consegui aqui as conexões desses QVDs externos que carregam:

[CLIENTES]:

LOAD

[CD_CLIENTE],

[NM_CLIENTE],

[NM_FANTASIA_CLIENTE],

[CD_CGC_CLIENTE],

[UF_CLIENTE],

[NM_CIDADE_CLIENTE],

[DS_CARTEIRA_CLIENTE],

[DS_CLASSIF_CLIENTE],

[DS_CURVA_CLIENTE],

[NM_REGIAO_CLIENTE]

From

[\\jamaica\rcs\QVDs\CLIENTES_CONEXAO15.qvd]

(QVD);

[Duplicatas a Receber]:

LOAD

[KEY_NF_SAIDA],

[NR_PARCELA_DUPL_RECEBER],

[VL_DUPL_RECEBER],

[VL_SALDO],

[DT_VENCTO_DUPL_RECEBER],

[DS_STATUS_DUPLICATA],

[QT_DUPL_RECEBER_ATRASADAS],

[QT_DIAS_ATRASO_DUPL_RECEBER]

From

[\\jamaica\rcs\QVDs\Duplicatas a Receber CONEXAO15.qvd]

(QVD);

[METAS]:

LOAD

[CD_VENDEDOR_ANO_MES],

[CD_VENDEDOR],

[DT_NF_SAIDA],

[VL_META_VENDEDOR]

From

[\\jamaica\rcs\QVDs\METAS.qvd]

(QVD);

[Notas Fiscais Devolucao Final]:

LOAD

[KEY_NF_SAIDA],

[DT_NF_SAIDA],

[CD_CLIENTE],

[DS_FILIAL],

[ST_DEVOLUCAO],

[VL_TOTAL_NF_SAIDA],

[DS_COND_PAGTO_SAIDA],

[NR_ITEM_NF_SAIDA],

[CD_PRODUTO],

[CD_TES],

[CD_VENDEDOR],

[DS_UNID_MED_SAIDA],

[QT_ITEM_SAIDA],

[VL_UNIT_ITEM_NF_SAIDA],

[VL_ICMS_ITEM_SAIDA],

[VL_TOTAL_ITEM_SAIDA],

[VL_IPI_ITEM_SAIDA],

[VL_COFINS_ITEM_SAIDA],

[VL_PIS_ITEM_SAIDA],

[VL_ICMS_ST_ITEM_SAIDA],

[VL_FRETE_ITEM_SAIDA],

[VL_CUSTO1_ITEM_NF_SAIDA],

[VL_CUSTO2_ITEM_NF_SAIDA],

[DS_TIPO_CLIENTE],

[VL_MARGEM_ITEM_SAIDA],

[CD_VENDEDOR_ANO_MES]

From

[\\jamaica\rcs\QVDs\Notas Fiscais Devolucao CONEXAO15.qvd]

(QVD);

[Notas Fiscais Devolucao]:

LOAD

[KEY_NF_SAIDA],

[DT_NF_SAIDA],

[CD_CLIENTE],

[DS_FILIAL],

[ST_DEVOLUCAO],

[VL_TOTAL_NF_SAIDA],

[DS_COND_PAGTO_SAIDA],

[NR_ITEM_NF_SAIDA],

[CD_PRODUTO],

[CD_TES],

[DS_UNID_MED_SAIDA],

[QT_ITEM_SAIDA],

[VL_UNIT_ITEM_NF_SAIDA],

[VL_ICMS_ITEM_SAIDA],

[VL_TOTAL_ITEM_SAIDA],

[VL_IPI_ITEM_SAIDA],

[VL_COFINS_ITEM_SAIDA],

[VL_PIS_ITEM_SAIDA],

[VL_ICMS_ST_ITEM_SAIDA],

[VL_FRETE_ITEM_SAIDA],

[VL_CUSTO1_ITEM_NF_SAIDA],

[VL_CUSTO2_ITEM_NF_SAIDA],

[DS_TIPO_CLIENTE],

[VL_MARGEM_ITEM_SAIDA]

From

[\\jamaica\rcs\QVDs\Notas Fiscais Devolucao TOTVS11.qvd]

(QVD);

[Notas Fiscais Saida]:

LOAD

[KEY_NF_SAIDA],

[DT_NF_SAIDA],

[CD_CLIENTE],

[CD_TRANSPORTADORA],

[VL_TOTAL_NF_SAIDA],

[CD_VENDEDOR_ANO_MES],

[CD_VENDEDOR],

[DS_COND_PAGTO],

[DS_FILIAL],

[ST_DEVOLUCAO],

[NR_ITEM_NF_SAIDA],

[CD_PRODUTO],

[CD_TES],

[DS_UNID_MED_SAIDA],

[QT_ITEM_SAIDA],

[VL_UNIT_ITEM_NF_SAIDA],

[VL_UNIT_ITEM_NF_SAIDA2],

[VL_DESCONTO_ITEM],

[TX_DESCONTO_ITEM],

[VL_FAT_BRUTO_ITEM_NF_SAIDA],

[VL_TOTAL_ITEM_SAIDA],

[VL_ICMS_ITEM_SAIDA],

[VL_IPI_ITEM_SAIDA],

[VL_COFINS_ITEM_SAIDA],

[VL_PIS_ITEM_SAIDA],

[VL_ICMS_ST_ITEM_SAIDA],

[VL_FRETE_ITEM_SAIDA],

[VL_CUSTO1_ITEM_NF_SAIDA],

[VL_CUSTO2_ITEM_NF_SAIDA],

[VL_MARGEM_ITEM_SAIDA],

[DS_TIPO_CLIENTE]

From

[\\jamaica\rcs\QVDs\Notas Fiscais Saida CONEXAO15.qvd]

(QVD);

[Notas Fiscais Saida]:

LOAD

[KEY_NF_SAIDA],

[DT_NF_SAIDA],

[CD_CLIENTE],

[CD_TRANSPORTADORA],

[VL_TOTAL_NF_SAIDA],

[CD_VENDEDOR_ANO_MES],

[CD_VENDEDOR],

[DS_COND_PAGTO],

[DS_FILIAL],

[ST_DEVOLUCAO],

[NR_ITEM_NF_SAIDA],

[CD_PRODUTO],

[CD_TES],

[DS_UNID_MED_SAIDA],

[QT_ITEM_SAIDA],

[VL_UNIT_ITEM_NF_SAIDA],

[VL_UNIT_ITEM_NF_SAIDA2],

[VL_DESCONTO_ITEM],

[TX_DESCONTO_ITEM],

[VL_FAT_BRUTO_ITEM_NF_SAIDA],

[VL_TOTAL_ITEM_SAIDA],

[VL_ICMS_ITEM_SAIDA],

[VL_IPI_ITEM_SAIDA],

[VL_COFINS_ITEM_SAIDA],

[VL_PIS_ITEM_SAIDA],

[VL_ICMS_ST_ITEM_SAIDA],

[VL_FRETE_ITEM_SAIDA],

[VL_CUSTO1_ITEM_NF_SAIDA],

[VL_CUSTO2_ITEM_NF_SAIDA],

[VL_MARGEM_ITEM_SAIDA],

[DS_TIPO_CLIENTE]

From

[\\jamaica\rcs\QVDs\Notas Fiscais Saida TOTVS11.qvd]

(QVD);

[TRANSPORTADORAS]:

LOAD

[CD_TRANSPORTADORA],

[NM_TRANSPORTADORA]

From

[\\jamaica\rcs\QVDs\TRANSPORTADORAS_CONEXAO15.qvd]

(QVD);

[TRANSPORTADORAS]:

LOAD

[CD_TRANSPORTADORA],

[NM_TRANSPORTADORA]

From

[\\jamaica\rcs\QVDs\TRANSPORTADORAS_TOTVS11.qvd]

(QVD);

[VENDEDORES]:

LOAD

[CD_VENDEDOR_ANO_MES],

[ST_VENDEDOR],

[DS_LOCAL_VENDEDOR],

[DS_TIPO_VENDEDOR],

[DS_GRUPO_VENDEDOR],

[DS_EQUIPE_VENDEDOR],

[NM_VENDEDOR],

[DS_EMAIL_VENDEDOR]

From

[\\jamaica\rcs\QVDs\VENDEDORES.qvd]

(QVD);

Marcio_Campestrini
Specialist
Specialist

Kleber

Elimine as chaves sintéticas que existem no modelo e depois teste novamente.

Os links abaixo trazem informação para apoiar essa tarefa.

Synthetic Keys

Avoid Synthetic Key and Loop in Data Modeling

Autonumber function

Márcio Rodrigo Campestrini
Not applicable
Author

Veja se acima os dados mais completos vc pode me ajudar.

Sou leigo no assunto e precisava  ajustar isso com uma certa 'urgência', a diretoria esta me cobrando disso.

Obrigado pela paciência!

jonas_rezende
Specialist
Specialist

Olá, Kleber Gitti.

Antes de ligar o modelo de dados, eu me questionaria sobre a regra de negócio. Ex.: Qual é a ligação da tabela de curso da empresa com o seu faturamento? Mediante a resposta passaria a pensar no modelo de dados.

Vamos imaginar que a resposta seria: o número do pedido, a série do pedido, o código da filial, a data do pedido e o código do produto. Bom! Com isso, criaria uma chave composta entre as tabelas para ligá-las, cuidando de cada campo para ficar no mesmo formato, a fim não haver divergências. Diante disso, assim faria a seguinte associação:

Tabela_Curso:

LOAD

Autonumber([Numero Pedido] &'_'& [Serie Pedido] &'_'& [%Codigo Filial] &'_& [%Codigo Produto] &'_'& Date([Data Pedido]) as [%Cod Curso Faturamento],

Curso,

[...], //Campos pertinentes ao curso que não sejam os utilizados na chave

[...] //Campos pertinentes ao curso que não sejam os utilizados na chave

From

[..\TabelaCurso.qvd] (qvd);

Tabela_Faturamento:

Autonumber([Nº NF] &'_'& [Serie NF] &'_'& [%Codigo Filial] &'_& [%Codigo Produto] &'_'& Date([Data Emissao]) as

[%Cod Curso Faturamento],

[Nº NF],

[%Codigo Filial],

[Codigo Produto],

[Data Emissao],

[#Valor Liquido],

[#Valor Total]

[...] //Outros campos pertinentes a tabela de faturamento

From

[..\TabelaFaturamento.qvd] (qvd);

Observe que a ligação entre as tabelas é feita pelo campo [%Cod Curso Faturamento]. O que elimina a chave circular.

De qualquer forma, o material em anexo, que não é de minha autoria, no Slide 23 aborda uma das possíveis solução para a referência circular.

Espero ter ajudado!

Marcio_Campestrini
Specialist
Specialist

Kleber

Conforme mencionei, você precisa antes de mais nada eliminar as chaves sintéticas, o que por si só já vai facilitar a identificação do seu problema.

Para isso, você deve concatenar os campos de ligação quando mais de um campo ligar duas tabelas. Por exemplo:

A tabela VENDEDORES tem os campos CD_VENDEDOR_ANO_MES e NM_VENDEDOR, que também estão na tabela MASTER_CALENDAR-1. Nas duas tabelas crie um campo com o valor CD_VENDEDOR_ANO_MES & '.' & NM_VENDEDOR com o nome %chaveVendedorCalendario1 e remova os dois campos de uma das tabelas. Faça esse procedimento para cada chave sintética que existir no modelo.

Depois disso será possível identificar o problema da referencia circular.

Márcio Rodrigo Campestrini