Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Buenas, necesito ayuda para trabajar en el script, tengo una fecha de inicio y otra de fin en el mismo registro y quiero abrir en n registros que vayan desde año_mes que me da la fecha de inicio y termine en el año_mes que me da la fecha fin.
Ejemplo:
Partiendo del primer registro:
id, fecha_inicio,fecha_fin --> columnas
1, 12-01-2023, 15-10-2023-->registro 1
Quiero obtener esta tabla:
-->mismo id abierto en n registros por el nuevo campo año_mes que inicia con fecha_inicio y termina con año_mes de la fecha_fin
Espero me puedan ayudar.
Gracias!
Hola VeroSaravia, prueba este código:
// Cargar la tabla original
TABLA_ORIGINAL:
LOAD
id,
fecha_inicio,
fecha_fin
FROM [x];
// Crear una tabla temporal con todas las fechas posibles entre el mínimo y el máximo
TEMP_FECHAS:
LOAD
Min(fecha_inicio) + IterNo() - 1 as TempFecha
AUTOGENERATE 1
WHILE Min(fecha_inicio) + IterNo() - 1 <= Max(fecha_fin);
// Unir la tabla de fechas temporal con la tabla original
TEMP_JOIN:
CROSS JOIN
LOAD
id,
fecha_inicio,
fecha_fin
RESIDENT TABLA_ORIGINAL;
TABLA_FINAL:
LOAD
id,
TempFecha as Fecha,
Year(TempFecha) & '-' & Num(Month(TempFecha), '00') as año_mes
RESIDENT TEMP_JOIN
WHERE fecha_inicio <= TempFecha
and fecha_fin >= TempFecha;
// Borrar las tablas temporales para liberar espacio en la memoria
DROP TABLE TEMP_FECHAS;
DROP TABLE TEMP_JOIN;
Este script genera una nueva tabla llamada TABLA_FINAL que incluye una fila para cada mes entre fecha_inicio y fecha_fin. Por favor, recuerda que la ruta del archivo, el formato de fecha y los nombres de las columnas deben adaptarse a tu caso específico.
Tambien considera que un deglose tiene mas datos y puede consumir mayor memoria RAM.
Hola VeroSaravia, prueba este código:
// Cargar la tabla original
TABLA_ORIGINAL:
LOAD
id,
fecha_inicio,
fecha_fin
FROM [x];
// Crear una tabla temporal con todas las fechas posibles entre el mínimo y el máximo
TEMP_FECHAS:
LOAD
Min(fecha_inicio) + IterNo() - 1 as TempFecha
AUTOGENERATE 1
WHILE Min(fecha_inicio) + IterNo() - 1 <= Max(fecha_fin);
// Unir la tabla de fechas temporal con la tabla original
TEMP_JOIN:
CROSS JOIN
LOAD
id,
fecha_inicio,
fecha_fin
RESIDENT TABLA_ORIGINAL;
TABLA_FINAL:
LOAD
id,
TempFecha as Fecha,
Year(TempFecha) & '-' & Num(Month(TempFecha), '00') as año_mes
RESIDENT TEMP_JOIN
WHERE fecha_inicio <= TempFecha
and fecha_fin >= TempFecha;
// Borrar las tablas temporales para liberar espacio en la memoria
DROP TABLE TEMP_FECHAS;
DROP TABLE TEMP_JOIN;
Este script genera una nueva tabla llamada TABLA_FINAL que incluye una fila para cada mes entre fecha_inicio y fecha_fin. Por favor, recuerda que la ruta del archivo, el formato de fecha y los nombres de las columnas deben adaptarse a tu caso específico.
Tambien considera que un deglose tiene mas datos y puede consumir mayor memoria RAM.
Excelente Cristian! Funcionó.
Me alegra 🙂