Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
mvgrl1976
Contributor
Contributor

Eliminar duplicatas arquivo

Bom dia,

Temos um script que trabalha dados de extrações automáticas (arquivos txt) disponibilizados num portal do Tesouro Nacional (informações orçamentárias/financeiras).

Mapeamos os campos das tabelas no script com base na posição de cada caractere dos arquivos texto. Segue um trecho:

Lista_Favorecidos_Doc:

LOAD distinct

[@2:15]    as [Favorecido Doc],

[@2:15] as [NE Inicial - Favorecido], //// chave

if([@16:16]=1,'PJ',

if([@16:16]=2,'PF',

if([@16:16]=3,'IG', 'UG'))) as [Tipo Favorecido Doc],

if([@16:16]=1,'Pessoa Jurídica',

if([@16:16]=2,'Pessoa Física',

if([@16:16]=3,'Inscrição Genérica',

'Unidade Gestora'))) as [Nome Tipo Favorecido Doc],

[@17:35]    as  [Nome Reduzido Favorecido Doc],

[@36:90]    as  [Nome Favorecido Doc],

[@2:15]&' - '&[@36:90] as  [Favorecido Completo Doc],

[@91:155]    as  [Endereço Favorecido Doc],

[@156:159]    as  [Cód. Município Favorecido Doc],

[@160:167]    as  [CEP Favorecido Doc],

[@168:169]    as  [UF Favorecido Doc],

[@170:172]    as  [Cód. País Favorecido Doc],

[@173:217]    as  [Telefone Favorecido Doc],

[@218:262]    as  [End. Eletrônico Favorecido Doc],

[@263:265]    as  [Cód. Natureza Jurídica Favorecido Doc],

FROM

[..\1. Dados - originais\Credor\*.TXT]

(fix, codepage is 1252);


São feitos alguns joins para acrescentar outros campos vindos de outras tabelas (também criadas a partir de txts) e no final, o script gera um arquivo texto que serve de input para uma aplicação em Access. Este arquivo deveria ter registros únicos com base na chave principal, mas está havendo duplicatas em função de um único campo que diverge, como abaixo.

exemplo duplicata.PNG

Preciso fazer o script ler os arquivos texto e na hora de dar o store no arquivo de saída, considerar apenas a primeira ocorrência da chave do registro, ignorando as eventuais duplicatas. Já tentei usar o FirstValue mas sem êxito. Alguma ideia de como implementar?

Labels (2)
7 Replies
giovanneb
Creator II
Creator II

Fazendo a agregação com firstvalue(chave) deveria ter resolvido o problema.

afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

Marcos,

quem sabe usando o applymap


Map_Nome:

mapping LOAD

      [@2:15]   as  [NE Inicial - Favorecido], //// chave

      [@36:90]      as  [Nome Favorecido Doc]

FROM [..\1. Dados - originais\Credor\*.TXT] (fix, codepage is 1252);



Lista_Favorecidos_Doc:

LOAD distinct

      [@2:15]      as [Favorecido Doc],

      [@2:15]   as [NE Inicial - Favorecido], //// chave

      if([@16:16]=1,'PJ',

      if([@16:16]=2,'PF',

      if([@16:16]=3,'IG', 'UG'))) as [Tipo Favorecido Doc],

      if([@16:16]=1,'Pessoa Jurídica',

      if([@16:16]=2,'Pessoa Física',

      if([@16:16]=3,'Inscrição Genérica',

      'Unidade Gestora')))       as [Nome Tipo Favorecido Doc],

      //============================================================================

      //[@17:35]      as  [Nome Reduzido Favorecido Doc],

    ApplyMap('Map_Nome',[@2:15]) as  [Nome Reduzido Favorecido Doc],

      //============================================================================

   

   

      [@36:90]      as  [Nome Favorecido Doc],

      [@2:15]&' - '&[@36:90]     as  [Favorecido Completo Doc],

      [@91:155]     as  [Endereço Favorecido Doc],

      [@156:159]    as  [Cód. Município Favorecido Doc],

      [@160:167]    as  [CEP Favorecido Doc],

      [@168:169]    as  [UF Favorecido Doc],

      @170:172]    as  [Cód. País Favorecido Doc],

      [@173:217]    as  [Telefone Favorecido Doc],

      [@218:262]    as  [End. Eletrônico Favorecido Doc],

      [@263:265]    as  [Cód. Natureza Jurídica Favorecido Doc]

FROM [..\1. Dados - originais\Credor\*.TXT] (fix, codepage is 1252);



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

se não fiz no campo correto é só ajustar

furtado@farolbi.com.br
mvgrl1976
Contributor
Contributor
Author

Consegui fazer funcionar o FirstValue "quebrando" o carregamento da tabela, para isolar o group by usando apenas a chave e o campo aplicado à função. Se eu carrego mais campos num mesmo load e agrego com o group by apenas um campo, aparece a mensagem "Invalid Expression".

left Join

load distinct

[NE Inicial - Favorecido] as [NE_Favorecido], //chave para o join

FirstValue([Nome Favorecido Doc]) as [NE_Favor_Nome]

Resident Lista_Favorecidos_Doc Group By [NE Inicial - Favorecido];


left Join

load distinct

[NE Inicial - Favorecido] as [NE_Favorecido], //chave para o join

[Tipo Favorecido Doc] as [NE_Favor_Tipo_Cod],

[Nome Tipo Favorecido Doc] as [NE_Favor_Tipo_Nome]

Resident Lista_Favorecidos_Doc;


Parecido com o relatado na thread error message "invalid expression" while loading .


Alguém sabe dizer o por que desse comportamento do group by? seria assim para todas as funções de agregação?

Thiago_Justen_

Teste apenas com a exclusão do distinct:

left Join

load distinct

[NE Inicial - Favorecido] as [NE_Favorecido], //chave para o join

FirstValue([Nome Favorecido Doc]) as [NE_Favor_Nome]

Resident Lista_Favorecidos_Doc Group By [NE Inicial - Favorecido];


left Join

load distinct

[NE Inicial - Favorecido] as [NE_Favorecido], //chave para o join

[Tipo Favorecido Doc] as [NE_Favor_Tipo_Cod],

[Nome Tipo Favorecido Doc] as [NE_Favor_Tipo_Nome]

Resident Lista_Favorecidos_Doc;

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago
afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

usando o applymap não deu?

furtado@farolbi.com.br
mvgrl1976
Contributor
Contributor
Author

Olá Alessandro,

Como funcionou isolando o group by, acabou que não testei o applymap. Vou tentar arrumar um tempinho aqui para testar.

Obrigado