Qlikview Скользящий 12-месячный финансовый год

Этот форум, кажется, больше ориентирован на проблемы программирования, но мне было бы интересно, если бы кто-нибудь посмотрел на проблему логики в приведенной ниже ссылке. Моя проблема заключается в том, как рассчитать итоги за предыдущие 12 месяцев, используя уже определенный календарь. Я нашел очень мало примеров этого в сообществе QV. Пожалуйста, смотрите ссылку ниже для более подробной информации. Я был бы готов взглянуть на решение для сценария SQL или QV.

Наш финансовый год длится с ноября по октябрь. Я хотел бы, чтобы конечный пользователь выбрал год, а диаграмма отображала маржу за последние скользящие 12 месяцев. У меня были проблемы с накоплением общей суммы за предыдущие месяцы. Моя цель состояла бы в том, чтобы она выглядела похожей на столбец Rolling 12 Month Total - GP в рассчитываемом вручную изображении Excel «Цель». (посмотрите на ссылку QV для скриншота)

Уравнение скользящей маржи: моя попытка использовать анализ множества для создания уравнения скользящего среднего

=Sum({<master_date={'>=$(=MonthStart(Max(master_date), -12))<=$(=MonthEnd(Max(master_date)))'}>}

МастерКалендарь

TempCalendar:
LOAD
$(vDateMin) + RowNo() - 1 AS DateNumber,
Date($(vDateMin) + RowNo() - 1) AS TempDate
AUTOGENERATE 1
WHILE $(vDateMin)+IterNo()-1<= $(vDateMax);

MasterCalendar: для соединения элементов используется master_date. Этот финансовый календарь трудно совместить со скользящим средним значением.

LOAD
TempDate AS master_date,
Day(TempDate) AS CalendarDay,
      WeekDay(TempDate) AS CalendarWeekDay,
      Week(TempDate) AS CalendarWeek,
      Month(TempDate) AS CalendarMonth,
      Year(TempDate) AS CalendarYear,
      'Q' & Ceil(Month(TempDate)/3) AS CalendarQuarter,
      WeekDay(TempDate) & '-' & Year(TempDate) AS CalendarWeekAndYear,
      Month(TempDate) & '-' & Year(TempDate) AS CalendarMonthAndYear,
      If(Num(TempDate) >= $(vYearStart) AND Num(TempDate) < $(vMonthNow), -1, 0) AS YTD, 
      If(Num(TempDate) >= $(vYearStartLY) AND Num(TempDate) < $(vMonthNowLY), -1, 0) AS LY_YTD,
      Year2Date(TempDate) * -1 AS YTD_Flag,
      Year2Date(TempDate,-1, 1, $(vToday))*-1 AS LY_YTD_Flag
RESIDENT TempCalendar ORDER BY TempDate ASC;

DROP TABLE TempCalendar;

FiscalCalander> Это определяет наш финансовый год

FiscalCalendar:
LOAD date(date#(20011101,'YYYYMMDD')+recno(),'MM/DD/YY') AS "master_date"
AUTOGENERATE today()-date#(20011101,'YYYYMMDD');
LEFT JOIN (FiscalCalendar)
LOAD
"master_date",
date(monthstart(master_date),'MMM YY') AS "MonthFisical",
date(monthstart(master_date),'MMM') AS "MonthFisical_MonthTitle",
date(yearstart(master_date,1,11),'YYYY') AS "YearFiscal",
month(master_date)-month(num(today(1))) AS FiscalMonthsElapsed,
YearToDate(master_date, 0,11)*-1 AS YTD_FLAG_Fiscal,
YearToDate(master_date,-1,11)*-1 AS LY_YTD_FLAG_Fiscal
RESIDENT FiscalCalendar;

Чтобы просмотреть снимки экрана: http://community.qlikview.com/message/219912#219912

Спасибо, что нашли время изучить этот вопрос.


person octopus_guy    schedule 12.06.2012    source источник
comment
Я надеюсь, что это содержит достаточно информации/контекста   -  person octopus_guy    schedule 12.06.2012
comment
Похоже, что community.qlikview.com/message/219912#229267 содержит решение.   -  person smartmeta    schedule 16.09.2013


Ответы (1)


Решение не в календаре: вам нужно создать сводную таблицу между вашим календарем и таблицей фактов.

В этой сводной таблице у вас есть 2 типа: DIRECT и CROSSING.

Для типа DIRECT строка таблицы фактов связана с датой в календаре. Для типа CROSSING строка таблицы фактов связана со всеми датами 12 будущих месяцев календаря.

Таким образом, в Qlikview вы используете тип DIRECT все время, за исключением случаев, когда вы хотите представить для каждого месяца итоги за последние 12 месяцев. В этом случае вы используете CROSSING, потому что все строки связаны с датами 12 будущих месяцев, поэтому это означает (обратная точка зрения), что месяц связан со всеми данными за последние 12 месяцев.

Примеры:

xlsx

QVW< /а>

person Matt    schedule 12.12.2014