Синтаксис оператора YTD (Qlikview)

Автор Софья, июля 15, 2015, 06:02:56 am

« предыдущая - следующая »

Софья

июля 15, 2015, 06:02:56 am Последнее редактирование: июля 16, 2015, 02:45:46 pm от admin
Всем добрый день.
Не могу разобраться, как правильно прописать оператор YTD в QlikView.
Суть в том, что у меня выборка должна включать не просто выбранную дату, но и период, предшествующий ей.
Покажу на примере:
Нужно загрузить данные за 2014 и 2015 год, и, допустим, если я выбираю дату 30.06.15, то нужно, чтобы программа отображала не только данные за это число, а включала период с 01.01.2014 по 30.06.2015.
Нашла много материалов по данному оператору, понимаю, что прописывать его нужно через Set Analysis.
Проблема в том, что не нашла конкретных примеров - только формула + в разных источниках по-разному прописан синтаксис, хоть и не кардинально, но всё же отличается.
Если у кого-то есть источники, где есть реальные примеры с данным оператором, буду искренне благодарна.
Впрочем, буду признательна любой помощи. 

admin

День добрый.
Да, вариантов несколько может быть.
Самое простое выражение для таблицы:

sum({<дата = {'>=$(=yearstart(min(дата),-1))<=$(=max(дата))'}>} Сумма)

дата - поле календаря и таблицы фактов.
Сумма - поле связанной по дате таблицы.

Софья

Добрый день.
Прописала эту формулу, но работает она у меня, как обычное суммирование. Т. е. выбираю дату, и отображает количество только за данную дату, а не с начала года по данную дату.
В чём может быть проблема?

admin

Проблема может быть в поле "дата".
Проверьте в текстовом объекте, что показывают выражения:
=yearstart(min(дата),-1)
=max(дата)

Софья

По первому выражению выдаёт дату 01.01.2014.
По второму - 5-значное число, не пойму, по какому принципу оно вообще сформировано.
Тестовый диапазон я взяла с 1 по 5 июня 2015 года, поэтому что первая дата, что результат по второй - некорректны.
Поле doc_date, к которому у меня привязан календарь, содержит список дат, если выводить в текстовом поле. 01.01.2015, 02.01.2015 и т.д.

kvv

Цитата: Софья от июля 17, 2015, 01:02:29 pm
По первому выражению выдаёт дату 01.01.2014.
По второму - 5-значное число, не пойму, по какому принципу оно вообще сформировано.
Тестовый диапазон я взяла с 1 по 5 июня 2015 года, поэтому что первая дата, что результат по второй - некорректны.
Поле doc_date, к которому у меня привязан календарь, содержит список дат, если выводить в текстовом поле. 01.01.2015, 02.01.2015 и т.д.


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

admin

Цитировать
если я выбираю дату 30.06.15, то нужно, чтобы программа отображала не только данные за это число, а включала период с 01.01.2014 по 30.06.2015


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


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

Почему некорректны?

Софья

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 год, правильно понимаю Вас?

Софья

Kvv, ещё раз спасибо, всё корректно отобразилось, проблема с max(date) отпадает.

Софья

июля 20, 2015, 06:34:19 am #9 Последнее редактирование: июля 20, 2015, 06:37:24 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 "видят" друг друга, когда выбираю одно, то выделяется другое.
С чем может быть связана проблема?

Софья

Разобралась, тему можно считать закрытой.)

Рейтинг@Mail.ru Яндекс.Метрика