Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
Декабрь 18, 2017, 06:19:55 am

Автор Тема: Приостановление пересчёта данных  (Прочитано 2673 раз)

Оффлайн Софья

  • Наставник
  • **
  • Сообщений: 71
  • Страна: 00
  • Рейтинг: +14/-0
    • Просмотр профиля
Приостановление пересчёта данных
« : Декабрь 03, 2015, 06:24:05 am »
Ещё раз доброе утро.

Появился запрос на приостановление пересчёта данных. Можно ли как-то реализовать такую функцию в QV?

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

Нельзя ли где-нибудь поставить галочку "Отложить обновление макета", например, как в OLAP? Чтобы они задали все условия, а только после программа пересчитала их.

На деле действительно неудобно, когда ты выбираешь одно условие - тут же ждёшь пересчёт, и так подряд раз 7.

Заранее благодарна всем.


Оффлайн bibis

  • Наставник
  • **
  • Сообщений: 78
  • Рейтинг: +31/-0
    • Просмотр профиля
Re: Приостановление пересчёта данных
« Ответ #1 : Декабрь 03, 2015, 09:45:45 am »
Первое,что приходит в голову- создать для пользователей  "рычажок", т.е. 2 текстовых объекта, "выборка","расчет" , устанавливающие некую переменную run в позиции ='{1}' и ='{$}', соответственно.
Ну и дальше во всех объектах прописывать  выражения ввиде
sum($(run) sales) .

далее пользователь жмет : 'выборка', выставляет все фильтры, при этом выражения не пересчитываются, затем жмет "расчет"

Оффлайн Софья

  • Наставник
  • **
  • Сообщений: 71
  • Страна: 00
  • Рейтинг: +14/-0
    • Просмотр профиля
Re: Приостановление пересчёта данных
« Ответ #2 : Декабрь 03, 2015, 11:00:53 am »
Я правильно понимаю Вас, что создаётся одна переменная? А как ей присвоить 2 значения?

И как прописывать это в объектах? Никаких ассоциаций не возникает в голове, как это будет выглядеть.

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

Re: Приостановление пересчёта данных
« Ответ #2 : Декабрь 03, 2015, 11:00:53 am »

Оффлайн bibis

  • Наставник
  • **
  • Сообщений: 78
  • Рейтинг: +31/-0
    • Просмотр профиля
Re: Приостановление пересчёта данных
« Ответ #3 : Декабрь 03, 2015, 11:41:36 am »
 Создаем переменную run .
 Создаем 2 текстовых объекта. Выбираем свойства/действие/добавить/внешний/установить переменную,
 в поле "переменная" пишем run
в поле значение, в первом объекте ='{$}'  , во втором ='{1}'.

 Далее в каждом  выражении дописываем , $(run).
Допустим если у вас в диаграмме считалось выражение Sum(sales) , то теперь вам нужно его переделать в
Sum($(run) sales)

Оффлайн Софья

  • Наставник
  • **
  • Сообщений: 71
  • Страна: 00
  • Рейтинг: +14/-0
    • Просмотр профиля
Re: Приостановление пересчёта данных
« Ответ #4 : Декабрь 03, 2015, 12:18:27 pm »
Теперь поняла, благодарю.

Но ругается, когда вписываю эту переменную в поле. К слову, все формулы у меня трёхэтажные.


Оффлайн bibis

  • Наставник
  • **
  • Сообщений: 78
  • Рейтинг: +31/-0
    • Просмотр профиля
Re: Приостановление пересчёта данных
« Ответ #5 : Декабрь 03, 2015, 12:32:38 pm »
Ну на то что ругается, внимания обращать не нужно, подсветка синтаксиса в qv кривая, считает правильно главное , только что проверил.

