Anda di halaman 1dari 42

Anlise de conjunto e expresses de conjunto

A anlise de conjunto oferece um meio de definir um conjunto (ou grupo) de valores de dados que
est diferente do conjunto normal definido pelas selees atuais.
Geralmente, quando voc faz uma seleo, funes de agregao, como Sum, Max, Min,
Avg e Count * agregam sobre as selees que voc fez: as selees atuais. Suas selees
automaticamente definem o conjunto de dados para agregar por cima. Com a anlise de conjunto
voc pode definir um grupo que independente das selees atuais. Isso pode ser til se voc
quer mostrar um valor particular, por exemplo, participao de mercado de um produto em todas
as regies, independentemente das selees atuais.
Anlise de conjunto tambm til quando se faz diferentes tipos de comparao, como produtos
mais vendidos comparados com os produtos menos vendidos, ou esse ano comparado ao ano
passado.
Imagine um exemplo no qual voc comea a trabalhar em um documento selecionando o ano de
2010 em uma lista. Ento, as agregaes so baseadas nessa seleo, e os grficos mostram
apenas valores para aquele ano. Quando voc faz novas selees, os grficos so atualizados de
acordo. As agregaes so feitas sobre o conjunto de registros possveis definido pela seleo
atual. Com a anlise de conjunto, voc pode definir um conjunto que de seu interesse e no
depende dessas selees.

Criando expresses de conjunto


Antes de olhar para partes diferentes de um exemplo da anlise de conjunto, h uma distino que
deve ser feita entre uma expresso de conjunto e anlise de conjunto:
A definio de um conjunto de valores de campo chamada de definio de uma expresso de
conjunto; enquanto que o uso de expresses de conjunto para analisar os dados chamado de
anlise de conjunto. Consequentemente, o resto dessa seo foca na expresso de conjunto e
seus componentes.
Aqui est um exemplo de anlise de conjunto: sum({$< Year = {2009}>} Sales), no
qual {$<Year={2009}>} uma expresso de conjunto.
H duas regras gerais de sintaxe para uma expresso de conjunto:

Uma expresso de conjunto deve ser usada em uma funo de agregao. Nesse exemplo,
a funo de agregao sum (Sales).

Uma expresso de conjunto deve estar dentro de chaves, {}. No exemplo, a expresso de
conjunto : {$<Year={2009}>}.
Uma expresso de conjunto consiste em uma combinao das seguintes partes:

Identifiers. Um ou mais identificadores definem a relao entre a expresso de conjunto e


o que est sendo avaliado no resto da expresso. Uma expresso de conjunto consiste de
um identificador nico, como o sinal de dlar, {$}, que significa todos os registros na seleo
atual.

Operators. Se h mais do que um identificador, um operador ou operadores so usados


para refinar o conjunto de dados especificando como os conjuntos de dados representados
pelos identificadores so combinados para criar um subconjunto ou superconjunto, por
exemplo.

Modifiers. Um modificador ou modificadores podem ser adicionados expresso do


conjunto para mudar a seleo. Um modificador pode ser usado sozinho ou para modificar
um identificador para filtrar o conjunto de dados.
Exemplos:
Exemplo 1:
{$<Year={2009}>}

Essa expresso de conjunto contm um identificador $ e o modificador <Year={2009>}. Esse


exemplo no inclui um operador. A expresso de conjunto interpretada como: "Todos os registros
na seleo atual que pertencem ao ano de 2009".

Exemplo 2:
Sum({$<Year={2009}>+1<Country={"Sweden"}>} Sales)
Essa expresso de conjunto contm os identificadores $ e 1, o operador + e os
modificadores <Year={2009}> e <Country={'Sweden'}>.
A expresso de conjunto foi criada para somar as vendas do ano 2009 associadas com as selees
atuais e para adicionar o conjunto completo de dados associados com o pas Sweden em todos os
anos.
Expresses de conjunto podem ser usadas apenas em expresses de grficos, no em
expresses de script.

Identificadores, operadores e modificadores so descritos em mais detalhes dentro das subsees


seguintes.

Identificadores
Identificadores definem a relao entre a expresso de conjunto e os valores do campo ou
expresso que est sendo avaliada.
Em nosso exemplo sum( {$<Year={2009}>} Sales ), o identificador o sinal de dlar, $, e
significa que o conjunto de registros a serem avaliados consistem de todos os registros da seleo
atual. Esse conjunto ento filtrado ainda mais pela parte modificadora da expresso de conjunto.
Em uma expresso de conjunto mais complexa, dois identificadores podem ser combinados usando
um operador.
Essa tabela mostra alguns identificadores comuns.

Identificador Descrio

1 Representa um conjunto completo de todos os registros no aplicativo,


independentemente de quaisquer selees feitas.

$ Representa os registros da seleo atual. A expresso de conjunto {$}


equivalente a no definir uma expresso de conjunto.

$1 Representa a seleo anterior. $2 representa seleo-menos-um anterior, e


adiante.

$_1 Representa a prxima (para frente) seleo. $_2 representa a prxima seleo-
mais-um, e adiante.
BM01 Voc pode usar qualquer ID do marcador ou nome do marcador.

MyAltState Voc pode referenciar as selees feitas em outro estado pelo nome do estado.

Essa tabela mostra alguns exemplos com identificadores diferentes.

Exemplo Resultado

sum ({1} Sales) Retorna o total das vendas no documento, desconsiderando as selees,
porm no a dimenso.

sum ({$} Sales) Retorna as vendas da seleo atual, ou seja, o mesmo que sum(Sales).

sum ({$1} Sales) Retorna as vendas da seleo anterior.

sum ({BM01} Retorna as vendas do marcador chamado BM01.


Sales)

Operadores
Os operadores so usados para incluir, excluir ou cruzar conjuntos de dados inteiros ou em partes.
Todos os operadores usam conjuntos como operandos e retornam um conjunto como resultado.
Essa tabela mostra operadores que podem ser usados nas expresses de conjunto.

Operador Descrio

+ Unio. Essa operao binria retorna um conjunto formado pelos registros que
pertencem a qualquer um dos dois operandos do conjunto.

- Excluso. Essa operao binria retorna um conjunto formado pelos registros que
pertencem apenas ao primeiro operando do conjunto, mas no ao outro. Alm disso,
quando usada como um operador unrio, ela retorna o conjunto complementar.

* Interseo. Essa operao binria retorna um conjunto formado pelos registros que
pertencem aos dois operandos do conjunto.

/ Diferena simtrica (XOR). Essa operao binria retorna um conjunto formado


pelos registros que pertencem a um dos dois operandos do conjunto.

Essa tabela mostra alguns exemplos com operadores.


Exemplos Resultados

sum( {1-$} Sales ) Retorna vendas de tudo excludo pela


seleo.

sum( {$*BM01} Sales ) Retorna as vendas da interseo entre a


seleo e o marcador BM01.

sum( {-($+BM01)} Sales ) Retorna as vendas excludas pela seleo


e o marcador BM01.

Sum({$<Year={2009}>+1<Country={"Sweden"}>} Retorna as vendas para o ano de 2009


Sales) com as selees atuais e adiciona o
conjunto completo de dados associados
com o pas Sweden em todos os anos.

Modificadores
Os modificadores so usados para fazer adies ou mudanas uma seleo. Essas modificaes
podem ser escritas na expresso de conjunto. Um modificador consiste em um ou em vrios nomes
de campo, cada um seguido de uma ou vrias selees que devem ser feitas no campo.
Modificadores comeam e terminam com chevrons (sinal de maior/menor), <>.
Um modificador de conjunto se aplica seleo do identificador de conjunto anterior. Caso nenhum
identificador de conjunto seja informado como referncia, o estado de seleo atual estar implcito.
Essa tabela mostra alguns exemplos com modificadores.

Exemplo Resultado

sum({$<OrderDate = Retorna as vendas da seleo atual onde OrderDate =


DeliveryDate>} Sales) DeliveryDate.

sum({1<Region = {US}>} Retorna as vendas da regio dos EUA, desconsiderando a


Sales) seleo atual.

sum({$<Region = >} Sales) Retorna as vendas da seleo, mas com a seleo em 'Region'
removida.

sum({<Region = >} Sales) Retorna o mesmo como o exemplo acima. Quando o conjunto
para modificar for omitido, $ adotado.

sum({$<Year={2000}, Retorna as vendas da seleo atual, mas com novas selees


Region={U*}>} Sales) ambas em 'Year' e em 'Region'.

Consulte: Modificadores de conjunto para uma descrio mais detalhada dos modificadores e
como usa-los em anlises de conjunto mais complexas.

Modificadores de conjunto
Um conjunto pode ser modificado por uma seleo adicional ou alterada. Uma modificao como
essa pode ser escrita na expresso do conjunto.
O modificador composto por um dos diversos nomes de campo, cada um seguido de uma
seleo que deve ser feita no campo e estar entre < e >. Por
exemplo: <Year={2007,+2008},Region={US}>. Os nomes e os valores de campo, normalmente,
podem estar entre aspas, por exemplo<[Sales Region]={West coast, South
America}>.
Um modificador de conjunto se aplica seleo do identificador de conjunto anterior. Caso
nenhum identificador de conjunto seja informado como referncia, o estado de seleo atual
estar implcito.
Existem vrias formas de definir a seleo, conforme descrito a seguir.

Baseado em outro campo


