0% acharam este documento útil (0 voto)
4 visualizações66 páginas

Set Analysis

O documento aborda a análise de conjuntos no Qlik, explicando como o Set Analysis permite definir grupos de valores independentes das seleções atuais para realizar comparações e análises. Ele detalha conceitos fundamentais, regras de sintaxe, e a criação de expressões de conjunto, incluindo identificadores, modificadores e operadores. Além disso, discute a importância de utilizar aspas apropriadas ao criar expressões e as diferenças entre aspas simples e duplas.

Enviado por

lvassis
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
4 visualizações66 páginas

Set Analysis

O documento aborda a análise de conjuntos no Qlik, explicando como o Set Analysis permite definir grupos de valores independentes das seleções atuais para realizar comparações e análises. Ele detalha conceitos fundamentais, regras de sintaxe, e a criação de expressões de conjunto, incluindo identificadores, modificadores e operadores. Além disso, discute a importância de utilizar aspas apropriadas ao criar expressões e as diferenças entre aspas simples e duplas.

Enviado por

lvassis
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

1.

1 Introduction / Advanced Set Expressions


Fonte: Qlik - Help - Set analysis expressions
Fonte: Community - Qlik Brasil - Manual Set Analysis
Fonte: Community - Set Analysis Cheat Sheet
Fonte: Community - The little equals sign
QCCQLP – Introduction to Set Expressions
QCCQLP – Advanced Set Expressions

Normalmente, quando se faz uma seleção, as funções de agregação (Sum, Max, Min,
Avg, Count entre outras) agrupam valores sobre as seleções correntes (estados de
seleção), pois, essas seleções definem automaticamente o escopo da agregação ou
conjunto de dados a ser agregado. Commented [ALAd1]: Seleções/Estados de Seleção
definem o escopo das funções de agregação
Contudo, com o uso do Set Analysis, é possível definir um grupo independente das
seleções atuais e analisar um conjunto de valores específico ou realizar diferentes tipos
de comparações. Logo, o Set Analysis é um mecaninsmo que define um conjunto de
valores diferente do conjunto definido pelas seleções atuais. Commented [ALAd2]: Set Analysis: Mecanismo que
define um conjunto de valores diferente do conjunto
1.1.1 Aggregation Scope – Definindo o escopo da agregação definido pelas seleções atuais.
Existem 2 fatores que determinam quais registros irão compor o Escopo da
Agregação, de uma expressão ou o valor de uma agregação em um grafico:

 Agrupamentos dimensionais
Dimensões são dados categóricos que
agregam os valores das medidas para criar os
elementos visuais, ou seja, são elas que geram
os agrupamentos que encerram o escopo de
dados base dos cálculos a serem realizados
pelas expressões.
 Seleções e filtros que limitam dados

Embora os Agrupamentos Dimensionais e os Filtros/Seleções definam o Escopo Da


Agregação; há situações em que é preciso redefinir/desconsidar a dimensão, a seleção,
ou ambas. Há 2 maneiras de alterar esse comportamento usando expressões: Total e
Set Analysis.
 Total
O qualificador Total em uma agregação fará com que o valor dimensional seja
desconsiderado e a agregação seja realizada sobre todos os valores
dimensionais possíveis.
 Set Analysis
A aplicação do Set Analysis em uma agregação fará com que o estado atual da
seleção seja desconsiderado.
A agregação ainda será dividida por dimensões, mas não estará limitada ao Commented [ALAd3]: Escopo da Agregação:
subconjunto de dados indicado pelas seleções atuais. Agrupamentos dimensionais
Seleções/Filtros – Estado de Seleção
Commented [ALAd4]: {1} e TOTAL desconsideram as
seleções e os agrupamentos dimensionais
É possível empregar ambas as técnicas de redirecionamento em uma mesma
expressão e assim desconsiderar tanto a dimensão quanto o estado atual da
seleção. Para isso basta acrescentar à agregação o Identificador {1} do Set
Analisys e o Qualificador Total:
Sum({1} Total Sales)  Sum(All Sales)
O equivalente pode ser obtido com a aplicação do qualificador All.
Quando aplicado em uma agregação, o qualificador All 1 fará com que tanto a
seleção quanto as dimensões sejam desconsideradas.
1.1.2 Basic Concepts
Set Analysis é um mecaninsmo que define um conjunto de valores diferente do
conjunto definido pelas seleções atuais. Commented [ALAd5]: Set Analysis: Mecanismo que
define um conjunto de valores diferente do conjunto
definido pelas seleções atuais.

É importante ressaltar que:


 Set Expressions
Set Expressions ou Expressões de Conjunto são expressões que definem um
conjunto de valores de campo: {$<Year={2009}>}
 Set Analysis
Set Analysis é o uso de expressões de conjunto para analisar os dados:
sum ( {$<Year={2009}>} Sales )

1.1.3 General syntax rules


Há 4 regras de sintaxe para uma expressão de conjunto:
 Só podem ser usadas em funções de agregação: SUM(Sales).
 Só podem ser usadas em gráficos nunca no script.
 Devem ser delimitadas por chaves: {$<Year={2009}>}
 Não funcionam com Direct Query. Commented [ALAd6]: Set Analysis: Regras Gerais
1.1.4 Creating Set Expressions

Uma expressão de conjunto baseia-se em Identifiers – Modifiers – Operators.


1. Identifiers:
Define a relação entre a expressão de conjunto e os campos/expressões avaliados.
2. Modifiers:
Mudam a seleção atual, ou seja, modificam a seleção proposta pelo
identificador de conjunto (caso nenhum identificador seja mencionado, o estado
de seleção atual estará implícito). Um modificador deve ser obrigatoriamente
delimitado por <> e consiste em um ou mais nomes de campos, cada um seguido
por um sinal de igual e 1 ou várias seleções
3. Operators:
Refinam o conjuntos de dados definidos pelos indicadores e modificadores
criando sub ou super conjuntos. Os operadores são 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. Commented [ALAd7]: Set Analysis: Composição
Básica
1.1.5 Identifiers
Identifiers definem a relação entre a expressão de conjunto e os campos ou
expressões avaliados. Commented [ALAd8]: Identificadores

