AnálisedeConjunto-SetAnalysis
AnálisedeConjunto
AnálisedeConjunto-SetAnalysis
Conjuntos podem ser usados em funções de agregação. As funções de agregação normalmente agregam sobre o conjunto de registros possíveis definido pela seleção atual. Mas um conjunto de registros alternativos pode ser definido por uma expressão de conjunto. Por isso, um conjunto é conceitualmente semelhante a uma seleção. Uma expressão de conjunto sempre começa e termina com chaves quando usada, por exemplo, {BM01}. Identificadores de conjunto
Existe uma constante que pode ser usada para denotar um conjunto de registros; 1. Ela representa um conjunto completo de todos os registros no aplicativo. O sinal $ representa os registros da seleção atual. A expressão de conjunto {$} é equivalente a não definir uma expressão de conjunto. {1-$} define o inverso da seleção atual, ou seja, tudo que a seleção atual exclui. Seleções da pilha Retroceder/Avançar podem ser usadas como identificadores de conjunto, pelo uso do símbolo de dólar: $1 representa a seleção anterior, ou seja, o equivalente a pressionar o botão Voltar. De forma semelhante, $_1 representa a etapa seguinte, ou seja, o equivalente a pressionar o botão Avançar. Qualquer inteiro sem sinal pode ser usado nas notações Retroceder e Avançar, ou seja, $0 representa a seleção atual. Por fim, os marcadores podem ser usados como identificadores de conjunto. Observe que somente o servidor e os marcadores de documento podem ser usados como identificadores de conjunto. O ID do marcador ou o nome do marcador pode ser usado, por exemplo, BM01 ou MeuMarcador . Somente a parte de seleção de um marcador é usada. Os valores não estão incluídos. Não é possível, então, usar campos de entrada nos marcadores para análises de conjuntos.
Exemplos: sum( {$} Vendas )
retorna as vendas para a seleção atual, ou seja, o mesmo que sum(Vendas). sum( {$1} Vendas )
retorna as vendas para a seleção anterior. sum( {$_2} Vendas )
retorna as vendas para a 2ª seleção, ou seja, duas etapas seguintes. Relevante somente depois de duas operações Voltar feitas recentemente. sum( {1} Vendas )
retorna o total das vendas no aplicativo, sem importar a seleção,
AnálisedeConjunto-SetAnalysis mas não a dimensão. Se usado em um gráfico com, por exemplo, Produtos como dimensão, cada produto obterá um valor diferente. sum( {1} Total Vendas )
retorna o total das vendas no aplicativo, sem importar a seleção e a dimensão. Isto é, o mesmo que sum(Todas as Vendas). sum( {BM01} Vendas )
retorna as vendas para o marcador BM01. sum( {MyBookMark} Vendas )
retorna vendas para o marcador MyBookMark. sum({Server\BM01} Vendas) retorna as vendas para o marcador do servidor BM01. sum({Document\MyBookmark}Vendas) retorna as vendas do marcador de documento MeuMarcador. Operadores de conjunto
Existem vários operadores de conjunto que podem ser usados nas expressões de conjunto. Todos os operadores de conjunto usam conjuntos como operandos, conforme descrito acima, e retornam um conjunto como resultado. + União. Essa operação binária retorna um conjunto formado pelos registros que pertencem a qualquer um dos dois operandos do conjunto. — Exclusão. Essa operação binária retorna um conjunto formado pelos registros que pertencem apenas ao primeiro operando do conjunto. Além disso, quando usada como um operador unário, ela retorna o conjunto complementar. * Interseção. Essa operação binária retorna um conjunto formado pelos registros que pertencem aos dois operandos do conjunto. / Diferença simétrica (XOR). Essa operação binária retorna um conjunto formado pelos registros que pertencem a um dos dois operandos do conjunto. A ordem de precedência é 1) Unário menos (complemento), 2) Interseção e Diferença simétrica e 3) União e Exclusão. Em um grupo, a expressão é avaliada da esquerda para a direita. É possível definir ordens alternativas usando parênteses, que podem ser necessários, visto que os operadores de conjunto não comutam, por exemplo, A+(B-C) é diferente de (A+B)-C e de (A-C)+B.
Exemplos: sum( {1-$} Vendas )
retorna todas as vendas excluídas pela seleção atual.
AnálisedeConjunto-SetAnalysis sum( {$*BM01} Vendas )
retorna as vendas para a interseção entre a seleção atual e o marcador BM01. sum( {-($+BM01)} Vendas )
retorna as vendas excluídas pela seleção atual e pelo marcador BM01. Nota
O uso dos operadores de conjunto em combinação com as expressões de agregação básicas que envolvem campos de várias tabelas do QlikView pode resultar em resultados imprevisíveis, devendo assim, ser evitado. Por exemplo, se Quantidade e Preço forem campos de tabelas diferentes, a expressão sum({$*BM01}Quantidade*Preço) deverá ser evitada. Modificadores de conjunto
Um conjunto pode ser modificado por uma seleção adicional ou alterado. 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 < e >. Exemplo:
. Os nomes e os valores de campo podem estar entre aspas: <[Região das Vendas]={’Costa oeste’, ’América do Sul’}>. Existem várias formas de definir a seleção: Um caso simples é uma seleção baseada nos valore selecionados de outro campo, por exemplo, . Esse modificador usará os valores selecionados de DataEntrega e os aplicará como uma seleção em DataPedido . Se houver muitos valores diferentes – mais de duzentos – essa operação ocupará muito a CPU e deve ser evitada. Contudo, o caso mais comum é uma seleção baseada em uma lista de valores de campo entre chaves, os valores separados por vírgula, por exemplo, . 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 pela utilização de aspas duplas, por exemplo, selecionará todos os ingredientes com a palavra‘alho’. As pesquisas são sensíveis a maiúsculas e também são feitas para valores excluídos. Conjuntos de elementos vazios explicitamente como ou implicitamente como (uma pesquisa sem resultados) indicam nenhum produto, ou seja, eles resultarão em um conjunto de registros que não está associado a qualquer produto. Observe que esse conjunto não pode ser obtido pelas seleções comuns, a menos que uma seleção seja feita em outro campo como o IDTransação. Por fim, para os campos no modo AND, também há a possibilidade de uma exclusão forçada. Se quiser forçar a exclusão de valores de campo específicos, você precisará usar “~” antes do nome do campo. Um modificador de conjunto pode ser usado em um identificador de conjunto ou sozinho. Ele não pode ser usado em uma expressão de
AnálisedeConjunto-SetAnalysis conjunto. Quando usado em um identificador de conjunto, o modificador deve ser escrito imediatamente depois do identificador de conjunto, por exemplo, {$}. Quando usado sozinho, ele é interpretado como uma modificação da seleção atual.
Exemplos: sum( {1} Vendas ) retorna as vendas da região dos EUA, sem importar a seleção atual. sum( {$} Vendas ) retorna as vendas para a seleção atual, mas com a seleção em “Região” removida. sum( {} Vendas ) retorna o mesmo como o exemplo anterior. Quando o conjunto para modificar for omitido, $ é adotado. Nota! A sintaxe nos dois exemplos anteriores é interpretada como “nenhuma seleção” em “Região”, ou seja, todas as regiões com outras seleções serão possíveis. Ela não é equivalente à sintaxe (nem a qualquer outro texto à direita do sinal de igual implicitamente resultando em um conjunto de elementos vazio) que é interpretada como nenhuma região. sum( {$} Vendas ) retorna as vendas da seleção atual, mas com as novas seleções em “Ano” e em “Região”. sum( {$<~Ingrediente = {“*alho*”}>} Vendas ) retorna as vendas para a seleção atual, mas com uma exclusão forçada de todos os ingredientes que contêm a string “alho”. sum( {$} Vendas ) retorna as vendas da seleção atual, mas com todos os anos que começam com o número “2”, ou seja, muito provavelmente do ano 2000 em diante, selecionados no campo. sum( {$} Vendas ) conforme a sintaxe acima, mas o ano 1980 também está incluído na seleção. sum( {$1978<2004”}>} Vendas ) conforme a sintaxe acima, mas com uma pesquisa numérica para que um intervalo arbitrário possa ser especificado.
AnálisedeConjunto-SetAnalysis Modificadores de Conjunto com operadores de conjunto
A seleção dentro de um campo pode ser definida usando-se os operadores de conjunto conforme descrito acima, trabalhando em conjuntos de elementos diferentes. Por exemplo, o modificador selecionará todos os anos que começam com “20” além de “1997”, exceto “2000”.
Exemplos: sum( {$} Vendas ) retorna as vendas da seleção atual, mas com o produto “NossoProduto1” adicionado à lista de produtos selecionados e “NossoProduto2” removido da lista de produtos selecionados. sum( {$} Vendas ) retorna as vendas da seleção atual, mas com seleções adicionais no campo “Ano”: 1997 e todos os anos que começam com “20” – exceto o ano 2000. Observe que se 2000 estivesse incluído na seleção atual, ele continuaria incluído após a modificação. sum( {$} Vendas ) retorna quase o mesmo resultado acima, mas aqui o ano 2000 será excluído, mesmo se estivesse inicialmente incluído na seleção atual. O exemplo mostra a importância da utilização de parênteses em alguns casos, para definir uma ordem de precedência. sum( {$} Vendas ) retorna as vendas da seleção atual, mas com uma nova seleção em “Ano”: todos os anos exceto o ano 2000; e somente para produtos que contêm a palavra ‘suporte’. Modificadores de Conjunto usando atribuições com operadores de conjunto implícitos
A notação acima define novas seleções, sem importar a seleção atual no campo. Contudo, se desejar basear a sua seleção atual no campo e adicionar valores de campo, você pode, por exemplo, definir um modificador . Uma forma mais curta e equivalente de escrever isso é , ou seja, o operador de atribuição define implicitamente uma união. Além disso, interseções, exclusões e diferenças simétricas implícitas podem ser definidas com “*=”, “–=” e “/=”.
Exemplos: sum( {$} Vendas ) retorna as vendas da seleção atual, mas usando uma união implícita para adicionar os produtos "NossoProduto1” e “NossoProduto2” à lista de produtos selecionados.
AnálisedeConjunto-SetAnalysis sum( {$} Vendas ) retorna as vendas da seleção atual, mas usando uma união implícita para adicionar um número de anos à seleção: 1997 e todos os anos que começam com “20” – exceto o ano 2000. Observe que se 2000 estivesse incluído na seleção atual, ele continuaria incluído após a modificação. O mesmo que sum( {$} Vendas ) retorna as vendas da seleção atual, mas somente para a inserção dos produtos atualmente selecionados e do produto “NossoProduto1”. Modificadores de Conjunto com expansões de sinal de dólar
As variáveis e outras expansões do sinal de dólar podem ser usadas nas expressões de conjunto.
Exemplos: sum( {$} Vendas ) retorna as vendas do ano anterior em relação à seleção atual. Aqui, uma variável vLastYear contendo o ano relevante é usada em uma expansão de sinal de dólar. sum( {$} Vendas) retorna as vendas do ano anterior em relação à seleção atual. Aqui, uma expansão de sinal de dólar é usada para calcular o ano anterior. Modificadores de Conjunto com pesquisas avançadas
As pesquisas avançadas que usam curingas e agregações podem ser usadas para definição de conjuntos.
Exemplos: sum( {$–1} Vendas ) retorna as vendas da seleção atual, excluindo as transações que pertencem a produtos com a palavra ‘Interno’ ou ‘Doméstico’ no nome do produto. sum( {$} Vendas ) > 1000000”}>} Vendas ) retorna as vendas da seleção atual, mas com uma nova seleção no campo “Cliente”: apenas os clientes que em 2007 apresentaram uma total de vendas de mais de 1000000.
AnálisedeConjunto-SetAnalysis Modificadores de Conjunto com definições de valor de campo implícitas
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. Dentro dos parênteses, é possível especificar uma expressão de conjunto e um campo, por exemplo, P({1} Cliente). Essas funções não podem ser usadas em outras expressões:
Exemplos: sum( {$} Cliente)>} Vendas ) retorna as vendas da seleção atual, mas somente os clientes que já compraram o produto ‘Sapato’. Aqui, a função de elemento P( ) retorna uma lista de clientes possíveis; aqueles decorrentes da seleção ‘Sapato’ no campo Produto. sum( {$})>} Vendas ) o mesmo que o anterior. Se o campo na função de elemento for omitido, a função retornará os valores possíveis do campo especificado na atribuição externa. sum( {$} Fornecedor)>} Vendas ) retorna as vendas da seleção atual, mas somente os clientes que já forneceram o produto ‘Sapato’. Aqui, a função de elemento P( ) retorna uma lista de fornecedores possíveis; aqueles decorrentes da seleção ‘Sapato’ no campo Produto. Assim, a lista de fornecedores é usada como uma seleção no campo Cliente. sum( {$})>} Vendas ) retorna as vendas da seleção atual, mas somente os clientes que nunca compraram o produto ‘Sapato’. Aqui, a função de elemento E( ) retorna a lista de clientes excluídos; aqueles excluídos pela seleção ‘Sapato’ no campo Produto.
AnálisedeConjunto-SetAnalysis Sintaxe para Conjuntos
Por isso, a sintaxe completa (sem incluir a utilização opcional dos parênteses padrão para definir a precedência) é definir_expressão ::= {definir_entidade { definir_operador definir_entidade } } definir_entidade ::= definir_identificador [ definir_modificador ] definir_identificador ::= 1 | $ | $N | $_N | id_do_marcador | nome_do_marcador definir_operador ::= + | - | * | / definir_modificador ::= < seleção_de_campo {, seleção_de_campo } > seleção_de_campo ::= nome_do_arquivo [ = | += | ¬–= | *= | /= ] expressão_do_conjunto_de_elementos expressão_do_conjunto_de_elementos ::= conjunto_de_elementos{ definir_operador conjunto_de_elementos } conjunto_de_elementos ::= [ nome_do_arquivo ] | { lista_de_elementos } | função_de_elemento lista_de_elemetos ::= elemento { , elemento } função_de_elemento ::= ( P | E ) ( [ definir_expressão ] [ nome_do_campo ] ) elemento ::= valo_do_campo | " máscara_de_pesquisa "