Начиная с версии 2025.2 в продуктах Stimulsoft для создания дашбордов появилось свойство InclusionMode, о работе с которым мы расскажем в этой статье.
Введение
Свойство InclusionMode позволяет управлять поведением фильтров при работе с связанными данными. Применение этого свойства поможет устранить неочевидные проблемы, возникающие при использовании фильтров с агрегированными данными.Возможный сценарий работы с данными в дашборде
Рассмотрим сценарий, в котором в дашборде используется два источника данных: категории и продукты.Без фильтра в таблице продуктов отображаются только реальные данные из источника. Если категорий больше, чем встречается в продуктах, после агрегации (например, суммы) появляется одна строка с данными из категорий, у которых нет соответствия в продуктах.
С фильтром (например, категории) в запрос к таблице добавляется условие, связанное с колонкой категории.
Проблема: если выбрать опцию "Все" в фильтре, строка с агрегированными данными исчезает, что не является корректным поведением. Важно!
Дело в том, что существует несколько возможностей объединения таблиц, и при выборе опции "Все" реализуется механизм FULL JOIN. Подробнее об особенностях объединения таблиц и свойстве JoinType вы можете прочитать в этой статье. Свойство InclusionMode решает эту проблему, предоставляя два режима работы фильтров.
Режимы работы фильтров
Разберём работы каждого режима:По умолчанию (Selection Only):
Фильтр активируется только при выборе конкретной категории.
Если выбрать “Все”, фильтр не добавляется в запрос → строка с агрегированными данными исчезает.
Always (Всегда):
Фильтр добавляется в запрос всегда, даже при выборе опции “Все”.
В данном случае, строка с агрегированными данными сохраняется, так как условие фильтра (например, WHERE CategoryID IS NULL) остаётся в запросе.
Таким образом, значение Always используется, если нужно сохранять агрегированные данные (например, суммы) даже при выборе “Все”, а значение Selection Only – если фильтр должен применяться только при явном выборе (например, для оптимизации запросов).
Преимущества использования свойства InclusionMode
- Контроль над агрегированными даннымиСвойство устраняет «прыгающие» строки при использовании фильтров с опцией “Все”.
- Предсказуемость
Режим Always гарантирует, что фильтр будет влиять на запрос, даже при выборе опции “Все”.
- Совместимость
Режим Selection Only сохраняет поведение, знакомое пользователям более старых версий.