Identificadores permitem o emprego de Bookmarks e Alternate States. A


exceção dos identificadores que se valem dos Bookmarks Ids, Bookmark
Names e Alternate States devem ser delimitados por aspas duplas. Commented [ALAd9]: Identificadores: BookMark
Names e Alternate States devem obrigatoriamente ser
delimitados por aspas duplas.
1.1.6 Operators
Operadores refinam o conjunto de dados definidos pelos Indicadores e Modificadores
criando sub ou super conjuntos. Todos os operadores usam conjuntos como
operandos e retornam um conjunto como resultado, logo, os operadores são usados
para incluir, excluir ou cruzar conjuntos de dados inteiros ou em partes. Commented [ALAd10]: Operadores
Atenção: No Set Analysis as stituações condicionais que remetem ao Or
relacional (Ou) que resultam em 1 mesma saída de dados são implementadas
através da União de 2 ou mais conjuntos de modificadores com o operador
“+”. Commented [ALAd11]: Set Analysis: Expressões
condicionais que remete ao OR relacional são
implementadas através da união dos 2 conjuntos, ou
seja, pelo operador “+”.
[Link] Operadores implícitos: A diferença entre -= vs. =-
Operadores refinam o conjunto de dados definidos pelos Indicadores e Modificadores
criando sub ou super conjuntos. Todos os operadores usam conjuntos como
operandos e retornam um conjunto como resultado, logo, os operadores são usados
para incluir, excluir ou cruzar conjuntos de dados inteiros ou em partes.

Contudo, o QS também permite que se utilize a sua seleção atual como base para
definição de um novo sub/super-conjunto, adicionando ou removendo valores desse
campo. Assim, é possível definir um modificador que faça uso do Operador de União
+ para adicionar valores específicos aos valores definidos pela Seleção Corrente.

< Year = Year + {2007, 2008}>


Como consequência, o QS permite a contração entre o operador de associação e os
Set Operators a fim de compor uma forma equivalente de escrever a mesma
expressão. O mesmo vale para Interseções *=, Exclusões –= e Diferenças
Simétricas /=.

< Year = Year + {2007, 2008}>


< Year += {2007, 2008}>
Assim, na realidade o Operador Implícito -= opera com o conjunto de
valores definidos pela seleção atual e o conjunto de valores definidos
pelos Modificadores, ou seja, impõe a união (+=), a interseção (*=), a
subtração (-=) ou a diferença simétrica(/=) aos valores já selecionados, ao
estado de seleção atual. Commented [ALAd12]: Operadores Implícitos
Commented [ALAd13]: Operadores Implícitos: += -= /=
Sum({<[ProductId]-={"TST*"}>}Sales) *=
Operam sobre as seleções e o conjunto de valores
seria o mesmo que definidos pelos modificadores.
Sum({< [ProductId] = [ProductId] - {"TST*"}>}Sales)
Já o Operador Implícito =- bem como todos os demais (=+,=*,=/)
desconsideram a seleção atual, ou o estado de seleção, operando apenas
com o conjunto de valores resultantes do modificador. Commented [ALAd14]: Operadores Implícitos: =+ =- =/
=*
Considere o exemplo a seguir e as seguintes expressões: Ignoram as seleções e operam exclusivamente sobre o
conjunto de valores definidos pelos modificadores.

Considerará as seleções subtraindo do conjunto de resultado


produtos “TST*”

Desconsiderará toda e qualquer seleção sempre retornando


o valor total dos produtos diferentes de “TST*”.
Sem seleções ambas expressões retornam o mesmo resultado, ou seja, resultam no
total de vendas dos produtos diferentes de “TST*”.

Tão logo qualquer seleção ocorra, os resultados se modificarão:

Considerará as seleções, ou seja, retornará o total de vendas dos produtos selecionados


subtraindo o valor dos produtos “TST*”.

Desconsiderará toda e qualquer seleção sempre retornando o valor total dos


produtos diferentes de “TST*”. Ou seja, indiferente do estado atual de seleção sempre
retornará a venda total dos produtos diferentes de “TST*”.
1.1.7 Modifiers
Modificadores modificam a seleção atual (selecionado/filtrando o conjunto de dados),
ou seja, modificam a seleção proposta pelo identificador de conjunto. Assim, caso
nenhum identificador seja mencionado, o estado de seleção atual estará implícito.
Um modificador deve seguir o identificador, ser obrigatoriamente delimitado por <> e
consistir em um ou mais nomes de campos, cada um seguido por um sinal de igual e 1
ou várias seleções que podem ser feitas nos campos delimitados por chaves {} ou
curly brackets que podem ser compostos por:
 Campos
 Literais numéricos ou de string
 Intervalos de valores
 Instruções de pesquisa
 Funções de Conjunto P() ou E().
É importante ressaltar que ao se criar expressões de conjunto:
 A menos que os valores listados contenham espaços em branco ou caracteres
especiais, as aspas não serão necessárias. Os valores listados simplesmente serão
correspondidos com os valores de campos de forma direta se numéricos ou Case
No-Sensitive se alfanuméricos.
 Caso os valores listados contenham espaços em branco ou caracteres especiais,
ou fizerem uso de metacaracteres, será necessário colocar esses valores entre
aspas:
 Aspas simples quando os valores listados forem valores literais ou valores de
