Traduzido e adaptado de link. Autorizado por hic.

 

Set Analysis (Ou Análise de Conjuntos) é uma das funções mais complexas que você pode usar em QlikView ou Qlik Sense. Sua sintaxe normalmente é considerada complicada e existem algumas confusões em relação a este recurso.

 

Set Analysis é uma maneira de definir um escopo de agregação (conjunto de dados) diferente da seleção atual da sua aplicação. Pense nela como uma maneira de definir uma agregação condicional. A condição é avaliada como uma outra seleção (diferente da atual) e é avaliada antes  que o seu gráfico seja calculado. É por isso que não é possível montar uma condição que seja avaliada linha a linha.

Nota por cleveranjos: Esse detalhe passa desapercebido e gera muita confusão, muitos posts aparecem aqui tentando fazer uma condição de set analysis que seja avaliada diferentemente a cada linha do gráfico

 

Set Analysis é utilizado dentro de uma função de agregação, ex:

 

          Sum(Sales)


O primeiro passo é adicionar  as chaves que são a indicação que ali dentro vai um Set Analysis

 

          Sum( {…} Sales)

 

Isso irá definir o conjunto de dados sobre o qual a agregação (a soma no caso) será feita. Dentro você pode utilizar identificadores e operadores. Ex: '$' sobre a seleção corrente (defaul e opcional), '1' para todos os registros, '1-$' para todos os registros que estão excluídos.

 

Um conjunto de registros que você pode definir com uma seleção simples é chamada de "natural set". Nem todos os conjuntos de dados são "natural", por exemplo {1-$} não pode ser feita com através de uma seleção

 

O próximo passo é normalmente adicionar um modificador de conjunto, que é definido com <>. O modificador adiciona ou muda a seleção. Ele pode ser feito sobre qualquer "natural set" e é composto de uma lista de campos, cada um deles pode ter uma nova seleção.

Nota por cleveranjos: Pense nisso como você estivesse clicando em sua aplicação, selecionando valores em listas.


Agora você irá definir o conjunto de elementos para um campo, ou seja o conjunto de valores que podem definir a seleção. O elemento pode ser uma referência a um valor ou uma função P() ou E(). O mais comum no entanto é uma lista de valores ou uma pesquisa.

 

          Sum( {$<Date={…}>} Sales)  or  Sum( {$<Date=P(…)>} Sales)

 

Uma seleção pode ser definida com aspas duplas. Dessa maneira, valores que corresponderem à seleção serão incluídos no conjunto

 

          Sum( {$<Date={"…"}>} Sales)

 

Não utilize aspas simples para iniciar uma seleção. Aspas simples indicam valores literais, ou seja valores explícitos. Hoje aaspas simples funcionam, mas é um bug que será corrigido um dia.

 

Você pode também fazer uma seleção com uma comparação numérica, utilizando um operador relacional ( >, <, <=, >=). Se eles estiverem presentes, a seleção será feita respeitando esse operador.

 

 

          Sum( {$<Date={"<=…"}>} Sales)

 

Para piorar um pouco a situação,algumas vezes os valores que serão comparados são calculados. E para conseguir uma avaliação a ser calculada é necessária uma expansão de dolar, mais detalhes aqui

 

          Sum( {$<Date={"<=$(…)"}>} Sales)

 

Dentro do sinal de $ você precisa de uma expressão que se inicie com um "=" e contenha uma função de agregação

 

          Sum( {$<Date={"<=$(=Max(Date))"}>} Sales)

 

Nota por cleveranjos: O $ dentro da expansão de dólar nada tem a ver com o $ logo após a chave.

 

Como pode ver, existem muitos níveis dentro de uma expressão de sete analisys e muitos pares de chaves, parenteses e outros delimitadores que precisam ser verificados. Quando for escrever sua expressão, você precisa digitar sempre os pares primeiro e depois inclua o "miolo" para evitar erros de sintaxe

 

Leitura adicional:

Why is it called Set Analysis?

Dates in Set Analysis

Excluding values in Set Analysis