Skip to main content
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Analise consolidada

Senhores, Boa tarde!

Estou com a seguinte situação, tenho 4 banco de dados, uma matriz e três filiais, implementei na interface quatro botões onde escolho qual quero realizar a analise e faço a carga dos dados. Agora preciso realizar uma analise comparativa onde mostre as vendas, e outras informações de todas de uma forma consolidada, o que vocês recomendam para poder implementar essa recurso.

Imagem1.PNG

Desde já agradeço a quem possa me orientar.

Abraço.

38 Replies
afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

Edlazaro, deu certo com o ultimo modelo / script ?

Este ultimo não cria chave sintética.....(pelo menos na teoria... )

furtado@farolbi.com.br
Not applicable
Author

Alessandro,

Realmente não mostrar criando chave sintética, porém meu note com 8G de memória não conseguiu finalizar a carga e deu estou de memória. Estou fazendo uma nova analise no meu modelo e encontrar uma forma melhor, não que a sua não seja. Aproveitando eu poderia gerar as carga de cada empresa em qvd e na montagem das visualizações fazer a tão desejada analise consolidada ?  No Qlikview como seria essa junção ?

Obrigado!!!

afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

Edlazaro,

segue uma ideia de como fazer.

Este modelo tem 2 laços.  1 das Lojas (Bancos) e o outro das tabelas, que sao salvas com o nome da Loja apendado no nome.

Ai teria que montar um modelo final que le estes QVDs....Tem alguns cuidados, por exemplo LER com * e em seguida dar um left join......que nao da certo, mas ai ja estamos no passo dois....

furtado@farolbi.com.br
Not applicable
Author

Boa tarde Alessandro,

Desculpe não ter retornado antes, estive envolvido em outra atividade, não conseguir testar porque você mandou em

qvw, não tenho como abrir poderia enviar no formato txt.

Obrigado!

nicolett_yuri

Segue o script que o Alessandro escreveu

afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

For vBanco = 1 to 4

  IF $(vBanco)=1 THEN

      SET vLoja=Matriz;

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

  Endif

    IF $(vBanco)=2 THEN

      SET vLoja=Feira;

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

  Endif

  IF $(vBanco)=3 THEN

      SET vLoja=VCA;

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

  Endif

  IF $(vBanco)=4 THEN

      SET vLoja=Aracaju;

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

  ENDIF

  // ------------------------------

  for Each vArq in 'TAB_FUN','ger_cg','tab_dep','tab_tpd','tab_segm','ger_emp','ger_pd','ger_nfsi','tab_me','ger_nfs'

  $(vArq):

  SELECT * FROM $(vArq);

  STORE $(vArq) into $(vArq)_$(vLoja).qvd (qvd);

  DROP Table '$(vArq)';

  next

next

furtado@farolbi.com.br
afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

Deu certo?

furtado@farolbi.com.br
Anonymous
Not applicable
Author

    Edlazaro,

    Bom dia!

    Modifiquei seu Script para que ele gere um QVD para cada tabela depois junte tudo. Usei uma rotina que irá manter o uso de memória RAM mais baixo possível.

    Os QVDs finais estão programados para serem salvos numa subpasta chamada "QVDs" mas você pode alterar esse comando e deixar tudo junto se quiser.

    Obviamente não tive como testar aqui. Quando o Script terminar o QVW deve estar sem dados e os QVDs prontos para um nova carga no seu painel de análise. Segue o Script:

//------------------------------------ Inicio do script ---------------------------------------------------------------------------
//------------------------------------ CARGA ---------------------------------------------------------------------------
SET vBanco = 1;

DO WHILE vBanco <= 4

