Modificadores de conjunto que utilizan funciones de conjunto
A veces necesitamos definir un conjunto de valores de campo empleando una definición de conjunto anidada. Por ejemplo, es posible que desee seleccionar todos los clientes que han adquirido un producto específico, sin seleccionar el producto.
En tales casos, use las funciones del conjunto de elementos P() y E(). Estas devuelven los conjuntos de elementos de valores posibles y valores excluidos de un campo, respectivamente. Dentro de los paréntesis, puede especificar el campo en cuestión y una expresión de conjunto que defina el ámbito. Por ejemplo:
P({1<Year = {2021}>} Customer)
Esto devolverá el conjunto de clientes que tuvieron transacciones en 2021. Luego puede usar esto en un modificador de conjunto. Por ejemplo:
Sum({<Customer = P({1<Year = {2021}>} Customer)>} Amount)
Esta expresión de conjunto seleccionará a estos clientes, pero no restringirá la selección a 2021.
Estas funciones no podrán emplearse en otras expresiones.
Además, solo se pueden usar conjuntos naturales dentro de las funciones del conjunto de elementos. Es decir, un conjunto de registros que se pueden definir mediante una simple selección.
Por ejemplo, el conjunto dado por {1-$} no puede definirse siempre mediante una selección y, por lo tanto, no es un conjunto natural. El uso de estas funciones en conjuntos no naturales arrojará resultados inesperados.
Ejemplos: expresiones de gráfico para modificadores de conjunto que utilizan funciones de conjunto
Ejemplos | Resultados |
---|---|
sum( {$<Customer = P({1<Product={'Shoe'}>} Customer)>} Sales ) |
Devuelve las ventas de la selección actual, pero solo de los clientes que han comprado alguna vez el producto "Shoe". La función del elemento P() aquí devuelve una lista de posibles clientes; aquellos que están implicados por la selección "Shoe" en el campo Product. |
sum( {$<Customer = P({1<Product={'Shoe'}>})>} Sales ) |
Igual que el anterior. Si se omite el campo en la función de elemento, la función devolverá los valores posibles del campo especificados en la asignación externa. |
sum( {$<Customer = P({1<Product={'Shoe'}>} Supplier)>} Sales ) |
Devuelve las ventas de la selección actual, pero solo de los clientes que han suministrado alguna vez el producto "Shoe", es decir, que el cliente es también proveedor. La función de elemento P() aquí devuelve una lista de posibles proveedores; aquellos implicados por la selección "Shoe" en el campo Product. La lista de proveedores se utiliza como una selección en el campo. Customer. |
sum( {$<Customer = E({1<Product={'Shoe'}>})>} Sales ) |
Devuelve las ventas de la selección actual, pero solo de los clientes que nunca han comprado el producto "Shoe". La función de elemento E() aquí devuelve una lista de clientes excluidos; aquellos que están excluidos por la selección "Shoe" en el campo Product. |