Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Possuo duas tabelas muito grandes (mais de 40 milhões de linhas). Uma das colunas refere-se ao ano - uma tabela de 2015 e uma de 2016. Outra coluna refere-se a um identificador único de um registro e a outra coluna a um identificador único à unidade a que esse registro está relacionado. Preciso carregar apenas os registros que em 2015 estavam relacionados a uma unidade diferente de 2016. O que devo fazer pra trazer essas informações sem pesar o qlik? Hoje não consigo carregar as duas tabelas em sua totalidade pois trava meu pc.
Rafael,
Consegue postar uma amostra de dados pra eu tentar te ajudar?
Tabela 1
Cod. Cliente Cod. Empresa Ano
1 a 2015
2 b 2015
3 c 2015
Tabela 2
Cod. Cliente Cod. Empresa Ano
1 c 2016
2 b 2016
3 a 2016
O que eu preciso é:
- Carregar somente as diferenças entre as tabelas (linha 1 e linha 3 da Tabela 2 pois houve alteração de empresa) contendo o histórico da Tabela 1;
- Permitir que ao filtrar o Cod. Empresa em tabela no qlik, eu visualizasse todos os Cód. Cliente que entraram e os respectivos Cod. Empresa de origem, classificando-o como "Entrada" e todos os Cód. Cliente que saíram e os respectivos Cod. Empresa de destino, classificando -o como "Saída". De modo que ficaria assim:
Lista Tabela
Cód. Empresa Cód. Cliente 2015 2016 Classificação
a* 1 a c Saída
b 3 c a Entrada
c
Legenda: * - Seleção do item a na lista.
Vale a pena ressaltar que quando eu selecionasse o Cód. Empresa C, a classificação do Cód. Cliente 1 passaria a ser Entrada e do Cód. Cliente 3 passaria a ser Saída
Rafael,
Teste esse script e veja se a ideia lhe serve:
Tabela_1:
Load * Inline [
CodCliente,CodEmpresa,Ano
1,a,2015
2,b,2015
3,c,2015
];
Concatenate(Tabela_1)
Load * Inline [
CodCliente,CodEmpresa,Ano
1,c,2016
2,b,2016
3,a,2016
];
Left Join (Tabela_1)
Load
CodCliente,
CodEmpresa,
Ano,
If(CodCliente=Previous(CodCliente) and Ano<>Previous(Ano),If(CodEmpresa<>Previous(CodEmpresa),Previous(CodEmpresa))) as Origem,
If(CodCliente=Previous(CodCliente) and Ano<>Previous(Ano),If(CodEmpresa<>Previous(CodEmpresa),CodEmpresa)) as Destino;
Load
CodCliente,
CodEmpresa,
Ano
Resident Tabela_1 Order By CodCliente,Ano Asc;
Deixo anexo o qvf que fiz para seu exemplo.
Abs e Sucesso!!
Thiago, bom dia. Obrigado pelo retorno.
Não sei o que ocorreu mas os campos Origem e Destino estão vazios. Consegue verificar por favor?
MATR_2015:
LOAD
NU_ANO,
ID_MATR,
CO_PESSOA_FISICA,
CO_ENTIDADE
FROM
$(vCaminho)MATR_2015.CSV
(txt, codepage is 1252, embedded labels, delimiter is '|', msq);
Concatenate(MATR_2015)
MATR_2016:
LOAD
NU_ANO,
ID_MATR,
CO_PESSOA_FISICA,
CO_ENTIDADE
FROM
$(vCaminho)MATR_2016.CSV
(txt, codepage is 1252, embedded labels, delimiter is '|', msq);
Left Join(MATR_2015)
Load
NU_ANO,
ID_MATR,
CO_PESSOA_FISICA,
CO_ENTIDADE,
If(ID_MATR=Previous(ID_MATR) and NU_ANO<>Previous(NU_ANO),If(CO_ENTIDADE<>Previous(CO_ENTIDADE),Previous(CO_ENTIDADE))) as Origem,
If(ID_MATR=Previous(ID_MATR) and NU_ANO<>Previous(NU_ANO),If(CO_ENTIDADE<>Previous(CO_ENTIDADE),CO_ENTIDADE)) as Destino;
Load
NU_ANO,
ID_MATR,
CO_PESSOA_FISICA,
CO_ENTIDADE
Resident MATR_2015 Order By ID_MATR,NU_ANO Asc;
Consegue disponibilizar os csv's pra eu avaliar?
Thiago, boa tarde.
Os arquivos são muito grandes. Alguma outra forma me ajudar?
Tem como salvar os arquivos em qvd e mandar? Ou ainda, mandar o qvf carregado? Não preciso de todos os dados...na verdade preciso apenas de uma amostra (podem ser dados fictícios mas que representem a estrutura da base usada).
Thiagão. muito obrigado pelo empenho em ajudar. Mesmo em qvd fica muito grande. Segue um exemplo da base em excel, com a diferença que aqui as duas bases estão em um único arquivo.
Segue qvf utilizando os dados da planilha enviada.