Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
Ноябрь 18, 2018, 03:57:13 pm

Автор Тема: Сравнение показателей за текущий и прошлый период  (Прочитано 872 раз)

Оффлайн Наташа

  • Новичок
  • *
  • Сообщений: 11
  • Страна: by
  • Рейтинг: +1/-0
    • Просмотр профиля

Добрый день!

Недавно начала изучать программирование на QlikView.
Столкнулась на работе со след.задачей: есть данные за текущий год (Выручка).
Необходимо вывести такие же показатели за прошлый годы.

Выручка на тек.год рассчитывается след.образом:

=if(ValueList('Выручка, BYN', 'Выручка, USD', 'Средний чек, BYN', 'Средний чек, USD', 'Количество чеков') = 'Выручка, BYN',

    num (Sum (Aggr(NODISTINCT sum(Сумма_со_скидкой-$(vBonusWith))/
   
     Count({<%Код_чека= {"=Count(%Код_чека)<>0"}>} DISTINCT  %Дата )
*
(Day(MonthEnd(max({$}%Дата)))-(Count({<ТипПродаж=>} DISTINCT %Дата) -Count({<%Код_чека= {"=Count(%Код_чека)<>0"}>} DISTINCT  %Дата )))
,Наименование_магазина))

,'# ##0,00'))

Нашла подходящий пример применения Set Analysis
sum({$<Year = {$(#=Only(Year)-1)}>} Sales)
возвращает продажи для предыдущего года в отношении текущей выборки. Здесь расширение со знаком доллара используется для расчета предыдущего года;

НО почему-то, когда я добавляю данное выражение {$<Year = {$(#=Only(Year)-1)}>} в расчеты, то у меня значение показателя остается без изменения (все равно выводит тек.год).

=if(ValueList('Выручка, BYN', 'Выручка, USD', 'Средний чек, BYN', 'Средний чек, USD', 'Количество чеков') = 'Выручка, BYN',

    num (Sum ({$<Year = {$(#=Only(Year)-1)}>} Aggr(NODISTINCT sum(Сумма_со_скидкой-$(vBonusWith))/
   
     Count({<%Код_чека= {"=Count(%Код_чека)<>0"}>} DISTINCT  %Дата )
*
(Day(MonthEnd(max({$}%Дата)))-(Count({<ТипПродаж=>} DISTINCT %Дата) -Count({<%Код_чека= {"=Count(%Код_чека)<>0"}>} DISTINCT  %Дата )))
,Наименование_магазина))

,'# ##0,00'))

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


Добрый день!

Недавно начала изучать программирование на QlikView.
Столкнулась на работе со след.задачей: есть данные за текущий год (Выручка).
Необходимо вывести такие же показатели за прошлый годы.

Выручка на тек.год рассчитывается след.образом:

=if(ValueList('Выручка, BYN', 'Выручка, USD', 'Средний чек, BYN', 'Средний чек, USD', 'Количество чеков') = 'Выручка, BYN',

    num (Sum (Aggr(NODISTINCT sum(Сумма_со_скидкой-$(vBonusWith))/
   
     Count({<%Код_чека= {"=Count(%Код_чека)<>0"}>} DISTINCT  %Дата )
*
(Day(MonthEnd(max({$}%Дата)))-(Count({<ТипПродаж=>} DISTINCT %Дата) -Count({<%Код_чека= {"=Count(%Код_чека)<>0"}>} DISTINCT  %Дата )))
,Наименование_магазина))

,'# ##0,00'))

Нашла подходящий пример применения Set Analysis
sum({$<Year = {$(#=Only(Year)-1)}>} Sales)
возвращает продажи для предыдущего года в отношении текущей выборки. Здесь расширение со знаком доллара используется для расчета предыдущего года;

НО почему-то, когда я добавляю данное выражение {$<Year = {$(#=Only(Year)-1)}>} в расчеты, то у меня значение показателя остается без изменения (все равно выводит тек.год).

=if(ValueList('Выручка, BYN', 'Выручка, USD', 'Средний чек, BYN', 'Средний чек, USD', 'Количество чеков') = 'Выручка, BYN',

    num (Sum ({$<Year = {$(#=Only(Year)-1)}>} Aggr(NODISTINCT sum(Сумма_со_скидкой-$(vBonusWith))/
   
     Count({<%Код_чека= {"=Count(%Код_чека)<>0"}>} DISTINCT  %Дата )
*
(Day(MonthEnd(max({$}%Дата)))-(Count({<ТипПродаж=>} DISTINCT %Дата) -Count({<%Код_чека= {"=Count(%Код_чека)<>0"}>} DISTINCT  %Дата )))
,Наименование_магазина))

,'# ##0,00'))

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

Оффлайн admin

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1217
  • Страна: ru
  • Рейтинг: +129/-0
    • Просмотр профиля
Добрый день.
Для начала проверьте работу выражения на данных без расчетов.
Т.е. вместо
{$<Year = {$(#=Only(Year)-1)}>}  (решетку уберите)
Подставьте значение
{$<Year = {'2018'}>} , работает?
тогда пропишем
{$<[Year ]={$(=max(Year )-1)}>} и должны получить результат для прошлого года относительного максимального в текущей выборке.
Если у вас в выборке более одного года, то Only(Year) растеряется и ничего не покажет.
Поэтому используем max().

Оффлайн Наташа

  • Новичок
  • *
  • Сообщений: 11
  • Страна: by
  • Рейтинг: +1/-0
    • Просмотр профиля
Подставьте значение
{$<Year = {'2018'}>} , работает?


Подставила {$<Year = {'2017'}>}
Нет, не срабатывает.
Выводит значения за текущий год.

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


Оффлайн admin

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1217
  • Страна: ru
  • Рейтинг: +129/-0
    • Просмотр профиля
Ок, следовательно проблема может быть в том, что поле Year не связано с набором данных.
Проверьте модель данных, в какой таблице находится Year, по какому полю установлена связь?
Обычно, все календарные измерения собраны в одной таблице и связаны по полю Дата.
Как у Вас?

Оффлайн Наташа

  • Новичок
  • *
  • Сообщений: 11
  • Страна: by
  • Рейтинг: +1/-0
    • Просмотр профиля
Ок, следовательно проблема может быть в том, что поле Year не связано с набором данных.

Да, проблема была в связи.
Внесла поправки и все заработало. Спасибо.

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