# Модификаторы множества с использованием функций множества

Иногда может требоваться определить множество значений поля с помощью вложенного определения множества. Например, может потребоваться выбрать всех клиентов, которые приобрели определенный продукт, не выбирая этот продукт.

В таких случаях следует использовать функции множества элементов `P()` и `E()`. Они возвращают множества элементов с возможными и исключенными значениями поля соответственно. Внутри скобок можно указать рассматриваемое поле и выражение множества, которое определяет область действия. Например:

`P({1<Year = {2021}>} Customer)`

Это выражение вернет множество клиентов, у которых были транзакции в 2021 году. Затем результат можно использовать в модификаторе множества. Например:

`Sum({<Customer = P({1<Year = {2021}>} Customer)>} Amount)`

Это выражение множества выбирает указанных клиентов, но не ограничивает выборку 2021 годом.

Эти функции не могут использоваться в других выражениях.

Кроме того, внутри функций множества элементов можно использовать только натуральные множества. Это набор записей, которые можно определить путем простой выборки.

Например, множество, заданное значением `{1-$}`, не всегда можно определить путем выборки, следовательно, оно не является натуральным. При использовании этих функций с ненатуральными множествами, результаты могут быть неудовлетворительными.

## Пример: выражения диаграммы для модификаторов множества с использованием функций множества

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/SetAnalysis/set-modifiers-implicit-field-value-definitions.htm)

#### Примеры. Выражения диаграммы

Скрипт загрузки

Загрузите следующие данные через встроенную загрузку в редакторе загрузки данных, чтобы создать примеры с выражениями диаграммы, показанные ниже.

```
MyTable:
Load 
Year(Date) as Year,
Date#(Date,'YYYY-MM-DD') as ISO_Date, 
Date(Date#(Date,'YYYY-MM-DD'),'M/D/YYYY') as US_Date, 
Country, Product, Amount 
Inline
[Date, Country, Product, Amount
2018-02-20, Canada, Washer, 6
2018-07-08, Germany, Anchor bolt, 10
2018-07-14, Germany, Anchor bolt, 3
2018-08-31, France, Nut, 2
2018-09-02, Czech Republic, Bolt, 1
2019-02-11, Czech Republic, Bolt, 3
2019-07-31, Czech Republic, Washer, 6
2020-03-13, France, Anchor bolt, 1
2020-07-12, Canada, Anchor bolt, 8
2020-09-16, France, Washer, 1];	
```

Для получения дополнительной информации об использовании встроенных загрузок см. [Использование встроенных загрузок для загрузки данных](https://help.qlik.com/ru-RU/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/inline-loads-qs.htm).

Выражения диаграммы

Создайте таблицу на листе Qlik Sense со следующими выражениями диаграммы.

Таблица. Модификаторы множества с использованием функций множества

| Страна | Sum(Сумма) | Sum({&lt;Страна=P({&lt;Год={2019}&gt;}Страна)&gt;} Сумма) | Sum({&lt;Продукт=P({&lt;Год={2019}&gt;}Продукт)&gt;} Сумма) | Sum({&lt;Страна=E({&lt;Продукт={Washer}&gt;}Страна)&gt;} Сумма) |
| --- | --- | --- | --- | --- |
| Итоги | 41 | 10 | 17 | 13 |
| Канада | 14 | 0 | 6 | 0 |
| Чешская Республика | 10 | 10 | 10 | 0 |
| Франция | 4 | 0 | 1 | 0 |
| Германия | 13 | 0 | 0 | 13 |

Объяснение

* Измерения:

  * `Country`

* Меры:

  * `Sum(Amount)`

    Суммировать `Amount` без выражения множества.

  * `Sum({<Country=P({<Year={2019}>} Country)>} Amount)`

    Суммировать `Amount` для всех стран, связанных с годом `2019`. Однако при этом вычисление не ограничивается до `2019`.

  * `Sum({<Product=P({<Year={2019}>} Product)>} Amount)`

    Суммировать `Amount` для всех продуктов, связанных с годом `2019`. Однако при этом вычисление не ограничивается до `2019`.

  * `Sum({<Country=E({<Product={Washer}>} Country)>} Amount)`

    Суммировать `Amount` для всех стран, не связанных с годом `Washer`.

Модификаторы множества с использованием функций множества

Модификаторы множества с использованием функций множества

Модификаторы множества с использованием функций множества ![Модификаторы множества с использованием функций множества.](https://help.qlik.com/ru-RU/sense/May2026/Subsystems/Hub/Content/Resources/Images/ui_gen_setanalysis_modifiers_set_functions.png)

Для получения дополнительной информации о выражениях см. [Использование выражений в визуализациях](https://help.qlik.com/ru-RU/sense/May2026/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/use-expressions-in-visualizations.htm).

| Примеры | Результаты |
| --- | --- |
| sum( {$&lt;Customer = P({1&lt;Product={'Shoe'}&gt;} Customer)&gt;} Sales ) | Возвращает продажи для текущей выборки, но только для тех клиентов, которые когда-либо покупали продукт «Shoe». Здесь функция элемента P( ) возвращает список возможных клиентов, подразумеваемых выборкой «Shoe» в поле Product. |
| sum( {$&lt;Customer = P({1&lt;Product={'Shoe'}&gt;})&gt;} Sales ) | Так же, как выше. Если в функции элемента поле опущено, функция вернет возможные значения для поля, указанного во внешнем назначении. |
| sum( {$&lt;Customer = P({1&lt;Product={'Shoe'}&gt;} Supplier)&gt;} Sales ) | Возвращает продажи для текущей выборки, но только для тех клиентов, которые когда-либо поставляли продукт «Shoe», то есть клиент также является поставщиком. Здесь функция элемента P( ) возвращает список возможных поставщиков, подразумеваемых выборкой «Shoe» в поле Product. Список поставщиков затем используется в качестве выборки в поле Customer. |
| sum( {$&lt;Customer = E({1&lt;Product={'Shoe'}&gt;})&gt;} Sales ) | Возвращает продажи для текущей выборки, но только для тех клиентов, которые никогда не покупали продукт «Shoe». Здесь функция элемента E( ) возвращает список исключенных клиентов, которые исключены выборкой «Shoe» в поле Product. |