campos explícitos:
 Não reconhecem os metacaracteres (*,?, =,> e ~ todos são tratados como
quaisquer caracteres) e
 São Case-Sensitive, ou seja, diferenciam maiúsculas de minúsculas.
 Aspas duplas quando implementam pesquisas:
 Alfabéticas – Reconhecem os metacaracteres * e ?
 Numéricas – Empregam um operador relacional ou sinal de igual
 São Case No-Sensitive, ou seja, não diferenciam maiúsculas e minúsculas
 Aspas duplas podem ser substituídas por Colchetes e Acentos graves. Commented [ALAd15]: Modificadores: Pesquisas
avançadas.
Obrigatoriamente delimitadas por aspas duplas se
fizerem uso de caracteres curingas/especiais e espaços
em branco.
[Link] Modificadores: Tipos de seleção
Um modificador de conjunto modifica a seleção do identificador do conjunto. Caso
nenhum identificador do conjunto seja referenciado, o estado de seleção atual estará
implícito). Existem várias formas de definir a seleção:
 Baseado em outro campo
 Baseado em conjuntos de elementos (uma lista de valores de campo no modificador)
 Exclusão forçada Commented [ALAd16]: Tipos de seleção

Baseado em outro campo


Seleção baseada nos valores selecionados de outro campo, por exemplo:

Esse modificador usará os valores


selecionados de DeliveryDate e os aplicará
como uma seleção em OrderDate. Embora
pareça prático, caso hajam muitos valores
diferentes – mais de 200 – esta operação
demanda muito da CPU e deve ser evitada.
Considere o exemplo a seguir onde o
objetivo é garantir o total de vendas sempre
que OrderDate for igual a ShippingDate.

Note que a Set Expression na realidade opera como um pesquisa varrendo os


valores onde OrderDate = ShippingDate e por isso exige as aspas duplas e o sinal
de igual. Contudo, as aspas simples também serão aceitas ainda que exista um sinal
de = precedendo a operação. Commented [ALAd17]: Tipos de Seleção:
Baseado em outro campo
Opera como uma pesquisa e por isso exige apas
duplas e sinal de igual.
Onera o tempo de resposta e deve ser evitada.
Com base em conjuntos de elementos
O exemplo bastante comum de uma expressão de conjunto é aquele que se baseia em
uma lista de valores de campos entre chaves separados por vírgulas como, por
exemplo:
<Year = {2007, 2008}>
É importante notar que as chaves definem um conjunto de elementos, em que os
elementos podem ser compostos por: Campos, Literais alfanuméricos, Intervalos de
valores, Instruções de pesquisa e Funções de Conjunto P() ou E().

Exclusão forçada
Para forçar a exclusão de valores de campo específicos é preciso usar “~” antes do
nome do campo. Commented [ALAd18]: Tipos de Seleção:
Exclusão forçada
[Link] Modificadores: Aspas Simples vs. Aspas Duplas.
Fonte: Community - Set analysis - Difference between single and double quote
Fonte: Community - Set analysis - A Primer on Set Analysis
Modificadores modificam a seleção atual (selecionado/filtrando o conjunto de dados),
ou seja, modificam a seleção proposta pelo identificador de conjunto. Assim, caso
nenhum identificador seja mencionado, o estado de seleção atual estará implícito.
Um modificador deve seguir o identificador, ser obrigatoriamente delimitado por <> e
consistir em um ou mais nomes de campos, cada um seguido por um sinal de igual e 1
ou várias seleções que podem ser feitas nos campos delimitados por chaves {} ou
curly brackets que podem ser compostos por:
 Campos  Instruções de pesquisa
 Literais numéricos ou de string  Funções de Conjunto P() ou E().
 Intervalos de valores

Assim, a menos que os valores listados contenham espaços em branco ou caracteres


especiais, as aspas não serão necessárias. Os valores listados simplesmente serão
correspondidos com os valores de campos de forma direta se numéricos ou Case No-
Sensitive se alfanuméricos.
Essa comparação é case No-Sensitive, ou seja, não diferencia maiúsculas e
minúsculas.
Contudo, caso os valores listados contenham espaços em branco ou caracteres
especiais, ou fizerem uso de caracteres curinga, será necessário colocar esses valores
entre aspas:
 Aspas simples quando os valores listados forem valores literais ou valores de
campos explícitos:
 Não reconhecem os metacaracteres (*,?, =,> e ~ todos são tratados como
quaisquer caracteres) e
 São Case-Sensitive, ou seja, diferenciam maiúsculas de minúsculas.
 Aspas duplas quando implementam pesquisas:
 Alfabéticas – Reconhecem os metacaracteres * e ?
 Numéricas – Empregam um operador relacional ou sinal de igual
 São Case No-Sensitive, ou seja, não diferenciam maiúsculas e minúsculas
 Aspas duplas podem ser substituídas por Colchetes e Acentos graves. Commented [ALAd19]: Modificadores: Pesquisas
avançadas.
Sendo assim: Obrigatoriamente delimitadas por aspas duplas se
fizerem uso de caracteres curingas/especiais e espaços
em branco.

Esse exemplo selecionará todos os ingredientes que contenham a sequência "Garlic".


Note: Aspas duplas podem ser substituídas por Colchetes e Acentos graves

Nas versões anteriores do Qlik Sense, não havia distinção entre aspas simples e aspas
duplas, e todas as sequências entre aspas eram tratadas como pesquisas. Para manter
a compatibilidade com versões anteriores, os aplicativos criados com versões mais
antigas do Qlik Sense continuarão a funcionar como faziam em versões anteriores. Já
os aplicativos criados na versão Qlik Sense November 2017 ou posteriores respeitarão
a diferença entre os dois tipos de aspas. Commented [ALAd20]: O uso de aspas no Set
Analysis

Modificadores que não se valem de espaços ou caracteres especiais desprezam as