Um caso simples uma seleo baseada nos valores selecionados de outro campo, por
exemplo <OrderDate = DeliveryDate>. Esse modificador usar os valores selecionados
de DeliveryDate e os aplicar como uma seleo em OrderDate. Se houver muitos valores
diferentes mais de duzentos essa operao ocupar muito a CPU e deve ser evitada.

Baseado em conjuntos de elementos (uma lista de valores de campo no modificador)


O caso mais comum uma seleo baseada em uma lista de valores de campo entre chaves, os
valores separados por vrgula, por exemplo <Year = {2007, 2008}>. As chaves aqui definem um
conjunto de elementos, em que os elementos podem ser valores de campo ou pesquisas de
valores de campo. Uma pesquisa sempre definida pelo uso de aspas duplas, por
exemplo <Ingredient = {"*Garlic*"}> selecionar todos os ingredientes com a palavra alho. As
pesquisas so sensveis a maisculas e tambm so feitas para valores excludos.

Excluso forada
Por fim, para os campos no modo AND, tambm h a possibilidade de uma excluso forada. Se
quiser forar a excluso de valores de campo especficos, voc precisar usar ~ antes do nome
do campo.
Exemplos e resultados:

Exemplos Resultados

sum( {1<Region= {USA} Retorna as vendas da regio USA, desconsiderando a seleo


>} Sales ) atual.

sum( {$<Region = >} Retorna as vendas da seleo atual, mas com a seleo em
Sales ) 'Region' removida.

sum( {<Region = >} Retorna o mesmo como o exemplo imediatamente acima. Quando
Sales ) o conjunto para modificar for omitido, $ adotado.
A sintaxe nos dois exemplos anteriores interpretada como
nenhuma seleo em in 'Region', ou seja, todas as regies com
outras selees sero possveis. Isso no equivalente
sintaxe <Region = {}> (nem a qualquer outro texto direita do sinal
de igual implicitamente resultando em um conjunto de elementos
vazio) que interpretada como nenhuma regio.
Exemplos Resultados

sum( {$<Year = {2000}, retorna as vendas da seleo atual, mas com as novas selees
Region = {US, SE, DE, em 'Year' e em 'Region'.
UK, FR}>} Sales )

sum( {$<~Ingredient = O campo Ingredient est no modo E.


{*garlic*}>} Sales ) Retorna as vendas da seleo atual, mas com uma excluso
forada de todos os Ingredientes que contm a palavra 'garlic'.

sum( {$<Year = {2*}>} Retorna as vendas da seleo atual, mas com todos os anos que
Sales ) comeam com o nmero "2", ou seja, do ano 2000 em diante,
selecionados no campo 'Year'.

sum( {$<Year = Conforme a sintaxe acima, mas a dcada de 1980 tambm est
{2*,198*}>} Sales ) includa na seleo.

sum( {$<Year = Retorna as vendas para as selees atuais, mas com uma
{>1978<2004}>} Sales ) pesquisa numrica usada para definir o intervalo de anos dos
quais as vendas sero somadas.

Modificadores de conjunto com operadores de conjunto


A seleo dentro de um campo pode ser definida usando-se os operadores de conjunto
trabalhando em conjuntos de elementos diferentes. Por exemplo, o modificador <Year = {"20*",
1997} - {2000}> selecionar todos os anos iniciados por 20, alm de 1997, exceto 2000.
Exemplos e resultados:

Exemplos Resultados

sum( {$<Product = Retorna as vendas da seleo atual, mas com o produto


Product + {OurProduct1} OurProduct1 adicionado lista de produtos selecionados e
{OurProduct2} >} Sales ) OurProduct2 removido da lista de produtos selecionados.

sum( {$<Year = Year + Retorna as vendas da seleo atual, mas com selees adicionais
({20*,1997} {2000}) >} no campo Year: 1997 e todos os anos que comeam com "20"
Sales ) exceto o ano 2000.
Observe que se 2000 estivesse includo na seleo atual, ele
continuaria includo aps a modificao.

sum( {$<Year = (Year + Retorna quase o mesmo resultado acima, mas aqui o ano 2000
{20*,1997}) {2000} >} ser excludo, mesmo se estivesse inicialmente includo na seleo
Sales ) atual. O exemplo mostra a importncia da utilizao de parnteses
em alguns casos, para definir uma ordem de precedncia.

sum( {$<Year = {*} Retorna as vendas da seleo atual, mas com uma nova seleo
{2000}, Product = em Year: todos os anos exceto o ano 2000; e somente para
{*bearing*} >} Sales ) produtos que contm a palavra suporte.
Modificadores de conjunto usando atribuies com operadores de conjunto implcitos
Essa notao define novas selees, desconsiderando a seleo atual no campo. No entanto, se
desejar basear a sua seleo atual no campo e adicionar valores de campo, voc pode, por
exemplo, definir um modificador <Year = Year + {2007, 2008}>. Uma forma mais curta e
equivalente de escrever isso <Year += {2007, 2008}>, ou seja, o operador de atribuio define
implicitamente uma unio. Alm disso, intersees, excluses e diferenas simtricas implcitas
podem ser definidas com *=, = e /=.
Exemplos e resultados:

Exemplos Resultados

sum( {$<Product += Retorna as vendas da seleo atual, mas usando uma unio
{OurProduct1, implcita para adicionar os produtos 'OurProduct1' e 'OurProduct2'
OurProduct2} >} Sales ) lista de produtos selecionados.

sum( {$<Year += Retorna as vendas da seleo atual, mas usando uma unio
{20*,1997} {2000} >} implcita para adicionar um nmero de anos seleo: 1997 e
Sales ) todos os anos que comeam com "20" exceto o ano 2000.
Observe que se 2000 estivesse includo na seleo atual, ele
continuaria includo aps a modificao. Igual a <Year=Year +
({20*,1997}{2000})>.

sum( {$<Product *= Retorna as vendas da seleo atual, mas somente para a insero
{OurProduct1} >} Sales ) dos produtos atualmente selecionados e do produto OurProduct1.

Modificadores de conjunto com pesquisas avanadas


As pesquisas avanadas que usam caracteres curingas e agregaes podem ser usadas para
definio de conjuntos.
Exemplos e resultados:

Exemplos Resultados

sum( {$1<Product = Retorna as vendas da seleo atual, excluindo as


{*Internal*, *Domestic*}>} transaes que pertencem a produtos com a palavra
Sales ) Internal ou Domestic no nome do produto.

sum( {$<Customer = Retorna as vendas da seleo atual, mas com uma nova
{=Sum({1<Year = {2007}>} seleo no campo 'Customer': apenas os clientes que, em
Sales ) > 1000000}>} Sales ) 2007, apresentaram um total de vendas de mais de
1.000.000.

Modificadores de conjunto com expanses de sinal de dlar


As variveis e outras expanses do sinal de dlar podem ser usadas nas expresses de conjunto.
Exemplos e resultados:
Exemplos Resultados

