Skip to main content
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
cancel
Showing results for 
Search instead for 
Did you mean: 
Luz14
Contributor
Contributor

Visualizar registro entre rangos de fecha

Tengo una tabla que contiene los campos: Fecha Inicial y Fecha Final que definen la vigencia de cada uno de los registros. Quiero ligar esta tabla con un campo "Fecha" para que mis registros puedan filtrarse dentro de los meses en que se encuentren vigentes. Es decir, si uno de mis registros tiene fecha inicial '15-04-2023' y fecha final '25-06/2023' requiero que dicho registro aparezca cuando filtre los meses Abril, Mayo, Junio que son los meses donde el registro se mantuvo vigente. 

He intentado utilizar autogenerate() para crear las fechas intermedias, pero estoy pensando con arrays y entiendo que en Qlikview no hay sintaxis sobre eso, además de que lo que quisiera es crear "rellenar" con los registros faltantes que cubran las fechas intermedias ...pero quizá no sea la solución.

¿alguna idea? 😞

Labels (2)
1 Solution

Accepted Solutions
BookerE1
Contributor
Contributor


@Luz14 wrote:

Tengo una tabla que contiene los campos: Fecha Inicial y Fecha Final que definen la vigencia de cada uno de los registros. Quiero ligar esta tabla con un campo "Fecha" para que mis registros puedan filtrarse dentro de los meses en que se encuentren vigentes. Es decir, si uno de mis registros tiene fecha inicial '15-04-2023' y fecha final '25-06/2023' requiero que dicho registro aparezca cuando filtre los meses Abril, Mayo, Junio que son los meses donde el registro se mantuvo vigente.  Dog Needs Best

He intentado utilizar autogenerate() para crear las fechas intermedias, pero estoy pensando con arrays y entiendo que en Qlikview no hay sintaxis sobre eso, además de que lo que quisiera es crear "rellenar" con los registros faltantes que cubran las fechas intermedias ...pero quizá no sea la solución.

¿alguna idea? 😞


Entiendo que quieres filtrar tus registros por los meses en que estuvieron vigentes, usando los campos Fecha Inicial y Fecha Final. Hice una búsqueda web y encontré algunas posibles soluciones para tu problema.

Una forma de hacerlo es usando la función Month() de Qlikview, que devuelve el mes de una fecha como un número o un nombre. Puedes usar esta función para crear un campo calculado que contenga el mes de la Fecha Inicial y el mes de la Fecha Final de cada registro. Luego, puedes usar este campo para filtrar tus registros por el mes que quieras. Por ejemplo, si quieres filtrar por el mes de Abril, puedes usar una expresión como esta:

=Sum({<MesInicial={"Abril"}, MesFinal={"Abril"}>} Valor)

Esta expresión suma el campo Valor de los registros que tienen el mes de Abril tanto en el campo MesInicial como en el campo MesFinal. Puedes adaptar esta expresión a tus necesidades y campos.

Otra forma de hacerlo es usando la función IntervalMatch() de Qlikview, que crea una tabla intermedia que relaciona los valores de un campo con los intervalos de otro campo. Puedes usar esta función para crear una tabla que relacione el campo Fecha con los intervalos de los campos Fecha Inicial y Fecha Final de cada registro. Luego, puedes usar esta tabla para filtrar tus registros por el mes que quieras. Por ejemplo, si quieres filtrar por el mes de Abril, puedes usar una expresión como esta:

=Sum({<Fecha={"=Month(Fecha)='Abril'"}>} Valor)

Esta expresión suma el campo Valor de los registros que tienen el mes de Abril en el campo Fecha. Puedes adaptar esta expresión a tus necesidades y campos.

Espero que esta información te ayude a resolver tu problema. Si tienes alguna pregunta o comentario, por favor házmelo saber. Estoy aquí para ayudarte. 

View solution in original post

2 Replies
BookerE1
Contributor
Contributor


@Luz14 wrote:

Tengo una tabla que contiene los campos: Fecha Inicial y Fecha Final que definen la vigencia de cada uno de los registros. Quiero ligar esta tabla con un campo "Fecha" para que mis registros puedan filtrarse dentro de los meses en que se encuentren vigentes. Es decir, si uno de mis registros tiene fecha inicial '15-04-2023' y fecha final '25-06/2023' requiero que dicho registro aparezca cuando filtre los meses Abril, Mayo, Junio que son los meses donde el registro se mantuvo vigente.  Dog Needs Best

He intentado utilizar autogenerate() para crear las fechas intermedias, pero estoy pensando con arrays y entiendo que en Qlikview no hay sintaxis sobre eso, además de que lo que quisiera es crear "rellenar" con los registros faltantes que cubran las fechas intermedias ...pero quizá no sea la solución.

¿alguna idea? 😞


Entiendo que quieres filtrar tus registros por los meses en que estuvieron vigentes, usando los campos Fecha Inicial y Fecha Final. Hice una búsqueda web y encontré algunas posibles soluciones para tu problema.

Una forma de hacerlo es usando la función Month() de Qlikview, que devuelve el mes de una fecha como un número o un nombre. Puedes usar esta función para crear un campo calculado que contenga el mes de la Fecha Inicial y el mes de la Fecha Final de cada registro. Luego, puedes usar este campo para filtrar tus registros por el mes que quieras. Por ejemplo, si quieres filtrar por el mes de Abril, puedes usar una expresión como esta:

=Sum({<MesInicial={"Abril"}, MesFinal={"Abril"}>} Valor)

Esta expresión suma el campo Valor de los registros que tienen el mes de Abril tanto en el campo MesInicial como en el campo MesFinal. Puedes adaptar esta expresión a tus necesidades y campos.

Otra forma de hacerlo es usando la función IntervalMatch() de Qlikview, que crea una tabla intermedia que relaciona los valores de un campo con los intervalos de otro campo. Puedes usar esta función para crear una tabla que relacione el campo Fecha con los intervalos de los campos Fecha Inicial y Fecha Final de cada registro. Luego, puedes usar esta tabla para filtrar tus registros por el mes que quieras. Por ejemplo, si quieres filtrar por el mes de Abril, puedes usar una expresión como esta:

=Sum({<Fecha={"=Month(Fecha)='Abril'"}>} Valor)

Esta expresión suma el campo Valor de los registros que tienen el mes de Abril en el campo Fecha. Puedes adaptar esta expresión a tus necesidades y campos.

Espero que esta información te ayude a resolver tu problema. Si tienes alguna pregunta o comentario, por favor házmelo saber. Estoy aquí para ayudarte. 

Luz14
Contributor
Contributor
Author

Gracias por tu respuesta, actualmente solucioné mi problema usando un while y creando las fechas intermedias del rango. Agrego el código que utilicé por si es de ayuda a alguien con el mismo problema. Aún así me gustaría probar tu solución utilizando IntervalMatch() porque creo que me ayudaría a  disminuir los tiempos de procesamiento del script.

MinMaxDate:
Load Registro, 
Min(FechaInicio) AS MinDate, 
Max(FechaFinal)  AS MaxDate 
Resident Tmp
Group By Registro;
 
Right Join (Tmp)
Load Registro,
Date(MinDate + IterNo()-1,'MM/YYYY') as LogDate
Resident MinMaxDate
While Date(MinDate + IterNo()-1) <= MaxDate;
DROP Table MinMaxDate;