Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hola, tengo una serie de dudas al respecto del calendario maestro.
¿Influye el orden en el que se carga el calendario? Explico mi caso. Yo genero un calendario maestro, que tiene fecha, mes, dia, año. Por otra parte yo genero una serie de tablas, donde el único campo en común con el calendario maestro es el campo fecha.Visualmente genero una tabla simple donde muestro algunos resultados.
Mi "problema" es el siguiente, si yo genero el calendario al comienzo del script, y hago alguna seleccion, de los ids que hay en las tablas, en la tabla no se me visualiza nada. En cambio si yo genero el calendario en último lugar del script, si se me muestra el contenido dentro de la tabla. Pero por ejemplo solo para las fechas que tengan realmente coincidencia en fecha con el id seleccionado y no todo el periodo de fecha que yo he seleccionado.
Yo pensaba que el orden a la hora de la carga no influia en nada, y que se relacionaba de igual forma si el nombre del campo coincidia.
Si alguien me puede explicar un poco al respecto
Un saludo
Buenos días Jonay,
Yo uso un txt calendario maestro y lo relaciono mediante un include, lo llamo al principio del script y no he tenido ningún problema, te paso un ejemplo del calendario que uso y pruebas de esta manera.
Yo tengo el calendario maestro y otras tablas de configuración en qvd y los importo con un include al inicio del script sin ningún problema.
A veces pasa que se queda alguna selección guardada en el documento, al recargar no hay datos que la cumplan y entonces se abren las selecciones dando la impresión de que no funciona. Por ejemplo, si tienes el documento que aplica un triger sobre el mes y guardas la selección con el día 30 cuando cambies de ves fallará porque al abrir el documento se eliminarán de forma automática algunas selecciones !!!
Si tienes hecho el calendario maestro correctamente no debería influir. Yo he creado documentos con el calendario maestro tanto al principio como al final del documento y nunca he tenido problemas.
Otra cosa es que para calcular la fecha inicio y fin del calendario maestro utilices fechas que ya deberían estar cargadas. Si es así y cargas el calendario antes que esas fechas, lo normal es que no funcione.
Mi duda una vez creado el calendario maestro es lo siguiente, yo genero en dicho calendario, dia, mes y año. Esto me genera todos los días posibles entre el periodo de la vmin y la vmax que le ponga. Luego yo tengo unas tablas que tengo un campo fecha, que supongo que tendré que desglosar en dia, mes y año, para que me lo relacione con el calendario maestro. El problema es que en esas tablas no necesariamente están todos los días, sino que habrá ID que a lo mejor en el mes de febrero, le faltan los días 15,22,25,26. Si yo relaciono el calendario maestro con los campos dia, mes y año de la tabla en cuestión, el problema es que febrero no me lo computaria como 28 dias, sino como 24 días, porque se me relaciona con los que tiene fecha coincidente.
¿Es correcto relacionar la tabla por los campos dia, mes y año , para que me vincule el calendario a la tabla que tengo con datos?
No. No debes relacionarlo por día mes y año.
Lo tienes que relacionar por la feccha ccompleta. Osea, en tu calendario maestro debes tener un campo fecha (además del día, mes, año, semana, cuatrimestre... etc) que será la que se relacione con el campo fecha de tus tablas.
No, la tabla de hechos se relaciona por el campo fecha
Yo creo el calendario de la siguiente manera:
let vMin = num(MakeDate(2014,09,09));
let vMax = num(today());
Calendario:
load
date(IterNo() + $(vMin)-1) as fecha
AutoGenerate 1 while IterNo() + $(vMin) -1 <= $(vMax);
CalendarioMaestro:
load
fecha, year(fecha) as año, Num(Month(fecha)) as mes, Day(fecha) as dia, Week(fecha) as NumeroSemana,
1 as contadorDias
resident Calendario ORDER BY fecha ASC;
drop table Calendario;
Y luego genero una tabla de la siguiente manera:
Tabla:
select ID,count(*) as total,date_format(fecha,'%Y-%m-%d') as fecha
from tabla
where ID is not null
group by ID,date_format(fecha,'%Y-%m-%d');
Si yo añado el campo fecha en el calendario maestro, no me muestra nada en la tabla simple que uso para mostrar los datos. Sino añado el campo fecha, si me muestra los datos y como no tiene relacion la tabla con el calendario, pues el número de días si se corresponde con el periodo seleccionado y no con las fechas que tenga coincidencia en la tabla para ese ID.
Prueba con este:
LET vDateMin = Num(MakeDate(2015,1,1));
LET vDateMax = Num(MakeDate(2015,12,31));
LET vDateToday = Num(Today());
LET vCurrentWeek=Week(Today())-1;
LET vCurrentMonth = Month(Today());
LET vCurrentYear=Year(Today());
TempCalendar:
LOAD
$(vDateMin) + RowNo() - 1 as DateNumber,
Date($(vDateMin) + RowNo() - 1) as TempDate
AUTOGENERATE 1
WHILE $(vDateMin)+IterNo()-1<= $(vDateMax);
Calendar:
LOAD
Date(TempDate) as Fecha,
// Standard Date Objects
Day(TempDate) as Dia,
WeekDay(TempDate) as DiaSemana,
Week(TempDate) as Semana,
Month(TempDate) as Mes,
'Q' & Ceil(Month(TempDate)/3) as Trimestre,
Year(TempDate) as Anio,
// Calendar Date Names
WeekName(TempDate) as SemanaAnio,
MonthName(TempDate) as MesAnio,
YeartoDate(TempDate)*-1 as YTD,
YeartoDate(TempDate,-1)*-1 as YTDPrev
RESIDENT TempCalendar ORDER BY TempDate ASC;
DROP TABLE TempCalendar;
Pero todo pasa porque en tu tabla de hechos tengas un campo fecha en el mismo formato que en el calendario, si para una fecha en concreto no tienes dato no debe afectar al modelo.
Vale. el problema con el campo fecha era que el calendario maestro y las fechas que sacaba en sql, no tenian el mismo formato. Ahora ya parto de que son iguales.
Mi problema es el que comentaba es que en mi tabla de datos no necesariamente están todos los días, sino que habrá ID que a lo mejor en el mes de febrero, le faltan los días 15,22,25,26.
entonces el calculo de días me sale como 24, en lugar de 28. Y yo lo que necesito es calcular la media para todo el mes completo aunque solo tenga 24 días