Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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.
Desde já agradeço a quem possa me orientar.
Abraço.
Edlazaro, deu certo com o ultimo modelo / script ?
Este ultimo não cria chave sintética.....(pelo menos na teoria... )
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!!!
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....
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!
Segue o script que o Alessandro escreveu
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
Deu certo?
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...
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.