Skip to main content
Announcements
Introducing Qlik Answers: A plug-and-play, Generative AI powered RAG solution. READ ALL ABOUT IT!
cancel
Showing results for 
Search instead for 
Did you mean: 
boizt
Contributor
Contributor

Filtro de calendario para varias tablas con fecha desde y hasta

Hola! Estoy en mis primeros meses de aprendizaje de qlik y me surge una duda a la hora de hacer un informe.

La idea es crear una tabla que muestre el precio a pagar por cada uno de los socios de un gimnasio.

El precio a pagar varía en función del producto contratado, pero todos los productos tienen una estructura común: Precio base, Descuento por forma de pago, Recargo por edad

Cada uno de estos conceptos del desglose tiene una fecha desde y una fecha hasta, de forma que periódicamente los precios, descuentos y recargos varían, pero el informe nos podría mostrar el precio pagado por un socio a una fecha dada. 

Con todo esto mi idea es tener las siguientes tablas:

- Socios: IDSocio, IDProductoContratado, Edad, Forma de pago

- Productos: IDProductoContratado, IDPrecio, IDRecargo, IDDescuento

- Precio: IDPrecio, Precio, Fecha Desde, Fecha Hasta

- Recargo: IDRecargo, Recargo, Fecha Desde, Fecha Hasta

- Descuento: IDDescuento, Descuento, Fecha Desde, Fecha Hasta

*Nota: Ahora mismo los precios, recargos y descuentos tienen una vigencia de 1 año, es decir, sus fechas de alta serán siempre 1 de Enero y la de baja 31 de diciembre, pero esto podría cambiar en un futuro.

 

A la hora de crear el informe con la tabla y el filtro de calendario me surgen varias dudas:

- ¿Como cargo los datos para evitar relaciones con fechas incompatibles? Es decir, si mi socio número 1 es alta desde 2021, la idea es mostrar 3 líneas para ese socio: 

  1. Año 2021: Con precio de 2021, Recargo de 2021 y Descuento de 2021
  2. Año 2022: Con precio de 2022, Recargo de 2022 y Descuento de 2022
  3. Año 2023: Con precio de 2023, Recargo de 2023 y Descuento de 2023

Cualquier otra combinación de precios, recargos y descuentos sería inutil y solo ralentizaría la carga, así que debería evitarse

- ¿Como creo un calendario que me permita seleccionar 1 día concreto y me muestre los precios a pagar por cada socio en ese dia? Tengo claro como crear una link table y una calendar que me permita hacer filtros de fecha seleccionando el tipo de fecha por el que deseo filtrar, pero desconozco como hacer un calendario que me filtre por los 3 conceptos al mismo tiempo y mas aun teniendo en cuenta que los conceptos tienen rangos de fecha.

 

Perdón por el tocho, pero creía conveniente explicar detalladamente el problema.

Espero que alguien me pueda ayudar.

 

Un saludo!

2 Replies
rubenmarin

Hola, usando set analysis puede obtener el valor de un rango con algo como:

Sum({<[Fecha Desde]={"<=$(=Max(Fecha))}, [Fecha Hasta]={">=$(=Max(Fecha))}>} Precio)+ Sum(...Recargo)-Sum(...Descuento)

Para un rango de fechas se puede complicar y sería mejor trabajar el script para dividir cada rango en días, meses, trimestres... ya depende de lo que quieras calcular, formas de pago, tipo de análisis... puede haber varias variables sobre como prepararlo.

Saludos.

eddiehall
New Member
New Member

Para evitar relaciones de fechas incompatibles, debe asegurarse de que su modelo de datos maneje correctamente los rangos de fechas para cada concepto (precio, recargo, descuento) y los relacione adecuadamente con cada miembro y producto.

Preprocese sus datos para garantizar la coherencia en los rangos de fechas de las tablas de precio, recargo y descuento.
Cargue sus datos en Qlik utilizando las asociaciones adecuadas. Por ejemplo, puede crear un calendario maestro y vincularlo a cada uno de sus campos de fecha.
En su script Qlik, cargue sus tablas de esta manera:

Socios:
LOAD IDSocio, IDProductoContratado, Edad, FormaDePago
FROM [path_to_your_socios_data];

Productos:
LOAD IDProductoContratado, IDPrecio, IDRecargo, IDDescuento
FROM [path_to_your_productos_data];

Precio:
LOAD IDPrecio, Precio, FechaDesde AS FechaDesdePrecio, FechaHasta AS FechaHastaPrecio
FROM [path_to_your_precio_data];

Recargo:
LOAD IDRecargo, Recargo, FechaDesde AS FechaDesdeRecargo, FechaHasta AS FechaHastaRecargo
FROM [path_to_your_recargo_data];

Descuento:
LOAD IDDescuento, Descuento, FechaDesde AS FechaDesdeDescuento, FechaHasta AS FechaHastaDescuento
FROM [path_to_your_descuento_data];

Cree un calendario maestro y vincúlelo a sus campos de fecha. Este calendario te permitirá filtrar por una fecha concreta y mostrar los precios, recargos y descuentos correspondientes a cada socio.

MasterCalendar:
LOAD
Date(MinDate + IterNo() - 1) AS CalendarDate
// Add other necessary calendar fields like Year, Month, Day, etc.
WHILE MinDate + IterNo() - 1 <= MaxDate;

LOAD
Min(FechaDesdePrecio) AS MinDate,
Max(FechaHastaPrecio) AS MaxDate
RESIDENT Precio;

JOIN
LOAD
Min(FechaDesdeRecargo) AS MinDate,
Max(FechaHastaRecargo) AS MaxDate
RESIDENT Recargo;

JOIN
LOAD
Min(FechaDesdeDescuento) AS MinDate,
Max(FechaHastaDescuento) AS MaxDate
RESIDENT Descuento;

Use a set analysis in your expressions to filter the correct date ranges. For example, to get the price for a specific date, you can use

Sum({<FechaDesdePrecio = {"<=$(=Max(CalendarDate))"}, FechaHastaPrecio = {">=$(=Max(CalendarDate))"}>} Precio)

Esto garantiza que solo obtenga los precios, recargos y descuentos válidos para la fecha seleccionada.

Si sigue estos pasos, podrá crear un informe completo que muestre los precios, recargos y descuentos correctos para cada miembro en una fecha específica, garantizando la coherencia de los datos y evitando combinaciones de datos innecesarias.

¡Espero que esto ayude! Si tiene más preguntas, no dude en pregunta Chequea aquí.

Atentamente,