Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

Como usar ou substituir IF com mais de 100 níveis

Boa tarde pessoal, estou tentando resolver um problema de loops entre campos, cheguei em uma solução com IF, comparando se uma coluna é igual (=) ou diferente (<>) as outras.

Porém existe um limitação de 100 níveis dentro do IF.

Existe alguma função que substitui o IF, para que eu consiga verificar todas as possibilidades.

A sequencia é de A pra B pra C pra D pra E pra F,

se A<> B então C não pode ser igual a A,

quer dizer que está voltando,

mas C pode ser igual B ou diferente.

Capturar.PNG

Montei algo assim:

Comparando a primeira coluna com as outras, e depois a segunda com as outras e assim por diante.

IF( [Estação A] <> [Estação B] and [Estação A] = [Estação C] and [Estação A] <> [Estação D] and [Estação A] = [Estação E] and [Estação A] <> [Estação Z] , 'Invalido' ,

IF( [Estação A] = [Estação B] and [Estação A] <> [Estação C] and [Estação A] = [Estação D] and [Estação A] <> [Estação E] and [Estação A] = [Estação Z] , 'Invalido' ,

IF( [Estação A] <> [Estação B] and [Estação A] = [Estação C] and [Estação A] <> [Estação D] and [Estação A] <> [Estação E] and [Estação A] = [Estação Z] , 'Invalido' ,

IF( [Estação A] <> [Estação B] and [Estação A] <> [Estação C] and [Estação A] = [Estação D] and [Estação A] <> [Estação E] and [Estação A] = [Estação Z] , 'Invalido' ,

IF( [Estação A] = [Estação B] and [Estação A] = [Estação C] and [Estação A] <> [Estação D] and [Estação A] = [Estação E] and [Estação A] <> [Estação Z] , 'Invalido' ,

IF( [Estação A] <> [Estação B] and [Estação A] = [Estação C] and [Estação A] <> [Estação D] and [Estação A] <> [Estação E] and [Estação A] = [Estação Z] , 'Invalido' ,

IF( [Estação A] <> [Estação B] and [Estação A] = [Estação C] and [Estação A] = [Estação D] and [Estação A] <> [Estação E] and [Estação A] <> [Estação Z] , 'Invalido' ,

IF( [Estação A] <> [Estação B] and [Estação A] = [Estação C] and [Estação A] = [Estação D] and [Estação A] = [Estação E] and [Estação A] <> [Estação Z] , 'Invalido' ,

IF( [Estação A] <> [Estação B] and [Estação A] <> [Estação C] and [Estação A] = [Estação D] and [Estação A] = [Estação E] and [Estação A] <> [Estação Z] , 'Invalido' ,

IF( [Estação A] = [Estação B] and [Estação A] <> [Estação C] and [Estação A] <> [Estação D] and [Estação A] = [Estação E] and [Estação A] <> [Estação Z] , 'Invalido' ,

IF( [Estação A] = [Estação B] and [Estação A] <> [Estação C] and [Estação A] <> [Estação D] and [Estação A] <> [Estação E] and [Estação A] = [Estação Z] , 'Invalido' ,

IF( [Estação A] = [Estação B] and [Estação A] = [Estação C] and [Estação A] <> [Estação D] and [Estação A] <> [Estação E] and [Estação A] = [Estação Z] , 'Invalido' ,

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

IF( [Estação B] <> [Estação A] and [Estação B] <> [Estação C] and [Estação B] <> [Estação D] and [Estação B] <> [Estação E] and [Estação B] = [Estação Z] , 'Invalido' ,

IF( [Estação B] <> [Estação A] and [Estação B] = [Estação C] and [Estação B] <> [Estação D] and [Estação B] = [Estação E] and [Estação B] <> [Estação Z] , 'Invalido' ,

IF( [Estação B] = [Estação A] and [Estação B] <> [Estação C] and [Estação B] = [Estação D] and [Estação B] <> [Estação E] and [Estação B] = [Estação Z] , 'Invalido' ,

IF( [Estação B] <> [Estação A] and [Estação B] = [Estação C] and [Estação B] <> [Estação D] and [Estação B] <> [Estação E] and [Estação B] = [Estação Z] , 'Invalido' ,

IF( [Estação B] <> [Estação A] and [Estação B] <> [Estação C] and [Estação B] = [Estação D] and [Estação B] <> [Estação E] and [Estação B] = [Estação Z] , 'Invalido' ,

IF( [Estação B] = [Estação A] and [Estação B] = [Estação C] and [Estação B] <> [Estação D] and [Estação B] = [Estação E] and [Estação B] <> [Estação Z] , 'Invalido' ,

IF( [Estação B] <> [Estação A] and [Estação B] = [Estação C] and [Estação B] <> [Estação D] and [Estação B] <> [Estação E] and [Estação B] = [Estação Z] , 'Invalido' ,

IF( [Estação B] <> [Estação A] and [Estação B] <> [Estação C] and [Estação B] = [Estação D] and [Estação B] = [Estação E] and [Estação B] <> [Estação Z] , 'Invalido' ,

IF( [Estação B] = [Estação A] and [Estação B] <> [Estação C] and [Estação B] <> [Estação D] and [Estação B] = [Estação E] and [Estação B] <> [Estação Z] , 'Invalido' ,

IF( [Estação B] = [Estação A] and [Estação B] <> [Estação C] and [Estação B] <> [Estação D] and [Estação B] <> [Estação E] and [Estação B] = [Estação Z] , 'Invalido' ,

IF( [Estação B] = [Estação A] and [Estação B] = [Estação C] and [Estação B] <> [Estação D] and [Estação B] <> [Estação E] and [Estação B] = [Estação Z] , 'Invalido' ,

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

IF( [Estação C] <> [Estação A] and [Estação C] <> [Estação B] and [Estação C] <> [Estação D] and [Estação C] <> [Estação E] and [Estação C] = [Estação Z] , 'Invalido' ,

IF( [Estação C] <> [Estação A] and [Estação C] = [Estação B] and [Estação C] <> [Estação D] and [Estação C] = [Estação E] and [Estação C] <> [Estação Z] , 'Invalido' ,

IF( [Estação C] = [Estação A] and [Estação C] <> [Estação B] and [Estação C] = [Estação D] and [Estação C] <> [Estação E] and [Estação C] = [Estação Z] , 'Invalido' ,

IF( [Estação C] <> [Estação A] and [Estação C] = [Estação B] and [Estação C] <> [Estação D] and [Estação C] <> [Estação E] and [Estação C] = [Estação Z] , 'Invalido' ,

IF( [Estação C] <> [Estação A] and [Estação C] <> [Estação B] and [Estação C] = [Estação D] and [Estação C] <> [Estação E] and [Estação C] = [Estação Z] , 'Invalido' ,

IF( [Estação C] = [Estação A] and [Estação C] = [Estação B] and [Estação C] <> [Estação D] and [Estação C] = [Estação E] and [Estação C] <> [Estação Z] , 'Invalido' ,

IF( [Estação C] <> [Estação A] and [Estação C] = [Estação B] and [Estação C] <> [Estação D] and [Estação C] <> [Estação E] and [Estação C] = [Estação Z] , 'Invalido' ,

IF( [Estação C] = [Estação A] and [Estação C] <> [Estação B] and [Estação C] <> [Estação D] and [Estação C] = [Estação E] and [Estação C] <> [Estação Z] , 'Invalido' ,

IF( [Estação C] = [Estação A] and [Estação C] <> [Estação B] and [Estação C] <> [Estação D] and [Estação C] <> [Estação E] and [Estação C] = [Estação Z] , 'Invalido' ,

IF( [Estação C] = [Estação A] and [Estação C] = [Estação B] and [Estação C] <> [Estação D] and [Estação C] <> [Estação E] and [Estação C] = [Estação Z] , 'Invalido' ,

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

Aí o código segue comparando cada campo com o restante

3 Replies
afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

Jeu,

Poderias, por exemplo para a algumas linhas especificas mostrar o que seria o resultado esperado ou pretendido?

No seu script tem um monte de validação e o resultado sempre invalido.  Quando seria valido?  Podes mostrar exemplo?

furtado@farolbi.com.br
Ricardo_Gerhard
Employee
Employee

Bom dia Jeu,

  O que poderia auxiliar nesse seu caso, seria o encadeamento das condições, ao invés de gerar cada uma de forma individual, como no exemplo abaixo^:

If(field1 = 'yes',

     If(field2 = 'yes', 'match', 'match1),

     If(field2 = 'yes', 'match2', 'no match')) as MatchFlag

   Recomendo também, quase que obrigatoriamente, que trate esses dados na carga, pois ser deixares em um objeto tais informações, poderá gerar alguns travamentos.

Ricardo Gerhard
OEM Solution Architect
LATAM
Anonymous
Not applicable
Author

Alessandro,

Essas validações são de condições em em que uma estação repete, de maneira não sequencial,

na primeira linha aparece

 

Estação AEstação BEstação CEstação DEstação EEstação F
BREAGBREALOBREAGBREALOBREAGBREALO

veja que BREAG aparece em A C e E isso é uma rota inválida, pois significa que partiu de BREAG foi para BREALO e voltou para BREAG.

RCEBGIRCEAMRCEBVJBOPRAIPJCISRCEIMB

Agora esta rota é valida pois houve paradas em estações diferentes,

BREAGBREAGBREAGJBOPRAJBOPRARCEIMB

Esta também é valida pois houve repetição de estações porém sequencial.

o que quero é evitar os loops, onde repeti estações não sequencial como na primeira linha.

Então única função que conheço que compara colunas é o IF, então comecei a compara a Estação A com as demais e depois a B com as demais e assim por diante.

abaixo está alguns IFs, que validam as rotas.

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

IF( [Estação A] = [Estação B] and [Estação A] = [Estação C] and [Estação A] = [Estação D] and [Estação A] = [Estação E] and [Estação A] <> [Estação Z] , 'Valido' , // 1

IF( [Estação A] = [Estação B] and [Estação A] <> [Estação C] and [Estação A] <> [Estação D] and [Estação A] <> [Estação E] and [Estação A] <> [Estação Z] , 'Valido' , // 3

IF( [Estação A] = [Estação B] and [Estação A] = [Estação C] and [Estação A] <> [Estação D] and [Estação A] <> [Estação E] and [Estação A] <> [Estação Z] , 'Valido' , // 4

IF( [Estação A] = [Estação B] and [Estação A] = [Estação C] and [Estação A] = [Estação D] and [Estação A] <> [Estação E] and [Estação A] <> [Estação Z] , 'Valido' , // 5

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

IF( [Estação B] <> [Estação A] and [Estação B] = [Estação C] and [Estação B] = [Estação D] and [Estação B] <> [Estação E] and [Estação B] <> [Estação Z] , 'Valido' , // 6

IF( [Estação B] <> [Estação A] and [Estação B] = [Estação C] and [Estação B] = [Estação D] and [Estação B] = [Estação E] and [Estação B] <> [Estação Z] , 'Valido' , // 7

IF( [Estação B] <> [Estação A] and [Estação B] = [Estação C] and [Estação B] = [Estação D] and [Estação B] = [Estação E] and [Estação B] = [Estação Z] , 'Valido' , // 8

IF( [Estação B] = [Estação A] and [Estação B] = [Estação C] and [Estação B] = [Estação D] and [Estação B] = [Estação E] and [Estação B] <> [Estação Z] , 'Valido' , // 9

IF( [Estação B] = [Estação A] and [Estação B] <> [Estação C] and [Estação B] <> [Estação D] and [Estação B] <> [Estação E] and [Estação B] <> [Estação Z] , 'Valido' , // 11

IF( [Estação B] <> [Estação A] and [Estação B] = [Estação C] and [Estação B] <> [Estação D] and [Estação B] <> [Estação E] and [Estação B] <> [Estação Z] , 'Valido' , // 12

IF( [Estação B] = [Estação A] and [Estação B] = [Estação C] and [Estação B] <> [Estação D] and [Estação B] <> [Estação E] and [Estação B] <> [Estação Z] , 'Valido' , // 13

IF( [Estação B] = [Estação A] and [Estação B] = [Estação C] and [Estação B] = [Estação D] and [Estação B] <> [Estação E] and [Estação B] <> [Estação Z] , 'Valido' , // 14

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

IF( [Estação C] <> [Estação A] and [Estação C] = [Estação B] and [Estação C] = [Estação D] and [Estação C] <> [Estação E] and [Estação C] <> [Estação Z] , 'Valido' , // 15

IF( [Estação C] <> [Estação A] and [Estação C] = [Estação B] and [Estação C] = [Estação D] and [Estação C] = [Estação E] and [Estação C] <> [Estação Z] , 'Valido' , // 16

IF( [Estação C] <> [Estação A] and [Estação C] <> [Estação B] and [Estação C] = [Estação D] and [Estação C] = [Estação E] and [Estação C] <> [Estação Z] , 'Valido' , // 17

IF( [Estação C] <> [Estação A] and [Estação C] = [Estação B] and [Estação C] = [Estação D] and [Estação C] = [Estação E] and [Estação C] = [Estação Z] , 'Valido' , // 18

IF( [Estação C] = [Estação A] and [Estação C] = [Estação B] and [Estação C] = [Estação D] and [Estação C] = [Estação E] and [Estação C] <> [Estação Z] , 'Valido' , // 19

IF( [Estação C] <> [Estação A] and [Estação C] = [Estação B] and [Estação C] <> [Estação D] and [Estação C] <> [Estação E] and [Estação C] <> [Estação Z] , 'Valido' , // 21

IF( [Estação C] <> [Estação A] and [Estação C] <> [Estação B] and [Estação C] = [Estação D] and [Estação C] <> [Estação E] and [Estação C] <> [Estação Z] , 'Valido' , // 22

IF( [Estação C] = [Estação A] and [Estação C] = [Estação B] and [Estação C] <> [Estação D] and [Estação C] <> [Estação E] and [Estação C] <> [Estação Z] , 'Valido' , // 23

IF( [Estação C] = [Estação A] and [Estação C] = [Estação B] and [Estação C] = [Estação D] and [Estação C] <> [Estação E] and [Estação C] <> [Estação Z] , 'Valido' , // 24

IF( [Estação C] <> [Estação A] and [Estação C] <> [Estação B] and [Estação C] = [Estação D] and [Estação C] = [Estação E] and [Estação C] = [Estação Z] , 'Valido' , // 25

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

IF( [Estação D] <> [Estação A] and [Estação D] = [Estação B] and [Estação D] = [Estação C] and [Estação D] <> [Estação E] and [Estação D] <> [Estação Z] , 'Valido' , // 26

IF( [Estação D] <> [Estação A] and [Estação D] = [Estação B] and [Estação D] = [Estação C] and [Estação D] = [Estação E] and [Estação D] <> [Estação Z] , 'Valido' , // 27

IF( [Estação D] <> [Estação A] and [Estação D] <> [Estação B] and [Estação D] = [Estação C] and [Estação D] = [Estação E] and [Estação D] <> [Estação Z] , 'Valido' , // 28

IF( [Estação D] <> [Estação A] and [Estação D] = [Estação B] and [Estação D] = [Estação C] and [Estação D] = [Estação E] and [Estação D] = [Estação Z] , 'Valido' , // 29

IF( [Estação D] = [Estação A] and [Estação D] = [Estação B] and [Estação D] = [Estação C] and [Estação D] = [Estação E] and [Estação D] <> [Estação Z] , 'Valido' , // 30

IF( [Estação D] <> [Estação A] and [Estação D] <> [Estação B] and [Estação D] = [Estação C] and [Estação D] <> [Estação E] and [Estação D] <> [Estação Z] , 'Valido' , // 32

IF( [Estação D] <> [Estação A] and [Estação D] <> [Estação B] and [Estação D] <> [Estação C] and [Estação D] = [Estação E] and [Estação D] <> [Estação Z] , 'Valido' , // 33

IF( [Estação D] = [Estação A] and [Estação D] = [Estação B] and [Estação D] = [Estação C] and [Estação D] <> [Estação E] and [Estação D] <> [Estação Z] , 'Valido' , // 34

IF( [Estação D] <> [Estação A] and [Estação D] <> [Estação B] and [Estação D] = [Estação C] and [Estação D] = [Estação E] and [Estação D] = [Estação Z] , 'Valido' , // 35

IF( [Estação D] <> [Estação A] and [Estação D] <> [Estação B] and [Estação D] <> [Estação C] and [Estação D] = [Estação E] and [Estação D] = [Estação Z] , 'Valido' , // 36

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

IF( [Estação E] <> [Estação A] and [Estação E] = [Estação B] and [Estação E] = [Estação C] and [Estação E] = [Estação D] and [Estação E] <> [Estação Z] , 'Valido' , // 37

IF( [Estação E] <> [Estação A] and [Estação E] <> [Estação B] and [Estação E] = [Estação C] and [Estação E] = [Estação D] and [Estação E] <> [Estação Z] , 'Valido' , // 38

IF( [Estação E] <> [Estação A] and [Estação E] = [Estação B] and [Estação E] = [Estação C] and [Estação E] = [Estação D] and [Estação E] = [Estação Z] , 'Valido' , // 39

IF( [Estação E] = [Estação A] and [Estação E] = [Estação B] and [Estação E] = [Estação C] and [Estação E] = [Estação D] and [Estação E] <> [Estação Z] , 'Valido' , // 40

IF( [Estação E] <> [Estação A] and [Estação E] <> [Estação B] and [Estação E] <> [Estação C] and [Estação E] = [Estação D] and [Estação E] <> [Estação Z] , 'Valido' , // 42

IF( [Estação E] <> [Estação A] and [Estação E] <> [Estação B] and [Estação E] <> [Estação C] and [Estação E] <> [Estação D] and [Estação E] = [Estação Z] , 'Valido' , // 43

IF( [Estação E] <> [Estação A] and [Estação E] <> [Estação B] and [Estação E] = [Estação C] and [Estação E] = [Estação D] and [Estação E] = [Estação Z] , 'Valido' , // 44

IF( [Estação E] <> [Estação A] and [Estação E] <> [Estação B] and [Estação E] <> [Estação C] and [Estação E] = [Estação D] and [Estação E] = [Estação Z] , 'Valido' , // 45

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