Qlikview滚动12个月财政

oct*_*guy 8 qlikview business-intelligence

这个论坛似乎更倾向于更多的编程问题,但如果有人在下面的链接中查看逻辑问题,我会感兴趣.我的问题是如何使用已定义的日历计算前12个月的总数.我在QV社区发现了很少的例子.有关详细信息,请参阅以下链接.我愿意看一下SQL或QV脚本解决方案.

我们的会计年度为11月至10月.我希望最终用户选择年份和图表以显示最后滚动的12个月保证金.我有一些问题让我的总数在前几个月累积.我的目标是看起来类似于手动计算的Excel图像"目标"中的滚动12个月总计 - GP列.(查看QV链接截图)

Rolling Margin方程式:我试图使用Set Analysis来制作一个滚动的平均方程

=Sum({<master_date={'>=$(=MonthStart(Max(master_date), -12))<=$(=MonthEnd(Max(master_date)))'}>}
Run Code Online (Sandbox Code Playgroud)

MasterCalendar

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

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;
Run Code Online (Sandbox Code Playgroud)

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;
Run Code Online (Sandbox Code Playgroud)

要查看屏幕截图:http: //community.qlikview.com/message/219912#219912

感谢您抽出宝贵时间来研究这个问题.

Mat*_*att 0

解决方案不在日历中:您必须在日历和事实表之间创建一个数据透视表。

在此数据透视表中,您有 2 种类型:直接和交叉。

对于 DIRECT 类型,事实表中的一行链接到日历中的日期 对于 CROSSING 类型,事实表中的一行链接到日历中未来 12 个月的所有日期。

因此,在 Qlikview 中,您始终使用 DIRECT 类型,除非您想要每月显示过去 12 个月的总计。在本例中,您使用 CROSSING,因为所有行都链接到未来 12 个月的日期,因此这意味着(反向观点)一个月链接到过去 12 个月的所有数据。

例子:

XLSX

QVW