aspas e estabelecem correspondência Case No-Sensitive.
Modificadores que empregam espaços ou caracteres especiais exigem o emprego
de aspas simples ou duplas.

Modificadores delimitados por aspas simples são literais, ou seja, são Case-Sensitive
e não reconhecem caracteres especiais – *,?, =,> e ~ todos são tratados como
caracteres comuns.

Modificadores delimitados por aspas duplas implementam pesquisas, logo, podem ser
substituídos por colchetes e acentos graves, reconhecem os metacaracteres
especiais – * e ? – e são Case No-Sensitive.
[Link] Opções para construção de Set Expressions com Modificadores
O QS disponibiliza algumas opções para construção de expressões de conjunto contendo
modificadores a partir da a caixa de diálogo the Add or Edit expression:

1. 1ª Opção: Digitar a instrução set na posição apropriada dentro da expressão


Digitar a instrução set na posição apropriada dentro da
expressão no Expression-ready field. Expressões
poderão ser usadas sempre que os Expression-ready fields, estiverem disponíveis,
ou seja, sempre que o símbolo fx aparecer no painel de propriedades.
Textos e números podem ser digitados livremente no Expression-ready field (o
símbolo fx permanecerá preto), contudo, o uso de funções ou operadores exige que
a expressão seja iniciada por um sinal de igual “=” (tão logo o <Enter> é
pressionado o símbolo fx do Expression-ready field fica laranja a fim de indicar que
um cálculo será realizado e o resultado retornado). Caso um expressão seja definida
sem o sinal de igual o QS a interpretará com texto simples delimitando-a entre
colchetes: =[upper(Department)]. Commented [ALAd21]: Construção Assistida de Set
Expressions:
Express Ready Field – Textos e números não exigem o
2. 2ª Opção: Usar a Set Expressions Section para inserir um modificador a partir sinal de igual. Contudo, o emprego de funções e
das seleções atuais operadores o torna obrigatório.
Alternativamente, é possível efetuar a seleção que se deseja aplicar como
modificador, clicar no símbolo fx, para iniciar a caixa de diálogo the Add or Edit
expression, e construir imediatamente a expressão set através da opção Use
current selection existente na Set Expressions section. Commented [ALAd22]: Construção Assistida de Set
Expressions:
Set Expression Section – Construão de Set
Expressions a partir das current selections
3. 3ª Opção: Usar a Set expressions section para inserir um modificador a partir
de um bookmark
Outra abordagem é criar um Bookmark a partir da seleção que se deseja aplicar
como modificador, clicar no símbolo fx, para iniciar a caixa de diálogo the Add or
Edit expression., e construir imediatamente a expressão set usando a seleção atual
através da opção Use Bookmark existente na Set Expressions section. Commented [ALAd23]: Construção Assistida de Set
Expressions:
Set Expression Section – Construão de Set
Expressions a partir de bookkmarks

4. 4ª Opção: Usar a Set expressions section para inserir um modificador a partir


das seleções aplicadas a um Alternate State.
Alternativamente, é possível criar um Alternate State que se deseja aplicar como
modificador, clicar no símbolo fx para iniciar a caixa de diálogo the Add or Edit
expression e construir imediatamente a expressão set através do Alternate state
drop down menu existente na Set Expressions section. Commented [ALAd24]: Construção Assistida de Set
Expressions:
Set Expression Section – Construão de Set
Expressions de um Alternate State
A caixa de diálogo Add or edit expression apresenta 2 seções com a opção de
ser inserir Set Expressions basedas nas seleções atuais:

 Field Section
Field section é usada para inserir uma expressão inteira
e não apenas uma set instruction.
Contudo, as Set Expression Checkbox existentes nessa
seção só pode ser usadas para inserir uma expressão
definida com base nas seleções atuais.
 Set Expression Section
Set Expression section é usada para inserir Set
Expression e não um Set Analysis inteiro. Além disso, as
Set Expression Option-Buttons podem ser usadas para
inseri uma expressão baseada:
 Seleções atuais
 Bookmarks
 Alternate States.
[Link] Modificadores com operadores de conjunto
Modificadores modificam a seleção filtrando o conjunto de dados definido pelos
Identificadores. As seleções promovidas pelos Modificadores podem fazer uso dos
operadores de conjunto para trabalhar com conjuntos de elementos diferentes. Por
exemplo, o modificador a seguir selecionará todos os anos iniciados por “20”, além de
“1997”, exceto “2000”. Commented [ALAd25]: Modificadores e Identificadores
< Year = {"20*", 1997} - {2000} >

Operadores refinam o conjuntos de dados definidos pelos indicadores e


modificadores criando sub ou super conjuntos. Os operadores são 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.
[Link] Modificadores usando atribuições com operadores implícitos
O objetivo comum do Set Analysis é definir novas seleções sobrepondo ou
substituindo a seleção existente.
Contudo, o QS também permite que se utilize a sua seleção atual como base para
definição de um novo sub/super-conjunto, adicionando ou removendo valores desse
campo. Assim, é possível definir um modificador que faça uso do operador de união +
para adicionar valores específicos aos valores definidos pela seleção corrente.

< Year = Year + {2007, 2008}>


O QS permite a contração entre o operador de associação e os Set Operators a fim
de compor uma forma equivalente de escrever a mesma expressão. O mesmo vale para
interseções, exclusões e diferenças simétricas: “*=”, “–=” e “/=”. Commented [ALAd26]: Modificadores com
Operadores Implícitos
< Year = Year + {2007, 2008}>
< Year += {2007, 2008}>

Como consequência, o QS permite a contração entre o operador de associação e os


Set Operators a fim de compor uma forma equivalente de escrever a mesma expressão.
O mesmo vale para interseções, exclusões e diferenças simétricas: “*=”, “–=” e “/=”.
Sum({<[ProductId]-={"TST*"}>}Sales)
seria o mesmo que
Sum({< [ProductId] = [ProductId] - {"TST*"}>}Sales)

