Modificadores de conjunto usando funções de conjunto
Às vezes, você precisa definir um conjunto de valores de campo usando uma definição de conjunto aninhada. Por exemplo, você pode querer selecionar todos os clientes que compraram um produto específico, sem selecionar o produto.
Nesses casos, use as funções do conjunto de elementos P() e E(). Elas retornam os conjuntos de elementos de valores possíveis e valores excluídos de um campo, respectivamente. Nos colchetes, você pode especificar o campo em questão e uma expressão de conjunto que define o escopo. Por exemplo:
P({1<Year = {2021}>} Customer)
Isso retornará o conjunto de clientes que realizaram transações em 2021. Você pode então usar isso em um modificador de conjunto. Por exemplo:
Sum({<Customer = P({1<Year = {2021}>} Customer)>} Amount)
Essa expressão de conjunto selecionará esses clientes, mas não restringirá a seleção a 2021.
Essas funções não podem ser usadas em outras expressões.
Além disso, apenas conjuntos naturais podem ser usados dentro das funções de conjunto de elementos. 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 meio de uma seleção e, portanto, não é um conjunto natural. O uso dessas funções em conjuntos não naturais retornará resultados inesperados.
Exemplos: Expressões de gráfico para modificadores de conjunto usando funções de conjunto
Exemplos | Resultados |
---|---|
sum( {$<Customer = P({1<Product={'Shoe'}>} Customer)>} Sales ) |
Retorna as vendas da seleção atual, mas somente os clientes que já compraram o produto 'Shoe'. Aqui, a função de elemento P( ) retorna uma lista de clientes possíveis; aqueles decorrentes da seleção 'Shoe' no campo Product. |
sum( {$<Customer = P({1<Product={'Shoe'}>})>} Sales ) |
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( {$<Customer = P({1<Product={'Shoe'}>} Supplier)>} Sales ) |
Retorna as vendas da seleção atual, mas somente os clientes que já forneceram o produto 'Shoe', ou seja, o cliente também é um fornecedor. Aqui, a função de elemento P( ) retorna uma lista de fornecedores possíveis; aqueles decorrentes da seleção 'Shoe' no campo Product. Assim, a lista de fornecedores é usada como uma seleção no campo Customer. |
sum( {$<Customer = E({1<Product={'Shoe'}>})>} Sales ) |
Retorna as vendas da seleção atual, mas somente os clientes que nunca compraram o produto 'Shoe'. Aqui, a função de elemento E( ) retorna a lista de clientes excluídos; aqueles excluídos pela seleção 'Shoe' no campo Product. |