IF $(vBanco)=1 THEN
SET vLoja=Matriz;
OLEDB CONNECT TO [Provider=SQLOLEDB.1;Persist Security Info=True;User ID=sa;Initial Catalog=Matriz;Data Source=x.x.x.x.x;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=NOTEDLAZARO;Use Encryption for Data=False;Tag with column collation when possible=False] (XPassword is STNVLaJOBDdeGZVNBbcIXSJOSBMCTYAIASTA);
ELSE
IF $(vBanco)=2 THEN
SET vLoja=Feira;
OLEDB CONNECT TO [Provider=SQLOLEDB.1;Persist Security Info=True;User ID=sa;Initial Catalog=Feira;Data Source=x.x.x.x.x;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=NOTEDLAZARO;Use Encryption for Data=False;Tag with column collation when possible=False] (XPassword is STNVLaJOBDdeGZVNBbcIXSJOSBMCTYAIASTA);
ELSE
IF $(vBanco)=3 THEN
SET vLoja=VCA;
OLEDB CONNECT TO [Provider=SQLOLEDB.1;Persist Security Info=True;User ID=sa;Initial Catalog=VCA;Data Source=x.x.x.x.x;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=NOTEDLAZARO;Use Encryption for Data=False;Tag with column collation when possible=False] (XPassword is STNVLaJOBDdeGZVNBbcIXSJOSBMCTYAIASTA);
ELSE
IF $(vBanco)=4 THEN
SET vLoja=Aracaju;
OLEDB CONNECT TO [Provider=SQLOLEDB.1;Persist Security Info=True;User ID=sa;Initial Catalog=Aracaju;Data Source=x.x.x.x.x;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=NOTEDLAZARO;Use Encryption for Data=False;Tag with column collation when possible=False] (XPassword is STNVLaJOBDdeGZVNBbcIXSJOSBMCTYAIASTA);
ENDIF
ENDIF
ENDIF
ENDIF
// ------------------------------
[Vendedores]:
LOAD
fun_cd              as [Código Vendedor],
fun_nm                    as [Nome Vendedor];
SQL
SELECT  fun_cd, 
fun_nm
FROM "TAB_FUN";

STORE Vendedores into Vendedores_$(vLoja).qvd (qvd);

DROP Table Vendedores;

[Clientes]:
LOAD
cg_cd                as [Código Cliente],
cg_nm                as [Nome do Cliente],
segm_cdbalcao        as [Código Segmento1],
segm_cdoficina      as [Código Segmento2];
SQL
SELECT  cg_cd,
cg_nm,
segm_cdbalcao,
segm_cdoficina 
FROM "ger_cg";

STORE Clientes into Clientes_$(vLoja).qvd (qvd);

DROP Table Clientes;

[Departamento]:
LOAD
dep_cd                    as [Códido do Departamento],
dep_nm                    as [Nome do Departamento];
SQL
SELECT  dep_cd,
dep_nm
FROM tab_dep;

STORE Departamento into Departamento_$(vLoja).qvd (qvd);

DROP Table Departamento;

[Marca]:
LOAD
tpd_cd                    as [Código da Marca],
tpd_ds                    as [Nome da Marca];
SQL
SELECT  tpd_cd,
tpd_ds
FROM tab_tpd;

STORE Marca into Marca_$(vLoja).qvd (qvd);

DROP Table Marca;

[Segmento]:
LOAD 
segm_cd                  as [Código Segmento],
segm_ds                  as [Nome do Segmento];
SQL
SELECT  segm_cd,
segm_ds
FROM tab_segm;

STORE Segmento into Segmento_$(vLoja).qvd (qvd);

DROP Table Segmento;

[Loja]:
LOAD
emp_cd                    as [Código da Loja],
emp_dsres            as [Nome da Loja];
SQL
SELECT  emp_cd,
emp_dsres
FROM ger_emp;

STORE Loja into Loja_$(vLoja).qvd (qvd);

DROP Table Loja;

[Produtos]:
LOAD
pd_cd                as [Código Produto],
pd_ds                as [Descrição Produto],
tpd_cd                    as [Código da Marca],
pd_vlaquis          as [Custo Reposição];
SQL
SELECT  pd_cd,
pd_ds,
tpd_cd,
pd_vlaquis
FROM "ger_pd";

STORE Produtos into Produtos_$(vLoja).qvd (qvd);

DROP Table Produtos;

[Itens]:
LOAD
nf_nr                as [Numero da NF],
pd_cd                as [Código Produto];
SQL
SELECT  nf_nr,
pd_cd
FROM ger_nfsi;