Assim, na realidade o operador implícito opera com o conjunto de valores


definidos pela seleção atual e o conjunto de valores definidos pelos
modificadores, ou seja, impõe a união(+=), a interseção(*=), a subtração(-=)
ou a diferença simétrica(/=) aos valores já selecionados, ao estado de seleção
atual.
Já o operador implícito “=-“ bem como todos os demais (=+,=*,=/)
desconsideram a seleção atual, ou o estado de seleção, operando apenas
Commented [ALAd27]: A diferença entre os
com o conjunto de valores resultantes do modificador. Operadores
Implícitos -= e =-
Considere o exemplo a seguir e as seguintes expressões:

Considerará as seleções subtraindo do conjunto de resultado


produtos “TST*”

Desconsiderará toda e qualquer seleção sempre retornando o


valor total dos produtos diferentes de “TST*”.

Sem seleções ambas expressões retornam o mesmo resultado, ou seja, resultam no total
de vendas dos produtos diferentes de “TST*”.

Tão logo qualquer seleção ocorra, os resultados se modificarão:

Considerará as seleções, ou seja, retornará o total de vendas dos produtos selecionados


subtraindo o valor dos produtos “TST*”.

Desconsiderará toda e qualquer seleção sempre retornando o valor total dos produtos
diferentes de “TST*”. Ou seja, indiferente do estado atual de seleção sempre retornará a
venda total dos produtos diferentes de “TST*”.
Enquanto o operador implícito “-=” apenas subtrairá do valor total dos produtos
selecionados o valor dos produtos “TST*” a express “=-“ sempre desprezará as seleções
retornando a venda total desconsiderando o valor dos produtos “TST*” retornando

[Link] Modificadores com pesquisas avançadas


Modificadores modificam a seleção filtrando o conjunto de dados definido pelo
identificador. As seleções promovidas pelos Modificadores podem fazer uso de
pesquisas avançadas e se valer de caracteres curingas e agregações para definir os
conjuntos, contudo, devem obrigatoriamente se delimitadas por aspas duplas.
É importante ressaltar que ao se criar expressões de conjunto:
 A menos que os valores listados contenham espaços em branco ou caracteres
especiais, as aspas não serão necessárias. Os valores listados simplesmente serão
correspondidos com os valores de campos de forma direta se numéricos ou Case No-
Sensitive se alfanuméricos.
 Caso os valores listados contenham espaços em branco ou caracteres especiais, ou
fizerem uso de metacaracteres, será necessário colocar esses valores entre aspas:
 Aspas simples quando os valores listados forem valores literais ou valores de
campos explícitos:
 Não reconhecem os metacaracteres (*,?, =,> e ~ tratados como caracteres
comuns) e
 São Case-Sensitive, ou seja, diferenciam maiúsculas de minúsculas.
 Aspas duplas quando implementam pesquisas:
 Alfabéticas – Reconhecem os metacaracteres * e ?
 Numéricas – Empregam um operador relacional ou sinal de igual
 São Case No-Sensitive, ou seja, não diferenciam maiúsculas e minúsculas
 Aspas duplas podem ser substituídas por Colchetes e Acentos graves. Commented [ALAd28]: Modificadores: Pesquisas
Os exemplos ao lado selecionarão todos os avançadas.
Obrigatoriamente delimitadas por aspas duplas se
ingredientes que contenham a sequência fizerem uso de caracteres curingas/especiais e espaços
"Garlic". Note que as aspas duplas podem em branco.
ser substituídas por Colchetes e Acentos
graves. Commented [ALAd29]: Modificadores: Pesquisas
avançadas.
Obrigatoriamente delimitadas por aspas duplas se
fizerem uso de caracteres curingas/especiais e espaços
em branco.
[Link] Modificadores com expansão de sinal de dólar $()
Modificadores podem empregar expansões de sinal de dólar e se valer de variáveis,
expressões, funções e até mesmo de dimensões variáveis/dinâmicas, ou seja,
dimensões geradas a partir do uso de variáveis. Commented [ALAd30]: Modificadores e Expansão de
Dólar

No uso da expansão de dólar é importante ressaltar que:

 Expansões de dólar sem um sinal de igual interpretarão o texto delimitado entre


parênteses como um nome de variável.
 Expansões de dólar com um sinal de igual interpretarão o texto delimitado entre
parênteses como uma expressão/função que serão avaliadas e terão seu resultado
retornado antes de ser expandido.

Suponha a variável vEndYear no exemplo abaixo:


 $ (vEndYear) será expandido como ‘2021’
 $ (= vEndYear-1) será expandido como ‘2020’

Ressalva: O sinal de igual inicial significa um cálculo extra a cada nova interação, a cada
novo click do usuário . E cada pequeno cálculo usa algum tempo de CPU e acarreta uma
pequena penalidade de desempenho. Portanto, como boa prática não deve usar muitas
expressões calculadas. Expressões calculada devem ser usada apenas onde realmente
forem precisas.
Variáveis e Expansão de dólar
Uma variável QS é um contêiner que armazena valores alfanuméricos que podem adotar
um comportamento tanto estático, quando armazenam um literal (numérico/string) ou um
nome de campo, quanto dinâmico quando armazenam funções, expressões, variáveis ou
Color Codes.
Modificadores podem fazer uso de variáveis através da expansão do sinal de dólar
sem para isso se valer de aspas.

Expande para o texto atribuído à variável. Caso o nome da


variável não exista ou não tenha conteúdo a expansão
resultará em uma sequência vazia.

Expande para o numéro atribuído à variável. Caso o nome


da variável não exista ou não contenha um valor numérico a
expansão resultará em 0. Commented [ALAd31]: Expansão de dólar $()

