Sinalizador de preservação de conjunto vazio
É possível usar o símbolo & (o sinalizador de preservação de conjunto vazio) no início de algumas expressões de conjunto externo para substituir a limpeza implícita do conjunto de seleção durante a análise do usuário. O sinalizador de preservação de conjunto vazio permite alterar a forma como as agregações são calculadas e representadas quando os usuários fazem seleções, sem a necessidade de reescrever expressões de conjunto longas e avançadas.
Por exemplo, na expressão de conjunto a seguir, o sinalizador de preservação de conjunto vazio é usado:
{&<Country*={'Sweden', 'Denmark'}>} {<ProductCategory={'shirts'}>} Sum( Sales )
Plano de fundo
Condições de uso
O sinalizador de preservação de conjunto vazio pode ser usado em expressões de conjunto que tenham um dos componentes a seguir:
-
Pelo menos uma expressão de conjunto interno e outra de conjunto externo
-
Duas ou mais expressões de conjunto externo
Use o sinalizador de preservação de conjunto vazio quando quiser evitar Limpeza implícita do conjunto de seleção.
Limpeza implícita do conjunto de seleção
Limpar o conjunto de seleção implícita é um comportamento interno que, às vezes, pode ser indesejável para a análise do usuário final quando são usadas cadeias complexas de expressões de conjunto. A limpeza implícita do conjunto de seleção pode ocorrer para expressões de conjunto estruturadas de acordo com o Condições de uso.
O comportamento indesejável é o seguinte:
-
Uma ou mais expressões de conjunto externo na cadeia - especificamente, a primeira (ou única) e todas as expressões de conjunto externo subsequentes, exceto a última - definem conjuntos de dados. Por exemplo: Country*={'Sweden', 'Denmark'}>}
-
Algo acontece para produzir um conjunto vazio para um ou mais desses componentes de expressão de conjunto externo. O mais comum é que uma seleção conflitante seja feita no aplicativo.
-
Para os conjuntos vazios, os conjuntos definidos por essas expressões são limpos à medida que a expressão é avaliada. Isso significa que os dados usados nas agregações não são mais reduzidos aos conjuntos de dados definidos, mas sim que todos os dados são usados.
Por outro lado, os conjuntos definidos em quaisquer expressões de conjunto externo que produzam conjuntos não vazios, bem como a última expressão de conjunto externo na cadeia, são respeitados durante a avaliação.
Esse comportamento resulta em valores de agregação que podem ser inesperados e podem levar a uma análise inconsistente. Para ignorar a limpeza implícita do conjunto de seleção, você pode usar o sinalizador de preservação de conjunto vazio. Consulte A solução: usar o sinalizador de preservação de conjunto vazio.
A solução: usar o sinalizador de preservação de conjunto vazio
Use o símbolo & (o sinalizador de preservação de conjunto vazio) para substituir a limpeza implícita do conjunto de seleção. Esse sinalizador garante que o conjunto definido na primeira expressão de conjunto externo em uma cadeia não será limpo e será respeitado durante toda a avaliação da expressão inteira.
O sinalizador de preservação de conjunto vazio fornece:
-
Flexibilidade e economia de tempo quando você tem expressões de conjunto avançadas e longas que gostaria de manter intactas, e não reescrever.
-
Capacidade de alterar a lógica de agregação para atender a casos de uso avançados.
Sintaxe
Em uma expressão de conjunto externo, o sinalizador de preservação de conjunto vazio é colocado como um único caractere & no início da expressão, ou seja, antes dos modificadores de conjunto, identificadores e operadores.
Exemplos:
Expressão | Expressão sem sinalizador de preservação de conjunto vazio |
---|---|
{&<Country*={'Sweden', 'Denmark'}>} {<ProductCategory={'shirts'}>} Sum( Sales ) | {<Country={'Sweden'}>} {<ProductCategory={'shirts'}>} Sum (Sales) |
{& <Year=, Product={XI345}>} {<Region={Europe}>} Sum (Sales) | {<Year=, Product={XI345}>} {<Region={Europe}>} Sum (Sales) |
Detalhes e exemplos
Para obter informações mais abrangentes, consulte Cadeias de múltiplas expressões de conjuntos externos e internos.