Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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? 😞
@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 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.
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.