Неофициальный форум разработчиков QlikView и Qlik Sense

Форум разработчиков QlikView и Qlik Sense. Получи любые ответы на вопросы по QlikView и Qlik Sense в течении нескольких часов!

Вы не вошли.

Готовые решения на платйорме QlikView

#1 2015-12-14 03:08:46

Raiser_ZX
Участник
Зарегистрирован: 2015-12-14
Сообщений: 2
LinuxChrome 47.0.2526.73

Изменение выборки в зависимости от параметра

Добрый день!
Прошу помощи для решения следующего вопроса:

Есть таблица с продажами по городам и регионам, причем в самом идентификаторе заложена информация о регионе.
Пример:

Область 1: 800-100 - обозначает и областной центр, и область
Область 2: 800-200

Город 11: 800-100-100
Город 12: 800-100-200

Город 21: 800-200-100
Город 22: 800-200-200

и т.д.

Таблицу продаж мы получаем из учетной системы в следующем виде:

800-100               5600000 - это продажи в областном центре, а не сумма по области
800-100-100          786700 - райцентр
800-100-100-200   567780- это город районного подчинения или деревня
800-100-100-300     56560
800-100-200                 и т.д.
800-200
800-200-100
800-200-200
800-200-200-100
и т.д.

На листе в документе QV у меня есть параметр, где можно выбрать "С учетом подразделений" или "Без учета подразделений" (мультисписок, где возможен выбор только одного значения).

Необходимо сделать следующее:

Если установлено значение "Без учета подразделений", то отборы происходят как обычно.

Если установлено значение "С учетом подразделений", то также должны выбираться подразделения нижних уровней.
Простыми словами, если я выбираю 800-100, то автоматически должны выбраться ("отметиться зеленым в списке") также 800-100-100, 800-100-200, 800-100-200-100 и т.д., то есть все элементы, которые начинаются с 800-100. Ну и соответственно все таблицы и диаграммы должны пересчитаться с учетом данной выборки.

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

Буду благодарен за помощь!

Неактивен

#2 2015-12-14 13:46:17

Nick Riga
Участник
Зарегистрирован: 2015-02-17
Сообщений: 13
Windows 7Firefox 42.0

Re: Изменение выборки в зависимости от параметра

Добрый день!

Для вашего случая есть решение, оно не очень прозрачное и в нем используется функционал триггеров.

Для примера, сделаем следующую модель из трех таблиц:

  • Таблица-островок "Переключатель" содержит поля Num, Value и 2 записи:
    (1, 'С учетом подразделений')
    (2, 'Без учета подразделений')

  • Таблица-справочник "Регионы" содержит поля ID-идентификатор региона и Region-название региона

  • Таблица-факт "Продажи" содержит поля ID, SalesSum, Quantity:

Чтобы реализовать описанную вами схему выбора в фильтре Region необходимо настроить триггер из нескольких действий на событие OnSelect в поле Region, то есть каждый раз когда пользователь будет делать выбор в этом поле, будут выполняться действия из триггера:

1. Открываем "Document Properties" -> "Triggers", в списке полей выбираем Region и справа под надписью OnSelect нажимаем на кнопку "Add Action(s)...".
2. Add -> Select in Field
Field: = if(getselectedcount(Region)>0, pick(Num, 'ID', null()))
Search String: ='(' & Concat(ID&'*', '|') & ')'
- выбирает в поле ID идентификаторы выбранных регионов и всех их подрегионов;
3. Add -> Clear Field
Field: =if(getselectedcount(Region)>0, pick(Num, 'Region', null()))
- очищает поле Region;
4. Add -> Select Possible
Field: =if(getselectedcount(Region)>0, pick(Num, 'Region', null()))
- выбирает возможные значения в поле Region (те что соответсвуют фильтру на ID из пункта 2 );
5. Add -> Clear Field
Field: =if(getselectedcount(Region)>0, pick(Num, 'ID', null()))
- очищает поле ID;

Условие if(getselectedcount(Region)>0 используется, чтобы действия не срабатывали при очищении фильтра (то же попадает под OnSelect)
Условие pick(Num, 'ID', null()) используется, чтобы действия срабатывали только при нужном значение переключателя.

Одно но: действия из триггера будут аналогичны действиям сделанным пользователем, поэтому использование кнопки Back (возврат к предыдущей выборке) после выбора в поле Region вернет нас к пункту 4 (то есть вернутся значения выбранные в поле ID).

При необходимости могу направить пример.

Неактивен

#3 2015-12-15 03:10:31

Raiser_ZX
Участник
Зарегистрирован: 2015-12-14
Сообщений: 2
LinuxChrome 47.0.2526.73

Re: Изменение выборки в зависимости от параметра

Nick Riga пишет:

Добрый день!
Для вашего случая есть решение, оно не очень прозрачное и в нем используется функционал триггеров.
...

Спасибо огромное! Буду разбираться.

Неактивен

Сейчас в этой теме форумчан: 0, гостей: 1
[Bot] claudebot

Подвал форума

Под управлением FluxBB
Модифицировал Visman

[ Сгенерировано за 0.015 сек, 8 запросов выполнено - Использовано памяти: 1.49 Мбайт (Пик: 1.64 Мбайт) ]