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:
Muito bom Clever
Obrigado mais uma vez
Abs
Excelente Cléver, muito claro e conciso!!!
Para as pessoas que recém começam com o set analysis, sua nota é muito boa.
Um abraco!!