O uso ou não das aspas depende diretamente do valor final que será expandido pela
variável:
 Expansão para literais numéricos não necessitam de aspas.
 Expansão para literais alfanuméricos sem espaço ou caracteres especiais
Exigem Aspas simples quando os valores listados forem valores literais ou valores
de campos explícitos:
 Não reconhecem os metacaracteres (*,?, =,> e ~ todos são tratados como
quaisquer caracteres) e
 São Case-Sensitive, ou seja, diferenciam maiúsculas de minúsculas.
 Expansão para caracteres alfanuméricos com espaço ou caracteres especiais
Exigem Aspas duplas.
 Alfabéticas – Reconhecem os metacaracteres * e ?
 Numéricas – Empregam um operador relacional ou sinal de igual
 São Case No-Sensitive, ou seja, não diferenciam maiúsculas e minúsculas
 Aspas duplas podem ser substituídas por Colchetes e Acentos graves. Commented [ALAd32]: Modificadores: Pesquisas
avançadas.
Considerando que a maior possibilidade de match entre a expansão de dólar e o valor do Obrigatoriamente delimitadas por aspas duplas se
fizerem uso de caracteres curingas/especiais e espaços
campo descrito no modificador tende a ocorrer quando a Set Expression implementa uma em branco.
pesquisa, considera-se boa prática o emprego das Aspas Duplas.

Isso porque:

Um modificador deve seguir o identificador, ser obrigatoriamente delimitado por <> e


consistir em um ou mais nomes de campos, cada um seguido por um sinal de igual e 1
ou várias seleções que podem ser feitas nos campos delimitados por chaves {} ou curly
brackets que podem ser compostos por:
 Campos
 Literais numéricos ou de string
 Intervalos de valores
 Instruções de pesquisa
 Funções de Conjunto P() ou E().
É importante ressaltar que ao se criar expressões de conjunto:
 A menos que os valores listados contenham espaços em branco ou caracteres
especiais, as aspas não serão necessárias. Os valores listados simplesmente serão
correspondidos com os valores de campos de forma direta se numéricos ou Case No-
Sensitive se alfanuméricos.
 Caso os valores listados contenham espaços em branco ou caracteres especiais, ou
fizerem uso de metacaracteres, será necessário colocar esses valores entre aspas:
 Aspas simples quando os valores listados forem valores literais ou valores de
campos explícitos:
 Não reconhecem os metacaracteres (*,?, =,> e ~ todos são tratados como
quaisquer caracteres) e
 São Case-Sensitive, ou seja, diferenciam maiúsculas de minúsculas.
 Aspas duplas quando implementam pesquisas:
 Alfabéticas – Reconhecem os metacaracteres * e ?
 Numéricas – Empregam um operador relacional ou sinal de igual
 São Case No-Sensitive, ou seja, não diferenciam maiúsculas e minúsculas
 Aspas duplas podem ser substituídas por Colchetes e Acentos graves. Commented [ALAd33]: Modificadores: Pesquisas
avançadas.
Obrigatoriamente delimitadas por aspas duplas se
fizerem uso de caracteres curingas/especiais e espaços
em branco.

Variable Overview

A presenção do espaço exige aspas e o


emprego das aspas duplas garante o Case No-Sensitive

Variable Overview

Sem espaços a pesquisa é naturalmente Case No-Sensitive


e garate o match sem o emprego das aspas.
Expressões e Expansão de dólar
Uma variável QS é um contêiner que armazena valores alfanuméricos que podem adotar
um comportamento tanto estático, quando armazenam um literal (numérico/string) ou um
nome de campo, quanto dinâmico quando armazenam funções, expressões, variáveis ou
Color Codes.
Sempre que o 1º caractere do valor de variável for um sinal de igual '=', o QS
avaliará o valor como uma expressão e retornará o resultado em vez do texto
da fórmula real.
Expressões e funções gerais podem ser usadas em Expansões
de Dólar, contudo, o conteúdo entre parênteses deve começar
com um sinal de igual para que assim a expressão seja avaliada
e o seu valor usado na expansão. Commented [ALAd34]: Expansão de expressões

Para que Modificadores possam se valer de funções numéricas, é preciso inserir a


função em uma expansão de dólar obrigatoriamente iniciada por sinal de igual ‘=’,
pois, assegura-se que o QS primeiro retorne seu valor e somente enão avalie o
restante da Set Expression devem ser iniciadas pelo sinal de igual, se valer da
expansão de dólar e obrigatoriamente delimitadas por aspas duplas. Commented [ALAd35]: Modificadores e Expansão de
Dólar com funções numéricas.
Mais 1 vez, o uso ou não das aspas depende diretamente do valor final que será
expandido pela variável:
 Expansão para literais numéricos não necessitam de aspas.
 Expansão para literais alfanuméricos sem espaço ou caracteres especiais
Exigem Aspas simples quando os valores listados forem valores literais ou valores
de campos explícitos:
 Não reconhecem os metacaracteres (*,?, =,> e ~ todos são tratados como
quaisquer caracteres) e
 São Case-Sensitive, ou seja, diferenciam maiúsculas de minúsculas.
 Expansão para caracteres alfanuméricos com espaço ou caracteres especiais
Exigem Aspas duplas.
 Alfabéticas – Reconhecem os metacaracteres * e ?
 Numéricas – Empregam um operador relacional ou sinal de igual
 São Case No-Sensitive, ou seja, não diferenciam maiúsculas e minúsculas
 Aspas duplas podem ser substituídas por Colchetes e Acentos graves. Commented [ALAd36]: Modificadores: Pesquisas
avançadas.
Considerando que a maior possibilidade de match entre a expansão de dólar e o valor do Obrigatoriamente delimitadas por aspas duplas se
fizerem uso de caracteres curingas/especiais e espaços
campo descrito no modificador tende a ocorrer quando a Set Expression implementa uma em branco.
pesquisa, considera-se boa prática o emprego das Aspas Duplas.

