Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Duvida - Indirect Set Analysis

Boa tarde!

Tenho uma tabela que armazena histórico dos dados de um arquivo que recebo diariamente.

No primeiro arquivo do mês tenho uma base de CPFs ativos que irei trabalhar o mês inteiro.

Nos próximos dias recebo a base com atualizações. Se algum CPF der baixa não aparece no próxima arquivo, se algum CPF der entrada, é incluso no próximo.

Para medir a eficiência dos CPFs do primeiro arquivo do mês, preciso verificar se eles se encontram no ultimo arquivo do mês

ou seja, preciso dos CPFs do primeiro arquivo que não se encontram no ultimo.

As regras para pegar a base que será trabalhada São:

DATA_ARQ = data do arquivo, no caso, o primeiro arquivo do mês

CPF = Não pode conter os CPFs que entraram no mês anterior

UF = Diferente de Acre

Então, para pegar a base em que trabalharei utilizo a expressão:

=SUM

(

  {1<

       CONS.DATA_ARQ = {'$(@MIN_DT_CONS_MES)'}

       ,CONS.CPF = E({< ENTR.MES_ENTRADA = {$(@MES_ANTERIOR)} >}CONS.CPF)

       ,CONS.UF -= {'AC'}

  >} CONS.QTD

) //Retorna aprox 70.000 - OK

Como faço para saber, desta base, os CPFs que não se encontram no arquivo do ultimo dia?

Estou utilizando a expressão abaixo, mas não está correta...

=SUM

(

  {1<

      CONS.DATA_ARQ = {'$(@MIN_CONS_MES)'}

       ,CONS.UF -= {'AC'}

       , CONS.CPF = E({<CONS.DATA_ARQ = {'$(@MAX_DT_CONS_MES)'}>}CONS.CPF)

       ,CONS.CPF = E({< ENTR.MES_ENTRADA = {$(@MES_ANTERIOR)} >} CONS.CPF)

  >} CONS.QTD

) // Retorna aprox  70.000 - No Excel, comparando as bases na mão o valor correto seria de aprox. 2.000 CPFs

Alguém poderia ajudar?

Abraço!

Labels (2)
2 Replies
luizclaudio
Creator
Creator

Boa tarde Daniel

Já tentou fazer a verificação no momento da carga?

Usando a função exists ??

Luiz Cláudio

felipe_dutra
Partner - Creator
Partner - Creator

Daniel,

É melhor fazer isso no scripr.

Ex:

Crie uma tabela lendo os CPFs do primeiro dia do Mês.

Crie uma tabela lendo os CPFs do último dia do Mês com um Flag (Ex: 1 as Flag_CPF_Presente)  e faça um left join na tabela anterior.

Desta forma, apenas os CPFs com o Flag_CPF_Presente=1 estavam presentes na primeira e na última tabela do do mês.

Considero esta a forma mais fácil de exemplificar e por isso a citei, mas se quiser um desempenho melhor, pesquise sobre Mapping ou função Exists().

Abs,

Felipe