Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
jeuqconsulting
Visitor

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

Tags (1)
3 Replies
MVP
MVP

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

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?

Employee
Employee

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

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.

jeuqconsulting
Visitor

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

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

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