Модификаторы множества с использованием функций множества
Иногда может требоваться определить множество значений поля с помощью вложенного определения множества. Например, может потребоваться выбрать всех клиентов, которые приобрели определенный продукт, не выбирая этот продукт.
В таких случаях следует использовать функции множества элементов P() и E(). Они возвращают множества элементов с возможными и исключенными значениями поля соответственно. Внутри скобок можно указать рассматриваемое поле и выражение множества, которое определяет область действия. Пример.
P({1<Year = {2021}>} Customer)
Это выражение вернет множество клиентов, у которых были транзакции в 2021 году. Затем результат можно использовать в модификаторе множества. Пример.
Sum({<Customer = P({1<Year = {2021}>} Customer)>} Amount)
Это выражение множества выбирает указанных клиентов, но не ограничивает выборку 2021 годом.
Эти функции не могут использоваться в других выражениях.
Кроме того, внутри функций множества элементов можно использовать только натуральные множества. Это множество записей, которое можно определить путем простой выборки.
Например, множество, заданное значением {1-$}, не всегда можно определить путем выборки, следовательно, оно не является натуральным. При использовании этих функций с ненатуральными множествами, результаты могут быть неудовлетворительными.
Пример: выражения диаграммы для модификаторов множества с использованием функций множества
Примеры | Результаты |
---|---|
sum( {$<Customer = P({1<Product={'Shoe'}>} Customer)>} Sales ) |
Возвращает продажи для текущей выборки, но только для тех клиентов, которые когда-либо покупали продукт «Shoe». Здесь функция элемента P( ) возвращает список возможных клиентов, подразумеваемых выборкой «Shoe» в поле Product. |
sum( {$<Customer = P({1<Product={'Shoe'}>})>} Sales ) |
Так же, как выше. Если в функции элемента поле опущено, функция вернет возможные значения для поля, указанного во внешнем назначении. |
sum( {$<Customer = P({1<Product={'Shoe'}>} Supplier)>} Sales ) |
Возвращает продажи для текущей выборки, но только для тех клиентов, которые когда-либо поставляли продукт «Shoe», то есть клиент также является поставщиком. Здесь функция элемента P( ) возвращает список возможных поставщиков, подразумеваемых выборкой «Shoe» в поле Product. Список поставщиков затем используется в качестве выборки в поле Customer. |
sum( {$<Customer = E({1<Product={'Shoe'}>})>} Sales ) |
Возвращает продажи для текущей выборки, но только для тех клиентов, которые никогда не покупали продукт «Shoe». Здесь функция элемента E( ) возвращает список исключенных клиентов, которые исключены выборкой «Shoe» в поле Product. |