Isso porque:
Um modificador deve seguir o identificador, ser obrigatoriamente delimitado por <> e
consistir em um ou mais nomes de campos, cada um seguido por um sinal de igual e 1
ou várias seleções que podem ser feitas nos campos delimitados por chaves {} ou curly
brackets que podem ser compostos por:
 Campos  Instruções de pesquisa
 Literais numéricos ou de string  Funções de Conjunto P() ou E().
 Intervalos de valores
É importante ressaltar que ao se criar expressões de conjunto:
 A menos que os valores listados contenham espaços em branco ou caracteres
especiais, as aspas não serão necessárias. Os valores listados simplesmente serão
correspondidos com os valores de campos de forma direta se numéricos ou Case No-
Sensitive se alfanuméricos.
 Caso os valores listados contenham espaços em branco ou caracteres especiais, ou
fizerem uso de metacaracteres, será necessário colocar esses valores entre aspas:
 Aspas simples quando os valores listados forem valores literais ou valores de
campos explícitos:
 Não reconhecem os metacaracteres (*,?, =,> e ~ todos são tratados como
quaisquer caracteres) e
 São Case-Sensitive, ou seja, diferenciam maiúsculas de minúsculas.
 Aspas duplas quando implementam pesquisas:
 Alfabéticas – Reconhecem os metacaracteres * e ?
 Numéricas – Empregam um operador relacional ou sinal de igual
 São Case No-Sensitive, ou seja, não diferenciam maiúsculas e minúsculas
 Aspas duplas podem ser substituídas por Colchetes e Acentos graves. Commented [ALAd37]: Modificadores: Pesquisas
avançadas.
Obrigatoriamente delimitadas por aspas duplas se
fizerem uso de caracteres curingas/especiais e espaços
em branco.

Variable Overview

Sem espaços a pesquisa é naturalmente Case No-Sensitive


e garate o match sem o emprego das aspas.

Variable Overview

A presenção do espaço exige aspas e o


emprego das aspas duplas garante o Case No-Sensitive
Dimensões variáveis/dinâmicas e Expansão de dólar
Considere o exemplo a seguir os se tem o valor
de vendas por países nos últimos 2 anos.

Conforme descrito, o Set Analysis permite que se


empreguem variáveis para a determinação de
dimensões dinâmicas e Set Expressions como a
descrita a seguir:
[Link] Modificadores com definições de valor de campos implícitas
Através dos modificadores e das funções de campos implícitos P() e E() o QS permite
que se definam valores usando conjuntos aninhados. Commented [ALAd38]: Funções de campos implícitos
P() e E()
Função Descrição

P() Conjunto de elementos dos valores possíveis.

E() Conjunto de elementos dos valores excluídos.


Dentro dos parênteses é possível especificar uma expressão de conjunto e um campo. Por
exemplo: P( {1} Customer).

As funções de elemento, P() e E(), só podem ser usadas em um conjunto natural. Ou seja, um
conjunto de registos que podem ser definidas por uma seleção simples. Por exemplo, o
conjunto fornecido por {1-$} não pode ser sempre definido por seleção e, portanto, não é um
conjunto natural.

O uso dessas funções em conjuntos não naturais pode gerar resultados inesperados.
[Link] Overview
Questões de âmbito geral extraídos do app do Luis Fernando Tensini.

 Sum({<Year = P({BM01}Year)>}Sales)
Total de vendas nos anos contidos nas seleções do bookmark BM01.

 Sum({<OrderDate=P(ShippingDate)>}Sales)
Total de vendas sempre que OrderDate = ShippingDate

 Sum({$<Customer=P({1<Product={'Shoe'}>} Customer)>} Sales)


Total de vendas dos Clientes que estão implícitos na seleção de sapato no campo
Produto, ou seja, que compraram Sapato.
A função P() retorna uma lista, um conjunto dos Clientes que estão implícitos na seleção
de sapato no campo Produto.

 Sum({$<Customer=P({1<Product={'Shoe'}>})>} Sales)
O mesmo que o acima, ou seja, Total de vendas dos Clientes que estão implícitos na
seleção de sapato no campo Produto.
Sempre que se omitir o campo na função de elemento a função retornará os possíveis
valores do campo especificado na atribuição externa

 Sum({$<Customer=P({1<Product={'Shoe'}>}Supliers)>} Sales)
Total de vendas da seleção atual, mas apenas para os Clientes que já forneceram Sapato.
A função P() retorna uma lista de possíveis Fornecedores, aqueles que estão implicitos
pela seleção de sapato no campo Produto. A lista de Fornecedores é então usada como
uma seleção no campo Cliente.

 Sum({$<Customer=E({1<Product={'Shoe'}>})>} Sales)
Total de vendas da seleção atual, mas apenas para os clientes que não estão implícitos
na seleção de sapato no campo Produto.
A função E() aqui retorna a lista de clientes excluídos ou seja aqueles que são excluídos
pela seleção Sapato.

 Sum({<Year=E({BM05}Year)>} Sales)
Total de vendas da seleção atual, mas apenas para os anos que não estão no bookmark
BM05.

 Sum({$<Department=E({1<Employee={'John'}>})>} Budget)
Orçamento total de todos os Departamentos que não envolvam o colaborador John.

 Sum({<Department={'Marketing','Stock'}>+<Employee={'John'}>}Budget)
Orçamento total dos Departamentos de Marketing e Stock ou do colaborador John.
No Set Analysis as situações condicionais que se remetem ao OU lógico e que resultam
em 1 mesma saída de dados se resolvem através da União de 2 ou mais conjuntos
através dos modificadores e do operador "+"

 Sum(Sales_$(vAnoCorrente))
