Set Analysis (Análise de Conjunto)
Autor: Tonial , Fernando | Publicado: 2013-01-12T17:30:00-02:00

O que é Set Analysis (Análise de Conjunto)?

O Set Analysis é similar à uma seleção, no qual provê um método para definir conjuntos (sets) de informação que são independentes das seleções atuais.
Podendo criar conjuntos baseados em outros conjuntos e devem ser usados em uma função de agregação.

A sintaxe é dividida em três categorias:

Identificadores:
Os identificadores delimitam ao QlikView qual o conjunto inicial de análise.

Operadores:Realizam operações de conjunto com base nos identificadores

Modificadores:
Um conjunto pode ser modificado por uma seleção adicional ou alterada. Uma modificação como essa pode ser escrita na expressão do conjunto. O modificador é composto por um dos diversos nomes de campo, cada um seguido de uma seleção que deve ser feita no campo e estar entre &lt; e &gt;. 

Expressões Simples Utilizando os Identificadores

&nbsp;&nbsp;&nbsp; 1. Calcula a Soma das "Vendas" baseado nas seleções atuais, o mesmo que Sum(Vendas)
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; Sum({$} Vendas)

&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 2. Conta os valores do campo "Cliente" baseado nas seleções atuais, o mesmo que Count(Cliente)

&nbsp;&nbsp;&nbsp; Count({$} Cliente)

&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 3. Calcula a Soma das "Vendas" baseado em todos os registros de sua aplicação, ignora todas as seleções, mas leva em consideração a dimensão que está no gráfico

&nbsp;&nbsp;&nbsp; Sum({1} Vendas)


&nbsp;&nbsp;&nbsp; 4. Calcula a Soma das "Vendas" baseado no marcador com o ID "BM01"

&nbsp;&nbsp;&nbsp; Sum({BM01} Vendas)


&nbsp;&nbsp;&nbsp; 5. Calcula a soma das "Vendas" para tudo que não faz parte da seleção atual

&nbsp;&nbsp;&nbsp; Sum({1-$} Vendas)

&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; 6. Calcula a soma das "Vendas" baseado na seleção anterior

&nbsp;&nbsp;&nbsp; Sum({$1} Vendas)

&nbsp;&nbsp;&nbsp; 7. Calcula a soma das "Vendas" baseado nas próxima seleção

&nbsp;&nbsp;&nbsp; Sum({$_1} Vendas)
&nbsp;&nbsp;&nbsp; 

&nbsp;&nbsp;&nbsp; 8. Calcula a Soma das "Vendas" baseado em todos os registros de sua aplicação, nesse caso, ignora todas as seleções e dimensões

&nbsp;&nbsp;&nbsp; Sum({1} Total Vendas)
&nbsp;&nbsp;&nbsp; 

Exemplos com Modificadores

Em alguns casos, necessitamos fixar uma selação ou alterar as seleções atuais numa determinada expressão. Veja agora alguns exemplos:
Modificadores Básicos

&nbsp;&nbsp;&nbsp; 9. Calcula a soma das "Vendas" ignorando todas as seleções atuais mas fixa o campo "Regiao" para o valor desejado

&nbsp;&nbsp;&nbsp; Sum({1&lt;Regiao={SC}&gt;} Vendas)


&nbsp;&nbsp;&nbsp; 10. Calcula a soma das "Vendas" baseado nas seleções atuais IGNORANDO QUALQUER SELEÇÃO no campo "Regiao"

&nbsp;&nbsp;&nbsp; Sum({$&lt;Regiao=&gt;} Vendas)


&nbsp;&nbsp;&nbsp; 11. Calcula a soma das "Vendas" basado nas seleções atuais EXCLUINDO a categoria "Acessorios"

&nbsp;&nbsp;&nbsp; Sum({$} Vendas)


&nbsp;&nbsp;&nbsp; 12. Calcula a soma das "Vendas" baseado nas seleções atuais, mas apenas considerando as vendas nos "Anos" de 1980 até 1989

&nbsp;&nbsp;&nbsp; Sum({$} Vendas)


&nbsp;&nbsp;&nbsp; 13. Calcula a soma das "Vendas" baseado nas seleções atuais, mas apenas considerando os "Anos" 1900, 1910, 1920, etc

&nbsp;&nbsp;&nbsp; Sum({$} Vendas)


Usando Expressões com Modificadores Calculados

&nbsp;&nbsp;&nbsp; 14. Calcula a soma das "Vendas" baseado nas seleções atuais, mas apenas para o maior Ano possível

&nbsp;&nbsp;&nbsp; Sum({$} Vendas)


&nbsp;&nbsp;&nbsp; 15. Cacula a soma das "Vendas" baseado nas seleções atuais, para o ano anterior ao maior Ano possível

&nbsp;&nbsp;&nbsp; Sum({$} Sales)


Usando Expressões de Pesquisa

&nbsp;&nbsp;&nbsp; 16. Calcula a soma das "Vendas" baseado nas seleções atuais, mas apenas para os anos anteriores ao maior Ano possível

&nbsp;&nbsp;&nbsp; Sum({$} Vendas)


&nbsp;&nbsp;&nbsp; 17. Calcula a soma das "Vendas" desconciderando as seleções, para os anos maiores que 2009

&nbsp;&nbsp;&nbsp; Sum({12009"}&gt;} Vendas)


&nbsp;&nbsp;&nbsp; 18. Calcula a soma das "Vendas" baseado nas seleções atuais, mas para as cidades que contenham "ta": "Itajai", "Itapiranga", etc

&nbsp;&nbsp;&nbsp; Sum({$} Vendas)


&nbsp;&nbsp;&nbsp; 19. Calcula a soma das "Vendas" baseado nas seleções atuais, mas considerando apenas os anos maiores que ao menor Ano possível e menores ao maior Ano possível, então se tivermos 2010, 2011 e 2012, apenas as "Vendas" de 2011 serão calculadas.

&nbsp;&nbsp;&nbsp; Sum({$$(=Min(Ano))&lt;$(=Max(Ano))"}&gt;} Vendas)
&nbsp;&nbsp;&nbsp; 

Indirect Set Analysis

Nos exemplos acima, todos os valores de campo foram explicitamente definidos ou definidos por pesquisas. Entretanto, há uma outra maneira de definir um conjunto de valores de campo pelo uso de uma definição de conjunto aninhado. 
Nesses casos, devem ser usadas as funções de elemento P() e E(), representando o conjunto de elementos de valores possíveis e os valores excluídos de um campo, respectivamente. 

O que acontece quando precisamos realizar a soma das vendas apenas dos clientes que compraram chinelo em 2011?

Para conseguirmos a lista de clientes, utilizaremos a função P() que retorna um conjunto clientes possíveis. Haverá casos em que você terá de utilizar a função E() que retorna um conjunto clientes excluídos.

Expressões

&nbsp;&nbsp;&nbsp; 20. Calcula a soma das "Vendas" baseado nas seleções atuais, para os clientes que compraram chinelo no ano de 2010.

&nbsp;&nbsp;&nbsp; Sum({$} Cliente)&gt;} Vendas)


&nbsp;&nbsp;&nbsp; 21. Calcula a soma das "Vendas" baseado nas seleções atuais, para os clientes que NÃO compraram chinelo no ano de 2011.

&nbsp;&nbsp;&nbsp; Sum({$&lt; Cliente=E({1} Cliente) &gt;} Vendas)


  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-52153301-1', 'dicasqlikview.blogspot.com.br');
  ga('send', 'pageview');