Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
mvgrl1976
New 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?

Tags (1)
7 Replies
giovanneb
Contributor II

Re: Eliminar duplicatas arquivo

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

MVP
MVP

Re: Eliminar duplicatas arquivo

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



MVP
MVP

Re: Eliminar duplicatas arquivo

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

mvgrl1976
New Contributor

Re: Eliminar duplicatas arquivo

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
Valued Contributor III

Re: Eliminar duplicatas arquivo

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
WhatsApp: 24 98152-1675
Skype: justen.thiago
MVP
MVP

Re: Eliminar duplicatas arquivo

usando o applymap não deu?

mvgrl1976
New Contributor

Re: Eliminar duplicatas arquivo

Olá Alessandro,

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

Obrigado