Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
Ноябрь 21, 2017, 03:47:28 am

Автор Тема: Синтаксис оператора YTD (Qlikview)  (Прочитано 3108 раз)

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

  • Наставник
  • **
  • Сообщений: 71
  • Страна: 00
  • Рейтинг: +14/-0
    • Просмотр профиля
Синтаксис оператора YTD (Qlikview)
« : Июль 15, 2015, 06:02:56 am »
Всем добрый день.
Не могу разобраться, как правильно прописать оператор YTD в QlikView.
Суть в том, что у меня выборка должна включать не просто выбранную дату, но и период, предшествующий ей.
Покажу на примере:
Нужно загрузить данные за 2014 и 2015 год, и, допустим, если я выбираю дату 30.06.15, то нужно, чтобы программа отображала не только данные за это число, а включала период с 01.01.2014 по 30.06.2015.
Нашла много материалов по данному оператору, понимаю, что прописывать его нужно через Set Analysis.
Проблема в том, что не нашла конкретных примеров - только формула + в разных источниках по-разному прописан синтаксис, хоть и не кардинально, но всё же отличается.
Если у кого-то есть источники, где есть реальные примеры с данным оператором, буду искренне благодарна.
Впрочем, буду признательна любой помощи. 

Оффлайн admin

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 981
  • Страна: ru
  • Рейтинг: +97/-0
    • Просмотр профиля
Re: Синтаксис оператора YTD
« Ответ #1 : Июль 16, 2015, 02:44:39 pm »
День добрый.
Да, вариантов несколько может быть.
Самое простое выражение для таблицы:
sum({<дата = {'>=$(=yearstart(min(дата),-1))<=$(=max(дата))'}>} Сумма)
дата - поле календаря и таблицы фактов.
Сумма - поле связанной по дате таблицы.

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

  • Наставник
  • **
  • Сообщений: 71
  • Страна: 00
  • Рейтинг: +14/-0
    • Просмотр профиля
Re: Синтаксис оператора YTD (Qlikview)
« Ответ #2 : Июль 17, 2015, 12:28:05 pm »
Добрый день.
Прописала эту формулу, но работает она у меня, как обычное суммирование. Т. е. выбираю дату, и отображает количество только за данную дату, а не с начала года по данную дату.
В чём может быть проблема?

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

Re: Синтаксис оператора YTD (Qlikview)
« Ответ #2 : Июль 17, 2015, 12:28:05 pm »

Оффлайн admin

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 981
  • Страна: ru
  • Рейтинг: +97/-0
    • Просмотр профиля
Re: Синтаксис оператора YTD (Qlikview)
« Ответ #3 : Июль 17, 2015, 12:45:24 pm »
Проблема может быть в поле "дата".
Проверьте в текстовом объекте, что показывают выражения:
=yearstart(min(дата),-1)=max(дата)

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

  • Наставник
  • **
  • Сообщений: 71
  • Страна: 00
  • Рейтинг: +14/-0
    • Просмотр профиля
Re: Синтаксис оператора YTD (Qlikview)
« Ответ #4 : Июль 17, 2015, 01:02:29 pm »
По первому выражению выдаёт дату 01.01.2014.
По второму - 5-значное число, не пойму, по какому принципу оно вообще сформировано.
Тестовый диапазон я взяла с 1 по 5 июня 2015 года, поэтому что первая дата, что результат по второй - некорректны.
Поле doc_date, к которому у меня привязан календарь, содержит список дат, если выводить в текстовом поле. 01.01.2015, 02.01.2015 и т.д.

Оффлайн kvv

  • Гуру
  • ***
  • Сообщений: 135
  • Страна: 00
  • Рейтинг: +36/-0
    • Просмотр профиля
Re: Синтаксис оператора YTD (Qlikview)
« Ответ #5 : Июль 17, 2015, 02:16:34 pm »
По первому выражению выдаёт дату 01.01.2014.
По второму - 5-значное число, не пойму, по какому принципу оно вообще сформировано.
Тестовый диапазон я взяла с 1 по 5 июня 2015 года, поэтому что первая дата, что результат по второй - некорректны.
Поле doc_date, к которому у меня привязан календарь, содержит список дат, если выводить в текстовом поле. 01.01.2015, 02.01.2015 и т.д.

