Exemplos de Estados Alternativos em Expressões de Gráfico

Esses exemplos têm o objetivo de mostrar práticas recomendadas quanto ao uso de estados alternativos por Desenvolvedores e/ou Usuários Avançados do QlikView. Esses exemplos estão disponíveis no arquivo: ‘Alternate States Functionality.qvw’

Sincronizando Seleções entre Estados

As seguintes expressões podem ser usadas em um único gráfico:

count({$} DISTINCT [Número da fatura])

count({State1} DISTINCT [Número da fatura])

count({State2} DISTINCT [Número da fatura])

Existe um problema nesse método: o Desenvolvedor do QlikView deve duplicar as seleções (listas e seleções múltiplas) para os três estados a fim de que o usuário final possa selecionar opções apropriadas para os diversos estados. Em muitos casos, o Desenvolvedor do QlikView precisará ter um conjunto de seleções “comuns” disponível para todos os estados. Desse modo, o usuário final poderá definir o contexto para os diversos gráficos e, então, usar seleções específicas para mostrar as diferenças entre os estados. A Análise de Conjunto pode ser usada com os estados para manter a consistência de determinadas seleções entre eles.

count({State1<Year = $::Year, Month = $::Month>} DISTINCT [Número da fatura])

count({State2<Year = $::Year, Month = $::Month>} DISTINCT [Número da fatura])

O Desenvolvedor do QlikView manterá as seleções de Ano e Mês no State1 e no State2 sincronizadas com as seleções de Ano e Mês no estado padrão. O Desenvolvedor do QlikView pode adicionar elementos aos modificadores de conjunto conforme necessário para manter campos ainda mais consistentes entre os estados.

Operadores de conjunto

É possível usar operadores de conjunto (+, *, -, /) com estados. As expressões a seguir são válidas e contarão números de fatura diferentes que estão no estado padrão ou no State1.

Examples:  

count({$ + State1} DISTINCT [Número da fatura])
conta os números de faturas distintas na união do estado <padrão> e State1.

count({1 - State1} DISTINCT [Número da fatura])
conta os números de faturas distintas que não estão em State1.

count({State1 * State2} DISTINCT [Número da fatura])
conta os números de faturas distintas na união que estão em ambos, estado <padrão> e State1.

Nota: Tome cuidado ao usar operadores de conjunto dessa maneira. Em alguns casos, o resultado não será o esperado. Isso acontece porque as seleções em um determinado estado geram um conjunto de dados que pode não ser totalmente compatível com os conjuntos com que ele está sendo combinado. Isso acontece principalmente conforme a complexidade do modelo de dados aumenta.

Definições de Valor de Campo Implícito

Outra maneira de usar operadores de conjunto é com as funções de elemento P() e E(). Essas funções só estão disponíveis nas expressões de conjunto.

Examples:  

count({$<[Invoice Number] = p({State1} [Número da fatura])>} DISTINCT [Número da fatura])
Esta expressão conta os números de faturas distintas no estado <default> com base nos possíveis números de faturas disponíveis no State1.

É parecido, mas não totalmente equivalente, a esta expressão:

count({$<[Invoice Number] = State1::[Invoice Number]>} [Número da fatura]) * p( [Número da fatura])>} DISTINCT [Número da fatura])

A diferença entre as expressões é que, na primeira, os possíveis valores de número de fatura do State1 são passados para o estado padrão. Na segunda expressão, os valores selecionados em State1 são passados para o estado padrão. Se o usuário não tiver selecionado nenhum número de fatura no State1, nenhum valor de número de fatura será passado para o estado padrão.

Os operadores de conjunto são usados melhor nos modificadores de conjunto. A expressão a seguir encontra a interseção dos possíveis números de fatura de State1 e State2 e passa esses valores para os números de fatura no estado padrão.

Examples:  

count({$<[Invoice Number] = p({State1} [Número da fatura]) * p({State2} [Número da fatura])>} DISTINCT [Número da fatura])
A expressão usada para encontrar a intersecção de números de faturas no estado <padrão> e State1 é a seguinte:

count({$<[Invoice Number] = p({$} [Número da fatura]) * p({State1} [Número da fatura])>} DISTINCT [Número da fatura])

Essa expressão pode parecer confusa porque usa um estado (<padrão> nesse caso) na função do elemento e um identificador de conjunto. Tenha em mente que a função do elemento p($) está retornando os possíveis valores no estado padrão. O identificador de conjunto/estado {$} está sendo modificado pelo resultado das funções de elemento. Todas as seleções de fatura atualmente existentes no estado padrão estão sendo substituídas pelos valores da interseção das funções de elemento.

Deve-se observar que a expressão acima ainda não está totalmente correta porque não sincroniza as seleções comuns entre o estado padrão e o State1. Veja abaixo uma expressão que fará isso:

Examples:  

count({$<[Invoice Number] = p({$} [Número da fatura]) * p({State1<Year = $::Year, Month = $::Month>} [Número da fatura])>} DISTINCT [Número da fatura])

Como antes, o Desenvolvedor do QlikView pode adicionar campos ao modificador para manter as seleções consistentes entre os diversos estados.