STORE Itens into Itens_$(vLoja).qvd (qvd);

DROP Table Itens;

[TipoVenda]:
LOAD
me_cd                as [Tipo da Venda],
me_ds                as [Descrição];
SQL
SELECT  me_cd,
me_ds
FROM tab_me;

STORE TipoVenda into TipoVenda_$(vLoja).qvd (qvd);

DROP Table TipoVenda;

[Vendas]:
LOAD
cg_cd                as [Código Cliente],
dep_cd                    as [Códido do Departamento],
nf_nr                as [Numero da NF],
nf_dtemis            as [Data de Emissão],
nf_vlliquido        as [Valor da Venda],
nf_vldesc            as [Valor Desconto],
me_cd                as [Tipo da Venda],
fun_vend            as [Código Vendedor];
SQL
SELECT  cg_cd,
dep_cd,
nf_nr,
nf_dtemis,
nf_vlliquido,
nf_vldesc,
me_cd,
fun_vend
FROM "ger_nfs"
WHERE nf_dtemis > '2013/12/31';
//AND me_cd = 'VE01' OR me_cd = 'VE04';

STORE Vendas into Vendas_$(vLoja).qvd (qvd);

DROP Table Vendas;

LET vBanco = vBanco + 1;

LOOP;


//------------------------------------ JUNÇÃO DOS QVDS ---------------------------------------------------------------------------

[Vendedores]:
LOAD * FROM Vendedores_*.qvd (qvd) Where Not Exists ([Código Vendedor]);

STORE Vendedores into .\QVDs\Vendedores.qvd (qvd);

DROP Table Vendedores;


[Clientes]:
LOAD * FROM Clientes_*.qvd (qvd) Where Not Exists ([Código Cliente]);

STORE Clientes into .\QVDs\Clientes.qvd (qvd);

DROP Table Clientes;

[Departamento]:
LOAD * FROM Departamento_*.qvd (qvd) Where Not Exists ([Códido do Departamento]);

STORE Departamento into .\QVDs\Departamento.qvd (qvd);

DROP Table Departamento;

[Marca]:
LOAD * FROM Marca_*.qvd (qvd) Where Not Exists ([Código da Marca]);

STORE Marca into .\QVDs\Marca.qvd (qvd);

DROP Table Marca;

[Segmento]:
LOAD * FROM Segmento_*.qvd (qvd) Where Not Exists ([Código Segmento]);

STORE Segmento into .\QVDs\Segmento.qvd (qvd);

DROP Table Segmento;

[Loja]:
LOAD * FROM Loja_*.qvd (qvd) Where Not Exists ([Código da Loja]);

STORE Loja into .\QVDs\Loja.qvd (qvd);

DROP Table Loja;

[Produtos]:
LOAD * FROM Produtos_*.qvd (qvd) Where Not Exists ([Código Produto]);

STORE Produtos into .\QVDs\Produtos.qvd (qvd);

DROP Table Produtos;

[Itens]:
LOAD * FROM Itens_*.qvd (qvd);

STORE Itens into .\QVDs\Itens.qvd (qvd);

DROP Table Itens;

[TipoVenda]:
LOAD * FROM TipoVenda_*.qvd (qvd) Where Not Exists ([Tipo da Venda]);

STORE TipoVenda into .\QVDs\TipoVenda.qvd (qvd);

DROP Table TipoVenda;

[Vendas]:
LOAD * FROM Vendas_*.qvd (qvd);

STORE Vendas into .\QVDs\Vendas.qvd (qvd);

DROP Table Vendas;


// .................................FIM DO SCRIPT ............................................

Espero que ele possa lhe ser útil.

Felicidades...

Not applicable
Author

Bom dia! Senhores,

Alessandro, seu script funcionou gerando os arquivos de forma consolidada, porém só traz informações do ultimo banco do for o banco Aracaju. Fiz o teste também como o script que o Wellington enviou funcionou perfeitamente, gerando os qvds de forma consolidada, permitindo extrair as informações individuais e consolidada.

Com esse script me atende estarei dando seguimento ao meu projeto.

Obrigado a todos que me ajudaram.

Abraço.