
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Limitar numero de registros en la carga
Buenas,
Estoy definiendo una aplicacion con carga incremental y tengo una duda.
tengo una aplicación ( Extractor) que es la que me hace la extracción de la base de datos y la que me junta los datos anteriores con los de la carga. Lo que quiero es limitar los registros que almaceno en la base de datos a partir de una fecha.
Yo quiero almacenar 31 días, los últimos 31 días , pero no tengo cargas de todos los dias.
Se os ocurre como hacerlo?
Os cuento las tablas que tengo y en función de que hago la carga incremental:
- Tabla Histórico: tiene un campo de Fecha Hora
- Tabla casos: tiene una fecha de inicio y otra de fin, y tengo que cargar los datos que la fecha sea una de las anteriores
- Reclasificados: Estos no tienen fecha, tienen un ID, lo que hago es el ver el máximo que tengo y cargar el resto.
En mi aplicación tengo una fecha que seleccionan para ver los resultados de ese día. Esta fecha siempre la igualo con el campo Fecha/Hora o el fecha de inicio. Por lo tanto, entiendo que son estos dos campos los que tendria que usar para limitar mi número de registros. La fecha de esos dos campos.
Ahora bien, no se como ni donde contar las fechas que tengo para decirle la mimima a cargar.
Alguien me echa una mano?
Gracias
- « Previous Replies
-
- 1
- 2
- Next Replies »


- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
lo ideal es ver un ejemplo de los datos.
Te refieres a que los 31 días no necesariamente serán seguidos, correcto ?
Que es lo que quieres extraer? A partir del ultimo dia que habia datos nuevos?


- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hola María:
Creo que no he entendido muy bien tu requerimiento pero veo dos caminos:
La función RANK te devuelve la posición de una determinada expresión, y la función MAX(Expresion, 31) retornará la trigésimo primera fecha más grande utilizada ... con ambas podrás establecer una variable para utilizar en los set análisis.
Como todo depende de si te interesa hacerlo en tiempo de carga o en los gráficos la respuesta puede variar.
De momento, no veo como filtrar los registros que no tienen fecha
Saludos
Joaquín

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Gracias a los dos por vuestros comentarios.
Efectivamente lo que necesito es los ultimos 31 dias que no tienen xq ser correlativos.
Probaré con la función Rank. Mi idea es que a la hora de almacenar los datos en el QVD "decirle" que la fecha debe ser >= a la que he sacado como fecha limite con el Rank.


- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hola María,
Sin hacer ninguna prueba, creo que te será más útil el Max(Tu Fecha, 31)
Saludos
Joaquín


- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Me surge una duda,
Quieres hacer un LOAD de las últimas 31 fechas disponibles o mostrar un gráfico con solo las 31 últimas fechas disponibles ?
En el primer caso, el tratamiento sería un poco diferente.
Saludos
Joaquín


- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
esto es lo que yo normalmente hago
primero un load Distinct del QVD, unicamente usando el campo de fecha.
TempFecha:
Load
Distinct
Fecha
from .... qvd
Despues de eso uso un max y genero una variable para pasarlo en el select
MaxFecha:
load
Max(Fecha) as MaxFecha
resident TempFecha
order by Fecha;
let vMaxFecha = fieldvalue('MaxFecha',1);
drop table MaxFecha;
Luego le paso mi variable a mi sintax de SQL
CargaSql:
Load
*;
sql select
*
from tabla
where Fecha > '$(vMaxFecha)';
Aqui es donde esto es algo diferente ya que normalmente se usa un llave para diferenciar
Para to caso en especifico yo uniría la fechas de la carga incremental y el archivo QVD
concatenate (TempFecha)
load distinct
Fecha
resident CargaSql;
luego sacaria el max 31
Max31Fecha:
load
Max(Fecha,31) as Max31Fecha
resident TempFecha
order by Fecha;
let vMax31Fecha = fieldvalue('Max31Fecha',1);
drop table Max31Fecha;
ya despues de eso solo tienes que hace un concatenate del archivo "qvd con la carga de SQL donde la fecha sean mayor o igual a tu max 31
Concatenate(CargaSql)
load
*
from .... qvd
where Fecha >= '$(vMax31Fecha)';
Store CargaSql into ..... .qvd(qvd);

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hola!
si no entiendo mal tu propuesta es consultar directamente el max 31 en la BBDD y limitarlo también en la carga, no?
Es decir, contra la base de datos hago la consulta:
Fechas_Temp:
Load distinct Fecha
from BBDD;
Load Max(Fecha, 31) as Max31Fecha
Resident Fechas_Temp;
let vMax31Fecha = fieldvalue('Max31Fecha',1);
Load * from BBDD where Fecha>=Max31Fecha;
Es asi?

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hola Joaquin,
Es para el Load.
Seria como el comentario de respuesta a Ramon?


- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hola Maria,
Has visto la opción buffer?
Quizas te pueda ayudar...
Saludos,

- « Previous Replies
-
- 1
- 2
- Next Replies »