Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content
Announcements
Yikes! We're aware of some unexpected text appearing at the top of each group and are looking into it.
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