С формулами, ничего не поделать, на будущее советую основные куски выражений, которые часто используете так же загонять в переменные.
В данном случае могу посоветовать только параметры/обозреватель выражений и там поделать что-то вроде : 'заменить всё' Sum(  на Sum($(run) , avg( на avg($(run) и т.д.

Оффлайн Софья

  • Наставник
  • **
  • Сообщений: 71
  • Страна: 00
  • Рейтинг: +14/-0
    • Просмотр профиля
Re: Приостановление пересчёта данных
« Ответ #6 : Декабрь 03, 2015, 12:56:05 pm »
Спасибо за совет, на досуге нужно будет заняться.

Сделала всё, как Вы сказали. Ничего не изменилось. И ещё хотела спросить, к подобным объектам, как во вложении, нужно что-то дописывать. У меня много конструкций с if, объектов-списков, где прописаны различные условия в выражениях.

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

Re: Приостановление пересчёта данных
« Ответ #6 : Декабрь 03, 2015, 12:56:05 pm »

Оффлайн bibis

  • Наставник
  • **
  • Сообщений: 78
  • Рейтинг: +31/-0
    • Просмотр профиля
Re: Приостановление пересчёта данных
« Ответ #7 : Декабрь 03, 2015, 01:04:39 pm »
Сделала всё, как Вы сказали. Ничего не изменилось.
А нажали, хоть на один из созданных текстовых объектов, чтоб переменная инициализировалась?
Какую ошибку выдает?
И создайте текстовый объект с текстом =$(run) , напишите,что он показывает при переключении.

Прописывать нужно в каждой функции аггрегирования (sum,avg,concat,max и т.д.), т.е. если у вас например в выражении  считается одна из 2х формул в зависимости от условия if, то прописать нужно в обоих, то же самое и при вложенном аггрегировании с aggr

Оффлайн Софья

  • Наставник
  • **
  • Сообщений: 71
  • Страна: 00
  • Рейтинг: +14/-0
    • Просмотр профиля
Re: Приостановление пересчёта данных
« Ответ #8 : Декабрь 03, 2015, 01:12:47 pm »
По-моему, я Вас неправильно понимаю. Создала объект, где прописала переменную, как Вы сказали. Нужен ещё тестовый объект? Или в этом же объекте вместо 1 и 2 что-то нужно написать?

Только сейчас задумалась, а в скрипте её нужно как-то обозначать?

Оффлайн bibis

  • Наставник
  • **
  • Сообщений: 78
  • Рейтинг: +31/-0
    • Просмотр профиля
Re: Приостановление пересчёта данных
« Ответ #9 : Декабрь 03, 2015, 01:17:09 pm »
Тестовый, но вообще по скрину - всё правильно.
Попробуйте на какой-нибудь простой формуле отработать, понажимав на созданные объекты, убедившись, что значение считаются, а потом уже в 3 хэтажные аккуратно дописывать.

Оффлайн Софья

  • Наставник
  • **
  • Сообщений: 71
  • Страна: 00
  • Рейтинг: +14/-0
    • Просмотр профиля
Re: Приостановление пересчёта данных
« Ответ #10 : Декабрь 03, 2015, 01:26:27 pm »
И создайте текстовый объект с текстом =$(run) , напишите,что он показывает при переключении.

А здесь Вы имели в виду что? Нужны ли ещё тестовые объекты? Просто не сталкивалась с подобной конструкцией, поэтому простите моё обилие вопросов.

Оффлайн bibis

  • Наставник
  • **
  • Сообщений: 78
  • Рейтинг: +31/-0
    • Просмотр профиля
Re: Приостановление пересчёта данных
« Ответ #11 : Декабрь 03, 2015, 02:22:35 pm »
Ну он нужен,чтоб можно было в живую посмотреть как меняется переменная. Но судя по скринам-всё с ней должно быть в порядке и можно не создавать.

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

Оффлайн Софья

  • Наставник
  • **
  • Сообщений: 71
  • Страна: 00
  • Рейтинг: +14/-0
    • Просмотр профиля
Re: Приостановление пересчёта данных
« Ответ #12 : Декабрь 04, 2015, 10:11:34 am »
Смотрю на Ваши скрины - у меня всё идентично. Прописала в текстовом объекте простую функцию суммирования количества. Оно так же изменяется, как и данные в таблице сводной. Созданные объекты с переменной никак не влияют на выборку.

Не приложу ума, в чём проблема.

Оффлайн bibis

  • Наставник
  • **
  • Сообщений: 78
  • Рейтинг: +31/-0
    • Просмотр профиля
Re: Приостановление пересчёта данных
« Ответ #13 : Декабрь 04, 2015, 10:44:32 am »
Мистика какя-то.
Попробуйте тогда "в лоб" . Установить переменную в 0 и 1 (вместо ='{$}', ='{1}') .
И прописывать в выражении 
if( $(run)=1, sum(exp) , sum({1}exp) )

Оффлайн Софья

  • Наставник
  • **
  • Сообщений: 71
  • Страна: 00
  • Рейтинг: +14/-0
    • Просмотр профиля
Re: Приостановление пересчёта данных
« Ответ #14 : Декабрь 07, 2015, 05:22:08 am »
Мистика какя-то.
Попробуйте тогда "в лоб" . Установить переменную в 0 и 1 (вместо ='{$}', ='{1}') .
И прописывать в выражении 
if( $(run)=1, sum(exp) , sum({1}exp) )

Можете пояснить, что за условия после run? Не сталкивалась с использованием "exp". И что дают фигурные скобки единице?