sum( {$<Year = Retorna as vendas do ano anterior em relao seleo atual.


{$(#vLastYear)}>} Sales ) Aqui, uma varivel vLastYear contendo o ano relevante usada
em uma expanso de sinal de dlar.

sum( {$<Year = Retorna as vendas do ano anterior em relao seleo atual.


{$(#=Only(Year)-1)}>} Aqui, uma expanso de sinal de dlar usada para calcular o
Sales ) ano anterior.

Modificadores de conjunto com definies de valor de campo implcitas


A seguir, descrito como definir um conjunto de valores de campo usando uma definio de
conjunto aninhado.
Nesses casos, devem ser usadas as funes de elemento P() e E() representando o conjunto de
elementos de valores possveis e os valores excludos de um campo, respectivamente. Dentro
dos parnteses, possvel especificar uma expresso de conjunto e um campo, por
exemplo P({1} Customer). Essas funes no podem ser usadas em outras expresses:
Exemplos e resultados:

Exemplos Resultados

sum( {$<Customer = Retorna as vendas da seleo atual, mas somente os


P({1<Product={Shoe}>} clientes que j compraram o produto Shoe. Aqui, a funo
Customer)>} Sales ) de elemento P( ) retorna uma lista de clientes possveis;
aqueles decorrentes da seleo Shoe no campo Product.

sum( {$<Customer = O mesmo que o anterior. Se o campo na funo de


P({1<Product={Shoe}>})>} elemento for omitido, a funo retornar os valores
Sales ) possveis do campo especificado na atribuio externa.

sum( {$<Customer = Retorna as vendas da seleo atual, mas somente os


P({1<Product={Shoe}>} clientes que j forneceram o produto Shoe. Aqui, a funo
Supplier)>} Sales ) de elemento P( ) retorna uma lista de fornecedores
possveis; aqueles decorrentes da seleo Shoe no
campo Product. Assim, a lista de fornecedores usada
como uma seleo no campo Customer.

sum( {$<Customer = Retorna as vendas da seleo atual, mas somente os


E({1<Product={Shoe}>})>} clientes que nunca compraram o produto Shoe. Aqui, a
Sales ) funo de elemento E( ) retorna a lista de clientes
excludos; aqueles excludos pela seleo Shoe no
campo Product.

OPERADORES

Operadores lgicos
Todos os operadores lgicos interpretam os operandos logicamente e retornam True (-1)
ou False (0) como resultado.
not Inverso lgico. Um dos operadores unrios. A operao retorna o inverso lgico do
operando.

and And lgico. A operao retorna o and lgico dos operandos.

or Or lgico. A operao retorna o or lgico dos operandos.

Xor Or lgico exclusivo. A operao retorna o or lgico exclusivo dos operandos. Isto ,
semelhante ao or lgico, mas o resultado ser Falsese os dois operandos forem True.

Operadores numricos
Todos os operadores numricos usam os valores numricos dos operandos e retornam um valor
numrico como resultado.

+ Sinal para nmero positivo (operador unrio) ou adio aritmtica. A operao binria retorna
a soma dos dois operandos.

- Sinal para nmero negativo (operador unrio) ou subtrao aritmtica. A operao unria
retorna o operando multiplicado por -1 e, a binria, a diferena entre os dois operandos.

* Multiplicao aritmtica. A operao retorna o produto dos dois operandos.

/ Diviso aritmtica. A operao retorna a razo entre os dois operandos.

Operadores relacionais
Todos os operadores relacionais comparam os valores dos operandos e retornam True (-1)
ou False (0) como resultado. Todos os operadores relacionais so binrios.

< Menor que Se os dois operandos puderem ser interpretados numericamente,


ser feita uma comparao numrica. A operao retorna o valor
lgico da avaliao da comparao.

<= Menor que Se os dois operandos puderem ser interpretados numericamente,


ou igual a ser feita uma comparao numrica. A operao retorna o valor
lgico da avaliao da comparao.

> Maior que Se os dois operandos puderem ser interpretados numericamente,


ser feita uma comparao numrica. A operao retorna o valor
lgico da avaliao da comparao.
>= Maior que ou Se os dois operandos puderem ser interpretados numericamente,
igual a ser feita uma comparao numrica. A operao retorna o valor
lgico da avaliao da comparao.

= Igual a Se os dois operandos puderem ser interpretados numericamente,


ser feita uma comparao numrica. A operao retorna o valor
lgico da avaliao da comparao.

<> No Se os dois operandos puderem ser interpretados numericamente,


equivalente ser feita uma comparao numrica. A operao retorna o valor
a lgico da avaliao da comparao.

precedes Ao contrrio do operador <, no feita qualquer tentativa de


interpretao numrica dos valores do argumento antes da
comparao. A operao retornar verdadeiro se o valor
esquerda do operador tiver uma representao de texto que, na
comparao da string, estiver antes da representao de texto do
valor direita.
Exemplo:
'1 ' precedes ' 2' retorna FALSE
enquanto
' 1' precedes ' 2' retorna TRUE
j que o valor ASCII de um espao (' ') menor que o valor ASCII
de um nmero.
Compare com:
'1 ' < ' 2' retorna TRUE
e
' 1' < ' 2' retorna TRUE

follows Ao contrrio do operador >, no feita qualquer tentativa de


interpretao numrica dos valores do argumento antes da
comparao. A operao retornar verdadeiro se o valor
esquerda do operador tiver uma representao de texto que, na
comparao da string, vier depois da representao de texto do
valor direita.
Exemplo:
' 2' follows '1 ' retorna FALSE
enquanto
' 2' follows ' 1' retorna TRUE
j que o valor ASCII de um espao (' ') menor que o valor ASCII
de um nmero.
Compare com:
' 2' > ' 1' retorna TRUE
e
' 2' > '1 ' retorna TRUE
Operadores de caractere
Existem dois operadores de string. Um deles utiliza os valores de string dos operandos e retorna
uma string como resultado. O outro compara os operandos e retorna um valor booliano para
indicar a correspondncia.

& Concatenao de string. A operao retorna uma string de texto que consiste em duas strings
de operandos, uma aps a outra.

Exemplo:
'abc' & 'xyz' retorna 'abcxyz'

like Comparao da string com caracteres curinga. A operao retornar um booleano True (-
1) se a string que se encontrar antes do operador corresponder string que estiver aps o
operador. A segunda string pode conter os caracteres curinga * (quaisquer nmeros de
caracteres arbitrrios) ou ? (um caractere arbitrrio).

Exemplo:
'abc' like 'a*' retorna True (-1)
'abcd' like 'a?c*' retorna True (-1)
'abc' like 'a??bc' retorna False (0)

Sum - funo de grfico


Sum() calcula o total dos valores dados pela expresso ou campo em todos os dados agregados.
Sintaxe:
Sum([{SetExpression}] [DISTINCT] [TOTAL [<fld {,fld}>]] expr)
Tipo de dados de retorno: numrico
Argumentos:

Argumento Descrio

expr A expresso ou campo que contm os dados a serem medidos.

SetExpression Por padro, a funo de agregao agregar um conjunto de registros


possveis definidos pela seleo. Um conjunto de registros alternativos pode
ser definido por uma expresso de anlise.
Argumento Descrio

DISTINCT Se a palavra DISTINCT aparecer antes dos argumentos de funo, as


duplicatas resultantes da avaliao dos argumentos de funo sero
ignoradas.

Embora o qualificador DISTINCT no seja suportado, use-o com extrema


cautela, j que ele poder confundir o leitor a pensar que o valor total
mostrado quando alguns dados foram omitidos.

TOTAL Se a palavra TOTAL ocorrer antes dos argumentos da funo, o clculo


feito sobre todos os valores possveis, dadas as selees atuais, e no
apenas sobre os pertinentes ao valor dimensional atual, isto ,
desconsiderando as dimenses do grfico.
O qualificador TOTAL pode vir seguido de uma lista de um ou mais nomes de
campos dentro de sinais de maior e menor que <fld>. Esses nomes de
campos devem ser um subconjunto das variveis de dimenses do grfico.
Consulte: Definindo o escopo de agregao

Exemplos e resultados:

Customer Product UnitSales UnitPrice

Astrida AA 4 16

Astrida AA 10 15

Astrida BB 9 9

Betacab BB 5 10

Betacab CC 2 20

Betacab DD - 25

Canutility AA 8 15

Canutility CC - 19

Exemplos Resultados

Sum(UnitSales) 38. O total dos valores em UnitSales.


Exemplos Resultados

Sum(UnitSales*UnitPrice) 505. O total de UnitPrice multiplicado pelos UnitSales agrega

Sum(TOTAL UnitSales*UnitPrice) 505 para todas as linhas da tabela, alm do total, pois o
qualificador TOTAL significa que a soma ainda 505,
desconsiderando as dimenses do grfico.

Faa a seleoCustomer B. 505, independentemente da seleo feita, porque a expresso S


Sum({1} Analysis {1} define o conjunto de registros a ser avaliado como
TOTAL UnitSales*UnitPrice) independente da seleo feita.

Dados usados nos exemplos:


ProductData:
LOAD * inline [
Customer|Product|UnitSales|UnitPrice
Astrida|AA|4|16
Astrida|AA|10|15
Astrida|BB|9|9
Betacab|BB|5|10
Betacab|CC|2|20
Betacab|DD||25
Canutility|AA|8|15
Canutility|CC||19
] (delimiter is '|');

Definindo o escopo de agregao


Geralmente, existem dois fatores que juntos determinam quais registros so usados para definir o
valor da agregao em uma expresso. Ao trabalhar com grficos, esses fatores so:

Valor dimensional (de agregao em um grfico de expresso)

Selees
Juntos, esses fatores definem o escopo da agregao. Voc pode se deparar com situaes em
que deseja que o clculo desconsidere a seleo, a dimenso ou ambas. Nas funes de grfico,
voc pode conseguir isso usando o qualificador TOTAL, anlise de conjunto ou uma combinao
dos dois.

Mtodo Descrio

Qualificador TOTAL Usar o qualificador total dentro de sua funo de agregao desconsidera o
dimensional.
A agregao ser realizada em todos os valores de campo possveis.
O qualificador TOTAL pode vir seguido de uma lista de um ou mais nomes d
campos dentro de sinais de maior e menor que. Esses nomes de campos de
ser um subconjunto das variveis de dimenses do grfico. Nesse caso, o c
feito ignorando-se todas as variveis de dimenses do grfico, exceto aquela
Mtodo Descrio

listadas, isto , um valor ser retornado para cada combinao de valores de


campo nos campos de dimenso listados. Tambm podem ser includos na
campos que no forem uma dimenso em um grfico no momento. Isso pod
til para grupos de dimenses em que os campos de dimenses no so fix
lista de todas as variveis do grupo faz com que a funo tenha efeito quand
nvel hierrquico for alterado.

Anlise de conjunto Usar a anlise de conjunto dentro de sua agregao sobrepe a seleo. A
agregao ser realizada em todos os valores divididos atravs das dimens

Qualificador TOTAL e Usar o qualificador TOTAL e a anlise de conjunto dentro de sua agregao
anlise de conjunto sobrepe a seleo e desconsidera as dimenses.

Qualificador ALL Usar o qualificador ALL dentro de sua agregao desconsidera a seleo e
dimenses. O equivalente pode ser obtido com o comando de anlise de
conjunto {1} e com o qualificador TOTAL :
=sum(All Sales)
=sum({1} Total Sales)

Exemplo: qualificador TOTAL


O exemplo a seguir mostra como TOTAL pode ser utilizado para calcular uma ao relativa.
Supondo-se que Q2 foi selecionado, usar TOTAL calcula a soma de todos os valores
desconsiderando as dimenses.

Year Quarter Sum(Amount) Sum(TOTAL Amount) Sum(Amount)/Sum(TOTAL Amoun

3000 3000 100%

2012 T2 1700 3000 56,7%

2013 T2 1300 3000 43,3%

Exemplo: Anlise de conjunto


O exemplo a seguir mostra como a anlise de conjunto pode ser usada para fazer uma
comparao entre os conjuntos de dados antes de fazer qualquer seleo. Supondo-se
que Q2 foi selecionado, usar a anlise de conjunto com a definio do conjunto {1} calcula a
soma de todos os valores desconsiderando as selees, mas dividindo pelas dimenses.

Year Quarter Sum(Amount) Sum({1} Amount) Sum(Amount)/Sum({1} Amount)

3000 10800 27,8%

2012 T1 0 1100 0%

2012 T3 0 1400 0%
Year Quarter Sum(Amount) Sum({1} Amount) Sum(Amount)/Sum({1} Amount)

2012 T4 0 1800 0%

2012 T2 1700 1700 100%

2013 T1 0 1000 0%

2013 T3 0 1100 0%

2013 T4 0 1400 0%

2013 T2 1300 1300 100%

Exemplo: qualificador TOTAL e anlise de conjunto


O exemplo a seguir mostra como a anlise de conjunto e o qualificador TOTAL podem ser
combinados para fazer uma comparao entre os conjuntos de dados antes de fazer qualquer
seleo em todas as dimenses. Supondo-se que Q2 foi selecionado, usar a anlise de conjunto
com a definio do conjunto {1] e o qualificador TOTAL calcula a soma de todos os valores
desconsiderando as selees e desconsiderando as dimenses.

Year Quarter Sum(Amount) Sum({1} TOTAL Amount) Sum(Amount)/Sum({1} TOTAL Amo

3000 10800 27,8%

2012 T2 1700 10800 15,7%

2013 T2 1300 10800 12%

Dados usados nos exemplos:


AggregationScope:
LOAD * inline [
Year Quarter Amount
2012 Q1 1100
2012 Q2 1700
2012 Q3 1400
2012 Q4 1800
2013 Q1 1000
2013 Q2 1300
2013 Q3 1100
2013 Q4 1400] (delimiter is ' ');

The Aggregation Scope


Postado por Henric Cronstrm em Qlik Design Blog em 09/09/2013 21:01:49
When a calculation is made in a QlikView session, it always involves an aggregation over the relevant data
records. But which records are relevant? What is the scope of the aggregation?
This seems like a simple question, but there are in fact quite a few things that could be said about it.

Normally, there are two different restrictions that together determine which records are relevant: The
Selection, and if the formula is found in a chart the Dimensional value. The aggregation scope is what
remains after both these restrictions have been taken into consideration.

But not always

There are ways to define your own aggregation scope: This is needed in advanced calculations where you
want the aggregation to disregard one of the two restrictions. A very common case is when you want to
calculate a ratio between a chosen number and the corresponding total number, i.e. a relative share of
something.

In other words: If you use the total qualifier inside your aggregation function, you have redefined the
aggregation scope. The denominator will disregard the dimensional value and calculate the sum
of all possible values. So, the above formula will sum up to 100% in the chart.

However, there is a second way to calculate percentages. Instead, you may want to disregard the the
selection in order to make a comparison with all data before any selection. Then you should not use the total
qualifier; you should instead use Set analysis:

Using Set analysis, you will redefine the Selection scope. The set definition {1} denotes the set of all
records in the document; hence the calculated percentages will be the ratio between the current selection and
all data in the document, split up for the different dimensional values.

In other words: by using the total qualifier and set analysis inside an aggregation function, you can re-define
the aggregation scope.
To disregard the dimensional grouping Use the Total qualifier
To disregard the selection Use Set Analysis

The above cases are just the basic examples. The total qualifier can be qualified further to define a subset
based on any combination of existing dimensions, and the Set analysis can be extended to specify not just
Current selection and All data, but any possible selection.

And, of course the total qualifier can be combined with Set analysis.
A final comment: If an aggregation is made in a place where there is no dimension (a gauge, text box, show
condition, etc.), only the restriction by selection is made. But if it is made inside a chart or an Aggr()
function, both restrictions are made. So in these places it could be relevant to use the total qualifier.

A Primer on Set Analysis


Postado por Henric Cronstrm em Qlik Design Blog em 17/02/2015 02:07:32
Set analysis is one of the more complex things you can use in QlikView or Qlik Sense. Its syntax is often
perceived as complicated and there are some misunderstandings around it. So here is my short explanation.

Set analysis is a way to define an aggregation scope different from current selection. Think of it as a way to
define a conditional aggregation. The condition, however, is in itself like a selection that is
evaluated before the cube (the chart) is expanded. Hence, it is not possible to have a condition that is
evaluated row by row.

The set analysis is used inside an aggregation function, e.g. in an expression like

Sum(Sales)

The first step is to add the markers for the set analysis the curly brackets:

Sum( {} Sales)

These define the record set over which the aggregation should be made. Inside, you can use different
identifiers and operators, e.g. $ for records implied by current selection, 1 for all records, 1-$ for all
excluded records, etc.

A set of records that you can define by a simple selection is called natural set. Not all record sets are natural;
for instance, {1-$} cannot always be defined through a selection.

The next step is often to add a set modifier, which is defined by angle brackets. The set modifier adds or
changes a selection. It can be used on any natural set and consists of a list of fields, where each field can
have a new selection:

Sum( {$<>} Sales)

The next step is to define the element set for a field; the set of field values that defines the selection. The
element set could be a field reference or a set function, P() or E(). It is more common, though, that it is an
explicit list of field values or a search, and then you need the curly brackets to define the element set:

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

A search can be defined through double quotes. This way, field values that match the search string will be
selected:

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

Do not use single quotes to initiate a search here! Single quotes should denote literals, i.e. explicit field
values. (Yes, today single quotes work as a search, but this is a bug that one day will be fixed)

Often a numeric search is made, defined by a leading relational operator. Then, field values will be selected
based on a comparison:

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


To make it worse, the value to which the field values are compared is often a calculated one. And in order to
get a calculated value into the expression, a dollar expansion is needed.:

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

Inside the dollar expansion, you need an expression that starts with an equals sign and contains an
aggregation function, e.g.:

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

This aggregation function is evaluated globally, before the cube is expanded.

As you can see, there are many levels of a set expression, and many pairs of brackets and delimiters that
need to match. When you write set expressions, you should always write both brackets directly, and then
continue with the expression between them. This way you will avoid simple syntax errors.

Good luck with your set analysis expressions!

Excluding values in Set Analysis


Postado por Henric Cronstrm em Qlik Design Blog em 20/10/2015 02:09:48
The Set Analysis is a commonly used tool when creating static or dynamic filters inside aggregations in Qlik
Sense or QlikView. But sometimes you need the opposite to selecting you need to exclude values. How can
this be done?

In Set Analysis, it is straightforward to make selections; to define the criteria for inclusion. But it is not as
straightforward to define an exclusion. But there are in fact several ways to do this.

First of all, an inclusion can be defined the following way:

This expression is equivalent to saying Sum the Amounts where Field equals X.

But if you want to say the opposite where field does not equal X it becomes more complicated. The
relation not equal to is not a Set operation so it cannot be used.

One way to do this is to use the implicit exclusion operator:

Note the minus sign in front of the equals sign. This will create an element set based on the existing selected
values, but with the value X removed.

A second way to do this is to use the unary exclusion operator:

This will return the complement set of X and use this as element set in the set expression.

In many situations the two methods return identical sets. But there are cases when they are different. In the
table below you can see that it makes a difference if there already is a selection in the field.
Note the difference on the row with the C. Since the implicit operator (the 2nd expression) is based on
current selection, also the value C is excluded from the calculation. This is in contrast to the unary operator
(the 3rd expression) that creates a completely new element set, not based on current selection.

We can also see that both of the above expressions exclude records where the field is NULL (the line where
Field has a dash only). The reason is simple: As soon as there is a selection in the field, the logical inference
will exclude NULL in the same field.

So what should you do if you want to exclude X but not NULL?

The answer is simple: Use another field for your selection. Typically you should use the primary key for the
table where you find the Amount.

Here you need to use the element function E(), that returns excluded values. Hence, the above Set expression
says: Select the IDs that get excluded when selecting X.

The table confirms that we get the records we want: X is excluded but NULL is still included.

With this, I hope that you understand Set Analysis somewhat better.

Dates in Set Analysis


Postado por Henric Cronstrm em Qlik Design Blog em 29/09/2015 00:08:20
Several aspects of the Qlik search mechanism has been described in previous posts. There is however one
that has not been covered: Search in dual fields, e.g. dates. This post will try to explain the basics.

When making searches in text fields, you can search either by using a normal search or by using a wildcard
search, and when you search in numeric fields you can use a numeric search. But what about dual fields, like
dates, where you have both a textual and a numeric representation?

The answer is displayed in the picture below.


Normal searches and wildcard searches are straightforward and need not be explained. Numeric searches are
also possible and do pretty much what you expect them to.

You should however note that the search string in a numeric search must contain the correct formatted date.
It is in most cases not possible to use the numeric value of the date. E.g. you cannot search for 42005 when
you want Jan 1st 2015, even though this is the value of the date.

The same logic is used in Set Analysis, which means that a correct Set Analysis expression with a date could
look like this:

Sum( {$<Date={"<=2015-02-28"}>} Amount)

Often you want the Set Analysis expression to be dynamic, and then you need to put a dollar expansion with
an aggregation function inside it. One case is that you want to compare the selected month with the
preceding month. In principal, the solution is something similar to the following:

Selected (Last) month: Sum( {$<Month={"$(=Max(Month))"}>} Amount )


2nd Last month: Sum( {$<Month={"$(=Max(Month)-1)"}>} Amount )

The Max(Month) will calculate the last possible month, and the dollar expansion will enter this value into
the expression before the expression is parsed.

How the expression looks after the dollar expansion can be seen in the column header of a QlikView table.
The above formulas have been used in the table below. Note that the dollar expansions with Max(Month)
have been replaced with numbers.

So far, so good.

However, the above formulas will not work. First, if you have created the Month using the Month()
function, the field is cyclic which means that December of one year has a higher numeric value than January
the following year, although it comes before January. Hence, the Max() function will not respect the order of
months belonging to different years.

Secondly, the Month field has a dual value. This means that the Max(Month) will return a numeric
when you need the textual value (Dec) in the Set analysis expression.
One solution is to use a sequential month instead, and format it the same way everywhere:

Script:
Date(MonthStart(Date),'MMM-YY') as Month,
Expressions:
Sum( {$<Month={"$(=Date(Max(Month),'MMM-YY'))"}>} Amount )
Sum( {$<Month={"$(=Date(AddMonths(Max(Month),-1),'MMM-YY'))"}>} Amount )

Here the field Month is a date - the first day of the month - but formatted with just month and year. In other
words: A number that equals roughly 42000 and is formatted as Jan-15. The same formatting is applied
inside the dollar expansion. Note the column headers below.

Often it is practical to put the calculation of the Set analysis condition in variables. This way, the formula is
kept in one place only and the Set analysis expressions become simpler and easier to read:

Script:
Set vLastMonth= "=Date(Max(Month),'MMM-YY')";
Set v2ndLastMonth= "=Date(AddMonths(Max(Month),-1),'MMM-YY')";
Date(MonthStart(Date),'MMM-YY') as Month,
Expressions:
Sum( {$<Month={"$(vLastMonth)"}>} Amount )
Sum( {$<Month={"$(v2ndLastMonth)"}>} Amount )

Note that the variable definitions start with equals signs. This way they will be recalculated at every click.

Summary: Format the dates used inside Set analysis expressions, and use variables to simplify the
expressions.

Exemplos

Exemplos de Qualificadores Agregados


Esses exemplos foram elaborados com a funo Sum - funo de grfico, mas podem ser
aplicados a todas as funes de agregao de grfico que ofeream suporte s definies de
anlise de conjunto e ao qualificador total.
Exemplo 1:
Examine a representao de uma tabela simples abaixo, considerando o estado lgico
antes de qualquer seleo feita:

As colunas da segunda e terceira expresses tm o mesmo nmero em todas as linhas.


Esse nmero igual ao total calculado na coluna da primeira expresso.
Agora, vamos selecionar apenas os meses 1 e 2. O resultado ser o seguinte:

O resultado da terceira expresso (quinta coluna) permanece inalterado porque a definio


de set desconsidera as selees atuais. A segunda expresso (quarta coluna) com o
qualificador total mostrar o novo total de 10, que ainda igual ao total da primeira
expresso (terceira coluna).
Exemplo 2:
Examine a representao de uma tabela simples abaixo:

Na coluna da terceira expresso (sum(total<Month> Val)), um total calculado para cada


ms.
Na coluna da quarta expresso (sum(total<Grp> Val)), um total calculado para cada
grupo.

Exemplos de funes Concat


A funo CONCAT() deve ser confundida com a palavra-chave CONCATENATE no script.
Em sua forma mais simples, Concat() usado para conectar/juntar valores/palavras/selees em
um caractere. No entanto, pode ser utilizada de diversas forma para ajudar a resolver diferentes
problemas. Todos os exemplos so baseados na seguinte tabela:

Concatenao simples de caractere


Conforme mencionado anteriormente, a funo concat permite que voc conecte uma lista de
valores. Esses valores podem ser de cdigo fixo ou orientados por selees/dados.
=CONCAT(MyColumn,',')
=CONCAT(DISTINCT MyColumn,',')
Esse comando concat simples conectaria todos os valores possveis da coluna MyColumn. Voc
pode desejar adicionar a palavra-chave DISTINCT. Isso asseguraria que cada valor fosse exibido
apenas uma vez no caractere.
ABC,DEF,GHI,JKL,MNO,PQR,STU,VWX
Ao usar um concat simples, voc tem a opo de adicionar um peso de classificao funo
para organizar os valores do caractere na coluna desejada. No exemplo abaixo, a coluna data
adicionada classificao de valores.

=CONCAT(MyColumn, ',', Date)


Resultado: JKL,VWX,GHI,ABC,STU,PQR,MNO,DEF

Concat() dentro de um comando Expression/Set


Passando valores dinmicos mltiplos para configurar uma expresso de anlise
H ocasies em que voc deseja passar uma seleo dinmica de valores para configurar um
comando. Para fazer isso, voc precisa adicionar aspas simples ao caractere para que a
funo CONCAT() retorne, por exemplo: 'JKL','VWX'. Mas voc no pode adicionar as aspas
simples como elas so, uma vez que elas dessa forma poderiam ser interpretadas quando
o Concat fosse avaliado em vez de quando a expresso definida fosse avaliada. Em vez disso,
use a funo Chr():

=CONCAT(Chr(39)&MyColumn&Chr(39),',')
Voc pode passar o comando concat para dentro de uma expresso:

=Sum({<MyColumn={$(=CONCAT(Chr(39)&MyColumn&Chr(39),','))}>} Value)
Na maioria das vezes, essa tcnica seria usada onde as ilhas de dados esto presentes. Ela
deixa que voc passe o valor para uma expresso que no afetar nenhuma parte do modelo de
dados uma vez que a tabela da ilha de dados no foi juntada a ela.

Concat() no Script
Concat tambm pode ser usado no script para converter mltiplas linhas em um valor de coluna
nico, como qualquer outra agregao.
Lembrar dos dados fonte usados anteriormente, os resultados do lado do script CONCAT so os
que seguem:

O seguinte o resultado dessa funo de script:

Usando Rank() para influenciar o Concat()


Quando voc comea a utilizar outra funo em conjunto com a concat(), voc pode comear a
alcanar resultados inteligentes. Neste exemplo, Rank() foi usado para juntar os trs itens
principais executados (baseado em Valor) e conect-los.

=CONCAT(IF(aggr(Rank(sum(Value)),MyColumn)<=3,MyColumn),',')
Resultado: ABC,MNO,STU

Exemplos de Estados Alternativos em Expresses de Grfico


Esses exemplos tm o objetivo de mostrar prticas recomendadas quanto ao uso de estados
alternativos por Desenvolvedores e/ou Usurios Avanados do QlikView. Esses exemplos esto
disponveis no arquivo: Alternate States Functionality.qvw

Sincronizando Selees entre Estados


As seguintes expresses podem ser usadas em um nico grfico:
count({$} DISTINCT [Nmero da Fatura])
count({State1} DISTINCT [Nmero da Fatura])
count({State2} DISTINCT [Nmero da Fatura])
Existe um problema nesse mtodo: o Desenvolvedor do QlikView deve duplicar as selees
(listas e selees mltiplas) para os trs estados a fim de que o usurio final possa selecionar
opes apropriadas para os diversos estados. Em muitos casos, o Desenvolvedor do QlikView
precisar ter um conjunto de selees comuns disponvel para todos os estados. Desse modo, o
usurio final poder definir o contexto para os diversos grficos e, ento, usar selees
especficas para mostrar as diferenas entre os estados. A Anlise de Conjunto pode ser usada
com os estados para manter a consistncia de determinadas selees entre eles.
count({State1<Ano = $::Ano, Ms = $::Ms>} DISTINCT [Nmero da Fatura])
count({State2<Ano = $::Ano, Ms = $::Ms>} DISTINCT [Nmero da Fatura])
O Desenvolvedor do QlikView manter as selees de Ano e Ms no State1 e no State2
sincronizadas com as selees de Ano e Ms no estado padro. O Desenvolvedor do
QlikView pode adicionar elementos aos modificadores de conjunto conforme necessrio
para manter campos ainda mais consistentes entre os estados.

Operadores de conjunto
possvel usar operadores de conjunto (+, *, -, /) com estados. As expresses a seguir so
vlidas e contaro nmeros de fatura diferentes que esto no estado padro ou no State1.
Exemplos:
count({$ + State1} DISTINCT [Nmero da Fatura])
conta os nmeros de faturas distintas na unio do estado <padro> e State1.
count({1 - State1} DISTINCT [Nmero da Fatura])
conta os nmeros de faturas distintas que no esto no State1.
count({State1 * State2} DISTINCT [Nmero da Fatura])
conta os nmeros de faturas distintas que esto nos estados <padro> e State1.
Tome cuidado ao usar operadores de conjunto dessa maneira. Em alguns casos, o resultado no
ser o esperado. Isso acontece porque as selees em um determinado estado geram um
conjunto de dados que pode no ser totalmente compatvel com os conjuntos com que ele est
sendo combinado. Isso acontece principalmente conforme a complexidade do modelo de dados
aumenta.

Definies de Valor de Campo Implcito


Outra maneira de usar operadores de conjunto com as funes de elemento P() e E(). Essas
funes s esto disponveis nas expresses de conjunto.
Exemplos:
count({$<[Nmero da Fatura] = p({State1} [Nmero da Fatura])>} DISTINCT [Nmero da
Fatura])
Esta expresso conta os nmeros de faturas distintas no estado <padro> com base nos
possveis nmeros de faturas disponveis no State1.
parecido, mas no totalmente equivalente, a esta expresso:
count({$<[Nmero da Fatura] = State::[Nmero da Fatura]>} DISTINCT [Nmero da Fatura])
A diferena entre as expresses que, na primeira, os possveis valores de nmero de fatura do
State1 so passados para o estado padro. Na segunda expresso, os valores selecionados em
State1 so passados para o estado padro. Se o usurio no tiver selecionado nenhum nmero
de fatura no State1, nenhum valor de nmero de fatura ser passado para o estado padro.
Os operadores de conjunto so usados melhor nos modificadores de conjunto. A expresso a
seguir encontra a interseo dos possveis nmeros de fatura de State1 e State2 e passa esses
valores para os nmeros de fatura no estado padro.
Exemplos:
count({$<[Nmero da Fatura] = p({State1} [Nmero da Fatura]) * p({State2} [Nmero da
Fatura])>} DISTINCT [Nmero da Fatura])
A expresso para encontrar a interseo dos nmeros de faturas nos estados <padro> e
State1 :
count({$<[Nmero da Fatura] = p({$} [Nmero da Fatura]) * p({State1} [Nmero da
Fatura])>} DISTINCT [Nmero da Fatura])
Essa expresso pode parecer confusa porque usa um estado (<padro> nesse caso) na funo
do elemento e um identificador de conjunto. Tenha em mente que a funo do elemento p($) est
retornando os possveis valores no estado padro. O identificador de conjunto/estado {$} est
sendo modificado pelo resultado das funes de elemento. Todas as selees de fatura
atualmente existentes no estado padro esto sendo substitudas pelos valores da interseo
das funes de elemento.
Deve-se observar que a expresso acima ainda no est totalmente correta porque no
sincroniza as selees comuns entre o estado padro e o State1. Veja abaixo uma expresso
que far isso:
Exemplos:
count({$<[Nmero da Fatura] = p({$} [Nmero da Fatura]) * p({State1<Ano = $::Ano, Ms =
$::Ms>} [Nmero da Fatura])>} DISTINCT [Nmero da Fatura])
Como antes, o Desenvolvedor do QlikView pode adicionar campos ao modificador para manter as
selees consistentes entre os diversos estados.
Exemplos de funes de classificao de grficos
Esses exemplos foram elaborados com a funo rank (VRank), mas podem ser aplicados de
forma semelhante funo HRank. No entanto, note que a funo HRank relevante apenas
para tabelas dinmicas.
Exemplo 1:
Examine as duas tabelas simples unidimensionais abaixo:
As duas tabelas so iguais, mas a primeira classificada pela primeira coluna, e a segunda, pela
ltima. Isso exemplifica a funcionalidade bsica de rank. O maior valor tem a maior posio
(menor nmero de posio).
A funo rank sempre retorna NULL nas linhas de total.
Exemplo 2:
Examine a tabela dinmica bidimensional abaixo:

Esta tabela baseia-se nos mesmos dados das duas tabelas do primeiro exemplo. Agora
possvel ver como o segmento de coluna atual representa o agrupamento interno no caso
multidimensional. O campo Ms do grupo A posicionado separadamente do campo Ms do
grupo B. A introduo do qualificador total permite obter novamente uma posio geral.
Exemplo 3:
Este exemplo demonstrar o efeito dos diferentes modos na representao numrica da posio.
Examine a tabela abaixo:

A terceira coluna mostra a posio nas representaes de texto, ao passo que as colunas de 4 a
8 mostram a representao numrica da mesma posio em diferentes modos. A expresso em
cada coluna :
num( rank( sum( X ), mode ))
onde modo varia de 0 a 4.

Modo 0 (padro) As linhas 2 e 3 compartilham a mesma classificao, mas esto claramente na


metade inferior da classificao total. Sua representao numrica , portanto, arredondada para
baixo, para 2. As linhas 4 e 5 tambm compartilham a mesma classificao, mas esto acima da
metade da tabela de classificao. Portanto, sua representao numrica equivale mdia da
primeira e da ltima posio na coluna ((1+8)/2=4.5). Esse modo til principalmente quando
voc deseja utilizar Efeitos Visuais para marcar os dados de posio mais alta e mais baixa
dentro de um grupo.
Modo 1 Em ambos os casos, usado o menor nmero de classificao do grupo, isto , 2 para
as linhas 2 e 3, e 4 para as linhas 4 e 5.
Modo 2 Em ambos os casos, usada a mdia da menor e da maior classificao do grupo, isto
, 2,5 ((2+3)/2) para as linhas 2 e 3, e 4,5 ((4+5)/2) para as linhas 4 e 5.
Modo 3 Em ambos os casos, usado o maior nmero de classificao do grupo, isto , 3 para as
linhas 2 e 3, e 5 para as linhas 4 e 5.
Modo 4 Cada linha recebe o prprio valor numrico distinto. A ordem nos grupos que
compartilham a mesma posio determinada pela ordem de classificao das dimenses do
grfico.

Exemplo 4:
Este exemplo demonstrar o efeito dos diferentes formatos para a representao de texto da
funo de posio. Examine a tabela abaixo:
As colunas de 3 a 5 mostram a representao de texto da mesma funo de posio com
diferentes valores no parmetro de formato.
Formato 0 (padro) As linhas que compartilham a mesma posio so exibidas como 'valor
baixo - valor alto', por exemplo, '2 - 3' e '4 - 5'.
Formato 1 As linhas que compartilham a mesma posio sempre obtm o nmero da menor
posio como representao de texto. Nesse caso, por exemplo, o nmero 2 obtido para as
linhas 2 e 3.
Formato 2 Uma linha de cada grupo que compartilha a mesma posio obtm o nmero de
posio mais baixo como representao de texto, enquanto as outras linhas do grupo obtm um
caractere em branco. A ordem nos grupos que compartilham a mesma posio determinada
pela ordem de classificao das dimenses do grfico.
Exemplos de funes Inter-Registro de Grficos

Exemplos de Funo Top


Esses exemplos foram elaborados com a funo top, mas podem ser aplicados de forma
semelhante s funes bottom, first e last. No entanto, as funes first e last so relevantes
apenas para tabelas dinmicas.
Exemplo 1:
Examine a tabela simples abaixo, considerando o uso da funo top em uma tabela
unidimensional:

Na dimenso nica, a funo top sempre far referncia primeira linha de dados da tabela (a
linha de total no includa).
As expresses que utilizam a funo top tambm sero avaliadas corretamente na linha de total,
pois o total tem uma ntida relao com um segmento de coluna especfico que, nesse caso, a
coluna inteira.
Exemplo 2:
Esta uma tabela simples bidimensional classificada principalmente pelo campo Grp:

A funo top, sem o qualificador total, agora retornar a expresso avaliada na linha superior do
grupo de classificao interno (nesse caso, a dimenso Grp). Um valor ser retornado para Grp =
A e outro para Grp = B.
Ao usar o qualificador total no caso de dimenso mltipla, voc novamente poder fazer
referncia linha superior absoluta da tabela com o mesmo valor retornado para todas as linhas.
A expresso certamente ser avaliada para o segmento de coluna que abrange a coluna inteira.
A expresso que utiliza a funo top, sem o qualificador total, ser avaliada como NULL na linha
de total, j que no pode ser associada nitidamente a um segmento de coluna especfico.
Agora, a tabela simples acima ser convertida em tabela dinmica, com todos os totais ativados.

A expresso que utiliza a funo top, sem o qualificador total, ser avaliada como NULL na linha
de total, j que no pode ser associada nitidamente a um segmento de coluna especfico.
Entretanto, todos os subtotais sero avaliados para cada segmento de coluna.
A expresso que utiliza o qualificador total no ter valores nos subtotais, mas retornar um valor
na linha de total geral.

Exemplo 3:
Examine a seguinte tabela simples classificada no campo Grp:
possvel continuar alterando a ordem de classificao entre os campos, de forma que o grfico
seja classificado em primeiro lugar no campo Ms. Agora, a tabela ter esta aparncia:

Exemplos de Funo Above


Esses exemplos foram elaborados com a funo above, mas podem ser aplicados de forma
semelhante s funes below, before e after. No entanto, as funes before e after so
relevantes apenas para tabelas dinmicas.
Exemplo 4:
Examine a tabela simples abaixo, considerando o uso da funo above em uma tabela
unidimensional:

A terceira coluna mostra a expresso sum(Val) avaliada uma linha acima da atual, o que pode
ser confirmado pela comparao com os valores para sum(val) na segunda coluna. A
funo above retorna NULL na primeira linha, j que no h nenhuma linha acima para avaliar a
expresso. A funo above sempre retorna NULL em todas as linhas de total.
A quarta coluna demonstra o uso mais comum dessa funo, ou seja, calcular a diferena entre
diferentes perodos de tempo, por exemplo.

Exemplo 5:
Examine a tabela dinmica bidimensional abaixo:
A funo above, sem o qualificador total (terceira coluna), funcionar somente em cada grupo de
classificao. Um valor NULL ser retornado na linha superior de cada segmento de coluna.
Quando um qualificador total for includo (quarta coluna), a coluna inteira ser considerada um
segmento de coluna. Somente a linha superior retornar NULL. Todas as linhas de total sero
desconsideradas e retornaro NULL.

Exemplos das Funes RowNo e NoOfRows


Esse exemplo foi elaborado com as funes RowNo e NoOfRows, mas pode ser aplicado de
forma semelhante s funes ColumnNo e NoOfColumns. No entanto, as
funes ColumnNo e NoOfColumns so relevantes apenas para tabelas dinmicas.
Exemplo 6:
Examine a tabela dinmica bidimensional abaixo:

Coluna 3 A funo RowNo retornar o nmero de linha em cada segmento de coluna do grupo
de classificao. Nas linhas de subtotal, o nmero de linha 0 ser retornado, pois esses totais
pertencem claramente a uma segmento de coluna especfico. O valor NULL ser retornado na
linha de total geral.
Coluna 4 Com o qualificador total, a funo RowNo retornar o nmero de linha da coluna
inteira. O valor NULL ser retornado nas linhas de subtotal. O valor 0 ser retornado na linha de
total geral.
Coluna 5 A funo NoOfRows retornar o nmero de linhas de dados em cada segmento de
coluna do grupo de classificao. Nas linhas de subtotal, o mesmo nmero ser retornado como
nas linhas de dados. O valor NULL ser retornado na linha de total geral.
Coluna 6 Com o qualificador total, a funo NoOfRows retornar o nmero de linhas de dados
da coluna inteira, o mesmo que ser retornado na linha de total geral. O valor NULL ser
retornado nas linhas de subtotal.
dimensionality ( )
Para uma tabela dinmica com trs colunas de dimenso esquerda, ser retornado o seguinte:
3 para todas as clulas de dados comuns.
2 para somas parciais no primeiro nvel e entradas no expandidas na terceira coluna.
1 para somas parciais no segundo nvel e entradas somente expandidas na primeira coluna.
0 para a clula de total geral.
dimensionality ( )

secondarydimensionality ( )

Estados Alternativos

Descrio
Voc pode usar Estados Alternativos para realizar anlise comparativa entre conjuntos de
dados mltiplos, por exemplo, para a finalidade de anlise da cesta de compras. Um estado
mantm um conjunto de selees;
O desenvolvedor do QlikView pode criar vrios estados dentro de um documento QlikView e
aplic-los a objetos especficos no documento. O usurio final pode criar cpias desses objetos
(objetos do server) e, em seguida, colocar esses objetos em estados diferentes.
A diferena mais importante entre Desvincular e Estados Alternativos o fato de que TODOS
os objetos em um determinado estado respondero s selees do usurio feitas nesse estado.
Os objetos em um estado especfico no so afetados pelas selees do usurio feitas em outros
estados.
Estados Alternativos funcionalidade no est acessvel no script de carga.
A funcionalidade Estados Alternados habilitada por um desenvolvedor do QlikView e deve ser
usada com cautela, uma vez que ela pode causar um grande confuso aos usurios finais, j que
h uma indicao automtica na tela em que esto objetos ou expresses, ou referncias,
estados alternativos. O desenvolvedor do QlikView deve decidir se fornecer essas informaes
para o usurio final usando a funo StateName().

Configurao dos Estados Alternativos


Faa o seguinte para habilitar e configurar os estados alternativos:

1. Clique em Estados Alternativos... nas Propriedades do Documento: aba Geral.


O dilogo Estados Alternados aberto.

2. Clique em Adicionar... para criar um nmero de estados e nome-los. O nomes sero


mencionados como identificadores de estado.

3. Clique em OK para fechar a caixa de dilogo.


Agora, o desenvolvedor do QlikView pode criar novos Estados Alternativos a partir dos objetos da
tela.
Os usurios finais que acessam documentos QlikView a partir de um QlikView Server podem
usar, mas no criar Estados Alternativos.

Atribuio de estados a objetos


Faa o seguinte para atribuir um estado a um objeto:

1. Abra a caixa de dilogo Propriedades e selecione a guia Geral.

2. Defina o Estado Alternativo para o identificador de estado que voc deseja usar para o
objeto.
Agora, o objeto ser independente do resto do documento em termos de seleo, a menos que
outros objetos sejam definidos com o mesmo estado.
Existem dois estados que esto sempre disponveis: estado padro e herdado. No estado
padro, ocorre a maioria da utilizao do QlikView; esse estado representado por $. O
documento QlikView est sempre no estado padro. Os objetos podem herdar estados de
objetos de nvel superior, como pastas e contineres. Isso significa que so herdados estados
como: Documento - Pasta - Objetos de Pasta. As pastas e os objetos de pasta esto sempre no
estado herdado, a no ser que sejam substitudos pelo desenvolvedor do QlikView.

Comparao dos Estados Alternativos


Voc pode comparar dois estados no mesmo objeto. Por exemplo, voc pode criar um grfico de
linhas para exibir ambos os estados dos dados com o mesmo eixo ao atribuir um estado na
expresso usando anlise set.
Exemplo:
Se voc definiu os estados Grupo1 e Grupo2, voc pode comparar a mdia do
campo Adj.Close para os grupos ao mostrar essas duas expresses em um grfico de linha:
Avg({[Group1]} [Adj.Close])
Avg({[Group2]} [Adj.Close])

Comportamento Lgico ao Usar Estados Alternativos


Pressionar o boto Limpar afeta todos os estados.
No plugin Inter Explorer, um item de menu foi adicionado ao menu suspenso do
boto Limpar que permite ao usurio apagar as selees de um estado especfico. Esse menu
no est disponvel no cliente Ajax, mas a mesma funo pode ser alcanada ao criar um boto
de ao para a ao Limpar com um estado especfico.
Pressionar os botes Voltar e Adiante afeta todos os estados. No h nenhum mecanismo para
voltar e avanar em estados especficos.
Pressionar os botes Bloquear e Desbloquear afeta todos os estados. No possvel bloquear
e desbloquear estados especficos com esses botes. possvel bloquear campos especficos
em estados usando o menu exibido ao clicar com o boto direito em caixas de listagem em um
estado especfico.
Os itens do menu Selees se aplicam a todos os estados. No h nenhum mecanismo para
afetar estados especficos nesse menu.
Estados Alternativos pode ser usado com objetos vinculados. O estado se aplica a todas as
instncias de um objeto. A alterao de um estado em um objeto vinculado colocar os outros
objetos vinculados no mesmo estado.
As variveis pertencem ao estado padro. As alteraes em outros estados no afetaro os
valores de varivel.
Os disparadores so acionados em todos os estados.
As aes podem ser definidas para ocorrer em estados especficos. Uma exceo conhecida a
ao Executar Macro. Ela pode ser definida para ser executada em um estado especfico; no
entanto, as macros so acionadas em todos os estados.
Os objetos que usam um estado ausente (o estado foi removido por um desenvolvedor) sero
revertidos para o estado padro, embora o menu suspenso Estado Alternativo exiba algo
semelhante a:
AlternateStateName <unavailable>.
S possvel usar funes de campo com um argumento de Estado em conjunto com Estados
Alternados.
Consulte: Funes de campo

Exemplos de Estados Alternativos em Expresses de


Grfico
Esses exemplos tm o objetivo de mostrar prticas recomendadas quanto ao uso de estados alternativos por
Desenvolvedores e/ou Usurios Avanados do QlikView. Esses exemplos esto disponveis no arquivo:
Alternate States Functionality.qvw

Sincronizando Selees entre Estados


As seguintes expresses podem ser usadas em um nico grfico:
count({$} DISTINCT [Nmero da Fatura])
count({State1} DISTINCT [Nmero da Fatura])
count({State2} DISTINCT [Nmero da Fatura])
Existe um problema nesse mtodo: o Desenvolvedor do QlikView deve duplicar as selees (listas e selees
mltiplas) para os trs estados a fim de que o usurio final possa selecionar opes apropriadas para os
diversos estados. Em muitos casos, o Desenvolvedor do QlikView precisar ter um conjunto de selees
comuns disponvel para todos os estados. Desse modo, o usurio final poder definir o contexto para os
diversos grficos e, ento, usar selees especficas para mostrar as diferenas entre os estados. A Anlise de
Conjunto pode ser usada com os estados para manter a consistncia de determinadas selees entre eles.
count({State1<Ano = $::Ano, Ms = $::Ms>} DISTINCT [Nmero da Fatura])
count({State2<Ano = $::Ano, Ms = $::Ms>} DISTINCT [Nmero da Fatura])
O Desenvolvedor do QlikView manter as selees de Ano e Ms no State1 e no State2 sincronizadas
com as selees de Ano e Ms no estado padro. O Desenvolvedor do QlikView pode adicionar
elementos aos modificadores de conjunto conforme necessrio para manter campos ainda mais
consistentes entre os estados.

Operadores de conjunto
possvel usar operadores de conjunto (+, *, -, /) com estados. As expresses a seguir so vlidas e contaro
nmeros de fatura diferentes que esto no estado padro ou no State1.
Exemplos:
count({$ + State1} DISTINCT [Nmero da Fatura])
conta os nmeros de faturas distintas na unio do estado <padro> e State1.
count({1 - State1} DISTINCT [Nmero da Fatura])
conta os nmeros de faturas distintas que no esto no State1.
count({State1 * State2} DISTINCT [Nmero da Fatura])
conta os nmeros de faturas distintas que esto nos estados <padro> e State1.
Tome cuidado ao usar operadores de conjunto dessa maneira. Em alguns casos, o resultado no ser o
esperado. Isso acontece porque as selees em um determinado estado geram um conjunto de dados que
pode no ser totalmente compatvel com os conjuntos com que ele est sendo combinado. Isso acontece
principalmente conforme a complexidade do modelo de dados aumenta.

Definies de Valor de Campo Implcito


Outra maneira de usar operadores de conjunto com as funes de elemento P() e E(). Essas funes s
esto disponveis nas expresses de conjunto.
Exemplos:
count({$<[Nmero da Fatura] = p({State1} [Nmero da Fatura])>} DISTINCT [Nmero da Fatura])
Esta expresso conta os nmeros de faturas distintas no estado <padro> com base nos possveis
nmeros de faturas disponveis no State1.
parecido, mas no totalmente equivalente, a esta expresso:
count({$<[Nmero da Fatura] = State::[Nmero da Fatura]>} DISTINCT [Nmero da Fatura])
A diferena entre as expresses que, na primeira, os possveis valores de nmero de fatura do State1 so
passados para o estado padro. Na segunda expresso, os valores selecionados em State1 so passados
para o estado padro. Se o usurio no tiver selecionado nenhum nmero de fatura no State1, nenhum valor
de nmero de fatura ser passado para o estado padro.
Os operadores de conjunto so usados melhor nos modificadores de conjunto. A expresso a seguir encontra a
interseo dos possveis nmeros de fatura de State1 e State2 e passa esses valores para os nmeros de
fatura no estado padro.
Exemplos:
count({$<[Nmero da Fatura] = p({State1} [Nmero da Fatura]) * p({State2} [Nmero da Fatura])>}
DISTINCT [Nmero da Fatura])
A expresso para encontrar a interseo dos nmeros de faturas nos estados <padro> e State1 :
count({$<[Nmero da Fatura] = p({$} [Nmero da Fatura]) * p({State1} [Nmero da Fatura])>} DISTINCT
[Nmero da Fatura])
Essa expresso pode parecer confusa porque usa um estado (<padro> nesse caso) na funo do elemento e
um identificador de conjunto. Tenha em mente que a funo do elemento p($) est retornando os possveis
valores no estado padro. O identificador de conjunto/estado {$} est sendo modificado pelo resultado das
funes de elemento. Todas as selees de fatura atualmente existentes no estado padro esto sendo
substitudas pelos valores da interseo das funes de elemento.
Deve-se observar que a expresso acima ainda no est totalmente correta porque no sincroniza as selees
comuns entre o estado padro e o State1. Veja abaixo uma expresso que far isso:
Exemplos:
count({$<[Nmero da Fatura] = p({$} [Nmero da Fatura]) * p({State1<Ano = $::Ano, Ms = $::Ms>}
[Nmero da Fatura])>} DISTINCT [Nmero da Fatura])
Como antes, o Desenvolvedor do QlikView pode adicionar campos ao modificador para manter as selees
consistentes entre os diversos estados.

Criando Estados Alternativos


Descrio

O estado alternativo uma separao lgica de parte dos dados armazenados no documento Qlikview para
anlise individual de forma que, a seleo realizada sobre um estado alternativo no interfere nos demais estados nem
no restante do documento. Voc pode criar vrios estados dentro de um documento QlikView e aplic-los a objetos
especficos no documento. Estados Alternativos no um recurso disponvel no script de carga e sim na interface
grfica(UI).

1 Passo Criar os estados alternativos: no menu Propriedades do Documento: Aba Geral.na caixa de
dilogo Estados Alternativos a partir do boto Estados Alternativos... Voce pode criar qualquer nmero de estados
no documento QlikView e fornecer um nome para cada estado criado.

Quando o recurso Estados Alternativos est ativado, voc tambm pode criar novos estados a partir dos objetos da
tela.
1. Criar um objeto de texto e aplicar as seguintes configuraes a este objeto:

a. Na guia Geral Alinhamento horizontal centro, alinhamento vertical superior transparncia 100%

b. Na guia Titulo Ocultar a barra de ttulo;

c. Efetuar as demais formaes conforme achar necessrio;

2. Criar um objeto listbox para o campo ANO e aplicar as seguintes configuraes a este objeto:

a. Na guia Geral selecionar o estado alternativo 1


b. Na guia Apresentao Desmarcar a opo coluna nica e marcar bordas da clula

c. Efetuar as demais formaes conforme achar necessrio;

d. Criar um objeto listbox com as mesmas configuraes para o campo MS.

3. Criar um objeto de seleo mltipla e aplicar as seguintes configuraes a este objeto:

a. Na aba Geral Inserir os campos DIA UTIL e DIA, selecionar o estado alternativo 1
b. Na aba Apresentao marcar a opo Estilo da Grade

c. Efetuar as demais formaes conforme achar necessrio

4. Executar os passos 1 a 3 novamente para o estado alternativo 2

Neste ponto teremos uma imagem semelhante a esta, observe que fiz selees diferenciadas para mostrar como
o estado alternativo permite a seleo individual por estado.

5. Agora vamos criar um grfico combinado e aplicar as seguintes configuraes a este objeto:

a. Colocar o campo cidade como dimenso


b. Criar duas expresses para cada estado alternativo com a seguinte formula:

Expresso 1:

sum({EstAlternativo1<Cliente = $::Cliente, Vendedor = $::Vendedor, Cidade = $::Cidade>}Vendas)

Expresso 2:

sum({EstAlternativo1<Cliente = $::Cliente, Vendedor = $::Vendedor, Cidade = $::Cidade>}Vendas)/

sum({EstAlternativo1<Cliente = $::Cliente, Vendedor = $::Vendedor, Cidade = $::Cidade>} Total Vendas)

Esta expresso realiza a soma do campo vendas para o Estado alternativo EstAlternativo1 onde qualquer valor
selecionado no campo Cliente do estado padro tambm ser selecionado no campo Cliente do estado alternativo;
o mesmo ocorre para os campos Vendedor e Cidade

c. Para o rotulo destas expresses funcionarem de modo dinmico vamos aplicar a seguinte expresso

Expresso 1:

if(Count({EstAlternativo1} DISTINCT ANO) = 1 and Count({EstAlternativo1} DISTINCT MES) = 1, 'Vendas' &' '
& Only({EstAlternativo1} MES) & ' '& 'de' &' '
& Only({EstAlternativo1} ANO), if(count({EstAlternativo1} DISTINCT ANO) = 1 , 'Vendas' &' '
& if(Count({EstAlternativo1} DISTINCT MES) <12, Concat({EstAlternativo1} DISTINCT MES,',',12) )
&' '& 'de' &' ' & Only({EstAlternativo1} ANO), 'Estado Alternativo1'))

Expresso 2:

=if(Count({EstAlternativo1} DISTINCT ANO) = 1 and Count({EstAlternativo1} DISTINCT MES) = 1, '% Part'&' '
& Only({EstAlternativo1} MES) & ' '& 'de' &' '
& Only({EstAlternativo1} ANO), if(count({EstAlternativo1} DISTINCT ANO) = 1 , '% Part' &' '
& if(Count({EstAlternativo1} DISTINCT MES) <12, Concat({EstAlternativo1} DISTINCT MES,',',12) ) &' '& 'de' &' '
& Only({EstAlternativo1} ANO), 'Estado Alternativo1'))

d. A primeira e a terceira expresses devero ser configuradas como barra e com valores sobre dados marcado

e. A segunda e quarta expresses devero ser configuradas como linha e com smbolo pontos.
f. Na aba Eixos configurar a primeira e terceira expresses na posio esquerda e a segunda e quarta na posio
direita.

g. Na aba Nmero configurar a primeira e terceira expresses como inteiro e a segunda e quarta como fixo com um
decimal e mostrar em porcentagem.
Finalmente teremos esta aparncia para a apresentao do estado alternativo.

Identificadores de Estado

Os nomes de estado criados por voc so conhecidos como Identificadores de Estado. Existem dois estados que esto
sempre disponveis: estado padro e herdado. No estado padro, ocorre a maioria da utilizao do QlikView; esse
estado representado por $. O documento QlikView est sempre no estado padro. Os objetos podem herdar estados
de objetos de nvel superior, como pastas e contineres. Isso significa que so herdados estados como: Documento -
Pasta - Objetos de Pasta. As pastas e os objetos de pasta esto sempre no estado herdado, a no ser que sejam
substitudos pelo desenvolvedor do QlikView.

Recursos em Estados Alternativos

Os recursos a seguir esto includos em Estados Alternativos:

l No h nenhuma indicao automtica na tela para informar que objetos ou expresses esto em estados alternativos
ou fazem referncia a eles. O desenvolvedor do QlikView deve decidir se fornecer essas informaes para o usurio
final usando a funo StateName().

Estados Alternativos pode ser usado com objetos vinculados. O estado se aplica a todas as instncias de um objeto.
A alterao de um estado em um objeto vinculado colocar os outros objetos vinculados no mesmo estado. As
variveis pertencem ao estado padro. As alteraes em outros estados no afetaro os valores de varivel.

Nota:

O recurso Estados Alternativos ativado por um desenvolvedor do QlikView e deve ser usado com cautela, pois pode
gerar uma grande confuso com os usurios finais.