2012-06-12 10 views
7

Este foro parece estar más orientado hacia más problemas de programación, pero me interesaría que alguien viera el problema lógico en el siguiente enlace. Mi problema es cómo calcular el total anterior de 12 meses usando el calendario ya definido. He encontrado muy pocos ejemplos de esto en la comunidad de QV. Por favor, mira el enlace a continuación para más detalles. Me gustaría ver una solución de script SQL o QV.Qlikview Rolling 12 Month Fiscal

Nuestro año fiscal se extiende de noviembre a octubre. Me gustaría que el usuario final seleccione Año y un gráfico para mostrar el último margen móvil de 12 meses. He tenido problemas para acumular mi total en los meses anteriores. Mi objetivo sería que se vea similar al Rolling 12 Month Total - GP columna en la imagen de Excel calculada manualmente 'Objetivo'. (Ver enlace QV para la captura de pantalla)

balanceo Margen ecuación: mi intento de usar Análisis Conjunto para hacer una ecuación promedio rodadura

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

MasterCalendar

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

MasterCalendar: este utiliza master_date para conectar artículos juntos. Esta un calendario fiscal son difíciles de armar con rodar promedio

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> Esto define nuestro año fiscal

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; 

Para ver capturas de pantalla: http://community.qlikview.com/message/219912#219912

Gracias por tomarse el tiempo para ver este problema

+0

espero que este contiene suficiente información/contexto –

+0

Parece que http://community.qlikview.com/message/219912#229267 contiene una solución. – smartmeta

Respuesta

0

La solución no está en el calendario: debe crear una tabla dinámica entre su calendario y la tabla de hechos.

En esta tabla dinámica tiene 2 tipos: DIRECTO y CRUZANDO.

Para el tipo DIRECTO, una fila en la tabla de hechos está vinculada a la fecha en el calendario Para el tipo CRUZAR, una fila en la tabla de hecho está vinculada a todas las fechas de los 12 meses futuros en el calendario.

En Qlikview, utiliza el tipo DIRECT todo el tiempo, excepto cuando desea presentar para cada mes el total de los últimos 12 meses. En este caso, usa CROSSING porque todas las filas están vinculadas a las fechas de los 12 meses futuros, por lo que significa (punto de vista inverso) que un mes está vinculado a todos los datos de los últimos 12 meses.

Ejemplos:

xlsx

QVW