Skip to main content
Announcements
Marching toward a simplified navigation! READ ON
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

Carregar somente dados distintos de duas tabelas

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.

12 Replies
Thiago_Justen_

Rafael,

Consegue postar uma amostra de dados pra eu tentar te ajudar?

         

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago
Anonymous
Not applicable
Author

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

Thiago_Justen_

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 Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago
Anonymous
Not applicable
Author

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;

Thiago_Justen_

Consegue disponibilizar os csv's pra eu avaliar?

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago
Anonymous
Not applicable
Author

Thiago, boa tarde.

Os arquivos são muito grandes. Alguma outra forma me ajudar?

Thiago_Justen_

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).

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago
Anonymous
Not applicable
Author

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.

Thiago_Justen_

Segue qvf utilizando os dados da planilha enviada.

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