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

diferença entre 2 tabelas

Oi, eu preciso obter a diferença entre 2 tabelas, em ambas eu uso a coluna ID, em t1. Se eu tenho mais registros do que em t2. Id, o que eu quero é que, se o ID de t2 estiver em t1, ele será descontado.
Exemplo

T1.Id
1
2
3
4

t2.id
1
2
4

isso me dá como resultado "1", que é a quantidade de ID que não foi repetida

Esta é a fórmula que estou usando, mas acho que não funciona:

 

Count(distinct {$< t1.id=E( t2.id)>} t1.id)


Saudações

3 Replies
marco_almeida
Creator II
Creator II

Fala jovem. Tudo certo?

Primeiro realmente sua expressão não vai funcionar para o seu caso pois a função E (excluded) serve para valores fora do filtro ativo. O seu caso é de miss value.

Bom, consigo vislumbrar três soluções possíveis para resolver o seu problema:

  • Solução 1:  Faça um join entre as duas tabelas e crie uma flag de conciliação entre elas. Ai faça a contagem/soma desas flag. Problema: Se as tabelas forem muito grandes pode existir lentidão.

 

Sum(FLAG)

 

  • Solução 2: Nessa solução estou supondo que suas tabelas estão relacionadas. Possivelmente sua Tabela 2 possui campos além do campo chave. Então é possível fazer a seguinte expressão:

 

Count({< VALOR2 = {"*"} >}DISTINCT CHAVE)

 

  • Solução 3: Nessa solução suponho que suas tabelas não estão relacionadas. Nesse caso você pode fazer a construção de uma expressão Match. Ai sua expressão ficaria da seguinte maneira:

 

Count({<CHAVE1 = {$(=Concat(DISTINCT '''' & CHAVE2 & '''', ','))}>}DISTINCT CHAVE1)

 

Abaixo coloco as tabelas exemplo para as soluções.

 

/*======== SOLUÇÃO 1 ========*/
TABELA1:
LOAD * INLINE [
	CHAVE, VALOR1
    1, A
    2, B
    3, C
    4, D
    5, E
];

LEFT JOIN(TABELA1)
TABELA2:
LOAD
	*
    , 1 as FLAG
INLINE [
	CHAVE, VALOR2
    1, Q
    3, W
    4, E
];

/*======== SOLUÇÃO 2 ========*/
TABELA1:
LOAD * INLINE [
	CHAVE, VALOR1
    1, A
    2, B
    3, C
    4, D
    5, E
];

TABELA2:
LOAD * INLINE [
	CHAVE, VALOR2
    1, Q
    3, W
    4, E
];

/*======== SOLUÇÃO 3 ========*/
TABELA1:
LOAD * INLINE [
	CHAVE1, VALOR1
    1, A
    2, B
    3, C
    4, D
    5, E
];

TABELA2:
LOAD * INLINE [
	CHAVE2, VALOR2
    1, Q
    3, W
    4, E
];

 

 

Grupo Telegram Qlik Brasil: https://t.me/joinchat/AeRmnUmcxQ02L00g3x-HtQ
afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

além das opções do @marco_almeida  me permita colocar outra, usando o NOT EXISTS()

 

2020-01-04 11_35_59-QlikView x64 - [F__tmp_teste.qvw_].png

e ai basta uma expressão

count(distinct  [Não Existe])

 

para dar a qtde de IDs que são únicos na tabela 1

 

2020-01-04 11_37_12-Editar Script [F__tmp_teste.qvw_].png

furtado@farolbi.com.br
marco_almeida
Creator II
Creator II

@afurtado , tinha esquecido dessa função.  Eu particularmente não gosto de usar, mas se resolver o problema ta valendo 😁

Grupo Telegram Qlik Brasil: https://t.me/joinchat/AeRmnUmcxQ02L00g3x-HtQ