O uso das Dimensões Sintéticas, Dinâmicas ou Variáveis e da função ValueList()
permite criar conteúdos personalisados dentro da aplicação para dimensões mesmo que
esses conteúdos não existam originalmente no modelo (e portanto a seleção ali efetuada
não impacte no seu estado de seleção).
Isso porque ValueList() retorna um conjunto de valores listados que, quando usados em
uma dimensão calculada, formarão uma dimensão sintética/dinâmica.
Dimensões Sintéticas, Dinâmicas ou Variáveis não são afetadas pelas seleções.

 Count({<OrderStatus={'Invoice'}> * 1-$<ShipId={"*"}>}Distinct OrderId)


Contagem distinta dos Itens de Fatura que foram faturados e que o código de rastreio
está nulo ou em vazios.
Como o sinal de asterisco “*” pode ser utilizado para filtrar todos os campos que tenham
qualquer tipo de conteúdo, automaticamente elimina os campos nulos ou vazios; logo, a
expressão 1-$ garante que se obtenham os casos nulos através da subtração das ordens
com ShipId do universo total de ordens.
Por fim, a interseção garante que ambos requisitos sejam atendidos.

 Sum({$<Year={2020}>+1<Customer={"ABC"}>} Sales)
Total de vendas do ano de 2020 e de todos os anos do Cliente ABC.
Ou seja, soma das vendas do ano 2020 de acordo com as seleções atuais união(+)
com todas as vendas do cliente ABC (ignorando todas as seleções).

 Sum({< CountryId={"=Sum({<Year={2019}>}Sales)>350000"} >} Sales)


Total de vendas dos países que venderam mais de 350.000 no ano de 2019.

 Sum({<Year={$(=Max(Year))}>}Sales)
Total de vendas do ano mais recente

 Function({$<Field1 = {$(=$(variable))} >} FieldValue)


Uso genérico de uma variável dentro de um Set Analysis: Sempre que for preciso avaliar
o valor dentro de um modificador deve-se valer da técnica da Expansão De Dólar e se
valer ou não do sinal de "=", por exemplo:
"S(=$(variable))”

 Count({$+State1}Distinct Invoices)
Nro distinto de faturas resultantes da união da seleção no estado padrão com o Estado
Alternativo State1.

 Count({1-State1}Distinct Invoices)
Total distinto de faturas que resulta da diferença entre o estado padrão e o Estado
Alternativo State1, ou seja, que não estão no State1.

 Count({State1*State2}Distinct Invoices)
Total distinto de faturas que estão em ambos Estados Alternativos State1 e State2

 Count({State1<Year = $::Year, Month = $::Month>} Distinct InvoiceId)


Total distinto de faturas que estão no Estado Alternativo State1 para as quais as seleções de
Ano e Mês no Estado Alternativo State1 estiverem sincronizadas com as seleções de Ano e
Mês no estado padrão.

 Count ({State1} Distinct InvoiceId)


Conta os números de faturas distintas que não estão em State1.

 Count ({$ + State1} Distinct InvoiceId)


Conta os números de faturas distintas na união do estado <padrão> e State1.

 Count ({1 - State1} Distinct InvoiceId)


Conta os números de faturas distintas que não estão em State1.

 Count ({State1 * State2} Distinct InvoiceId)


Conta os números de faturas distintas na união que estão em ambos, estado
<padrão> e State1.

 Count ({$<[InvoiceId] = p({State1} [InvoiceId])>} Distinct [InvoiceId])


Conta os números de faturas distintas no estado <padrão> que estejam no Estado Alternativo
State1.

 Count ( {< Salesman -= {“Sm*”}>} Distinct [InvoiceId])


Conta os números de faturas distintas de todos os vendedores, exceto daqueles cujo nome se
inicia por “Sm”.

 Count ( {< Year = {“>=2020<=2021”}>} Distinct [InvoiceId])


Conta os números de faturas distintas emitidas entre os anos de 2020 e 2021 inclusive .

 Count ( {< Hour = {4,5,6}> + <“>=12 <20”>} Distinct [InvoiceId])


Conta os números de faturas distintas emitidas na hora 4, 5 e 6 e no intervalo entre 12 e 19.

 Count ( {< Year = {$(=Max({1}Year))} >} Distinct [InvoiceId])


Conta os números de faturas distintas emitidas no último ano.
{1} deve ser empregado para não se perder o último ano quando alguma seleção for realizada.

 Set vClearCalendar = "='['


& Concat({1<$Table={'Calendar'}>} $Field, ']=,[')
& ']=' ";
Sum ({$<$(vClearCalendar)>} Amount)
Sum ({$<[Date]=,[Day]=,[Month]=,[Week]=,[Year]=>} Amount)

Expansões de dólar pode ser usadas para gerar tokens também na user interface. O exemplo
acima pode ser empregado em situações onde é preciso definir um Set Analysis que
desconsidere todas as seleções de uma dimensão inteira. Por por exemplo, quando é preciso
limpar todos os campos de um Master Calendar sem ter de listá-los explicita e manualmente.

Uma boa solução é definir uma variável Set (vClearCalendar ) que possa ser usada como
modificador e em seguida fazer uso dessa variável na Set Expression de um gráfico:
Sum ({$<$(vClearCalendar)>} Amount)
Esta expressão utiliza os campos do sistema $Tabela e $Campo para encontrar os campos
possíveis da tabela “Calendário”. A função Concat() lista esses campos com os delimitadores
apropriados para que o modificador Set contenha a lista relevante de campos, removendo
efetivamente todas as seleções na tabela Calendário:
Sum ({$<[Date]=,[Day]=,[Month]=,[Week]=,[Year]=>} Amount)
1.1.8 Review
1.1.9 Quiz

Você também pode gostar