Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hola , Grupo en español
Tengo un problema , tengo 2 tablas una de facturación y otra ( adjunta ) con las cotizaciones del dólar , el problema surge con los feriados o fin de semana, ya que no hay registros en la tabla de cotizaciones (com3500) , como puedo rellenarlo con el dia anterior ?
ej el 12-10-20 tengo datos en la tabla facturación y no cotizaciones ( por ser feriado )
gracias por su ayuda , la tabla de cotizaciones tienen mas de 5000 registros
Hola @AlejandroJuarez, Puedes usar Peek() durante la carga para acceder al campo del anterior registro, al leer los tipos de cambio faltaría añadir un paso intermedio que complete los huecos. Podría ser algo así:
// Leer tabla con tipos de cambio
tmpTiposCambio:
LOAD FechaTipoCambio, TipoCambio // Nombre de cambio de ejemplo, cambiar por los reales
From ...;
// Crear todas las fechas entre la primera y la última
tmpFechas:
Noconcatenate LOAD Date(MinFecha + IterNo()-1) as FechaTipoCambio
While MinFecha + IterNo()-1 <= MaxFecha;
LOAD Max(FechaTipoCambio) as MaxFecha,
Min(FechaTipoCambio) as MinFecha
Resident tmpTiposCambio;
// Añadir las fechas que falten (Se añade la fecha y TipoCambio será nulo)
Outer Join (tmpTiposCambio) LOAD * Resident tmpFechas;
DROP table tmpFechas;
// Completar huecos
TiposCambio:
NoConcatenate LOAD FechaTipoCambio,
If(IsNull(TipoCambio), Peek(TipoCambio), TipoCambio) as TipoCambio
Resident tmpTiposCambio order By FechaTipoCambio;
DROP Table tmpTiposCambio ;
Hola @AlejandroJuarez, Puedes usar Peek() durante la carga para acceder al campo del anterior registro, al leer los tipos de cambio faltaría añadir un paso intermedio que complete los huecos. Podría ser algo así:
// Leer tabla con tipos de cambio
tmpTiposCambio:
LOAD FechaTipoCambio, TipoCambio // Nombre de cambio de ejemplo, cambiar por los reales
From ...;
// Crear todas las fechas entre la primera y la última
tmpFechas:
Noconcatenate LOAD Date(MinFecha + IterNo()-1) as FechaTipoCambio
While MinFecha + IterNo()-1 <= MaxFecha;
LOAD Max(FechaTipoCambio) as MaxFecha,
Min(FechaTipoCambio) as MinFecha
Resident tmpTiposCambio;
// Añadir las fechas que falten (Se añade la fecha y TipoCambio será nulo)
Outer Join (tmpTiposCambio) LOAD * Resident tmpFechas;
DROP table tmpFechas;
// Completar huecos
TiposCambio:
NoConcatenate LOAD FechaTipoCambio,
If(IsNull(TipoCambio), Peek(TipoCambio), TipoCambio) as TipoCambio
Resident tmpTiposCambio order By FechaTipoCambio;
DROP Table tmpTiposCambio ;
Gracias Ruben
Hola,
Y si hay un tercer campo, por ejemplo, País (habría cotizaciones vacías en días laborables en otros países) como sería el script?.
Fecha País Cotización
01/01/2023 España 1.2
02/01/2023 Portugal 1.2
03/01/2023 España 1.3
04/01/2023 Portugal 1.3
05/01/2023 Portugal 1.4
Muchas gracias!!
Saludos
Hola,
Faltaría un outer join para combinar las fechas con los países y llevar las distintas combinaciones a la tabla inical para rellenar los huecos de país-fecha.
Y cuando se hace el peek, en el 'order by' deberías incluir el país para no mezclar datos de distintos países.
Saludos.
Hola Rubén, perdona por no haberte agradecido la respuesta, lo pruebo y te cuento. Muchas gracias!!