Добрый день.
Второе число, это скорее всего дата. Попробуйте его записать в следующем виде:
=date(max(дата), 'DD.MM.YYYY')

Оффлайн admin

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 981
  • Страна: ru
  • Рейтинг: +97/-0
    • Просмотр профиля
Re: Синтаксис оператора YTD (Qlikview)
« Ответ #6 : Июль 17, 2015, 06:36:14 pm »
Цитировать
если я выбираю дату 30.06.15, то нужно, чтобы программа отображала не только данные за это число, а включала период с 01.01.2014 по 30.06.2015

Цитировать
По первому выражению выдаёт дату 01.01.2014.

Цитировать
Тестовый диапазон я взяла с 1 по 5 июня 2015 года, поэтому что первая дата, что результат по второй - некорректны.
Почему некорректны?

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

Re: Синтаксис оператора YTD (Qlikview)
« Ответ #6 : Июль 17, 2015, 06:36:14 pm »

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

  • Наставник
  • **
  • Сообщений: 71
  • Страна: 00
  • Рейтинг: +14/-0
    • Просмотр профиля
Re: Синтаксис оператора YTD (Qlikview)
« Ответ #7 : Июль 20, 2015, 05:02:24 am »
Kvv, спасибо, попробую.

Admin, получается, в конечном итоге мне нужен период в программе с 2014 по 2015 год, в готовом приложении. Сейчас же, когда я пытаюсь корректно прописать Set Analysis, я загрузила диапазон с 01.06.2015 по 04.06.15 (чтобы у скрипта отладка времени не занимала много), поэтому полагаю, что было бы логично, если бы min(date) была 01.06.2015, а max(date) 04.06.15.
Или в данном условии - "=yearstart(min(дата),-1)", -1 даёт мне 2014 год, правильно понимаю Вас?

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

  • Наставник
  • **
  • Сообщений: 71
  • Страна: 00
  • Рейтинг: +14/-0
    • Просмотр профиля
Re: Синтаксис оператора YTD (Qlikview)
« Ответ #8 : Июль 20, 2015, 05:07:56 am »
Kvv, ещё раз спасибо, всё корректно отобразилось, проблема с max(date) отпадает.

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

  • Наставник
  • **
  • Сообщений: 71
  • Страна: 00
  • Рейтинг: +14/-0
    • Просмотр профиля
Re: Синтаксис оператора YTD (Qlikview)
« Ответ #9 : Июль 20, 2015, 06:34:19 am »
Проблема новая возникла с соответствием дат.
Формула по подсчёту остатков работает корректно, если выбирать дату из списка полей DOC_DATE (вложение 1).
Если же я выбираю дату в календаре, то поле "Остаток в шт." показывает их некорректно, получается, что поля "Остаток в шт." и "Остаток за день" равны, чего не должно быть (вложение 2).
По факту, календарь привязан к полю DOC_DATE (вложение 3).
Рабочая формула имеет следующий вид:
sum({$ <DOC_DATE = {'>=$(=yearstart(min(DOC_DATE),-1))<=$(=max(DOC_DATE))'}>} OSTATOK)
Может быть дело в том, что после DOC_DATE нет 'DD.MM.YYYY'? Я пыталась его прописать после DOC_DATE в этой формуле, но данное уточнение подчёркивала красным программа.
Календарь и поле DOC_DATE "видят" друг друга, когда выбираю одно, то выделяется другое.
С чем может быть связана проблема?

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

  • Наставник
  • **
  • Сообщений: 71
  • Страна: 00
  • Рейтинг: +14/-0
    • Просмотр профиля
Re: Синтаксис оператора YTD (Qlikview)
« Ответ #10 : Июль 21, 2015, 11:19:32 am »
Разобралась, тему можно считать закрытой.)