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: 
mena_ricardo
Partner - Contributor II
Partner - Contributor II

Duda respecto a Master Calendar

Tengo una tabla de facturas, entonces tengo que para una factura, tengo 2 fechas: fecha de creación y fecha de vencimiento (tengo más pero son las más importantes)

Para conseguir todas las fechas tengo creado un master calendar, pero lo tengo por separado, creándome un Date Island, ya que no puedo hacer el join por fecha de creación, ni por fecha de vencimiento, realmente debería ser contra las dos fechas.

En el dashboard, tengo un campo de filtrado por el campo Date del master calendar. Cuando selecciono una fecha de ese combo, no pasa nada, puesto que no está relacionado con nada, pero luego en las fómulas tengo que me sume el importe cuando la fecha de creación sea igual a la selección del campo Date... todo eso en un set analysis. Lo mismo para la fecha de vencimiento.

Esto me provoca un rendimiento regular...

El problema lo tengo cuando en un mismo gráfico quiero mostrar las facturas que se han creado en mayo y las que han vencido en el mismo mes...

No sé como trabajar mejor con fechas. Había pensado en una link table, pero sólo tengo una tabla con dos fechas, no dos tablas con una fecha cada una... y no hay posibilidad de partir la tabla en dos, salvo que sea la única opción.

En este modelo, tengo más tablas, unidas con una link table ya, pero se unen por campos que identifican al proveedor y nada tiene que ver con fechas, tampoco sé si podría tener dos link tables.

modelo.PNG

1 Solution

Accepted Solutions
hector_munoz
Specialist
Specialist

Buena pregunta...

Ahí lo que puedes hacer es (estos pasos van detrás del punto 2):

     2.1 Crear una tabla temporal donde crees (AUTOGENERATE) un registro con la fecha en el formato numérico que tengas en la tabla CALENDARIO_FACTURAS para cada uno de los días desde la fecha inicial hasta el día actual o final de año, como elijas.

     2.2 Cargas los registros de la tabla temporal en la tabla CALENDARIO_FACTURAS donde la fecha en formato numérico no se encuentre ya allí (con la combinación de las funciones Not() y Exists()).

Espero que te sirva...

Saludos,
H

View solution in original post

5 Replies
hector_munoz
Specialist
Specialist

Hola Ricardo,

Si para el calendario de la aplicación (o para una gran parte de la funcionalidad) las fechas de análisis de los usuarios son de una misma tabla: Tabla FACTURAS y fechas [Fecha Creación Factura] y [Fecha Vencimiento Factura]; una solución muy simple sería la siguiente:

  1. Creas una tabla CALENDARIO_FACTURAS y añades las distintas fechas númericas de la fecha de creación de la factura: Num([Fecha Creación Factura]) o Num(Date([Fecha Creación Factura]), 'YYYYMMDD').
  2. A la tabla anterior añades de igual manera las distintas fechas númericas de la fecha de vencimiento de la factura.
  3. A la tabla anterior le añades todos los campos de la "familia": fecha en formato p.e. "DD/MM/YYYY", año, mes, semestre, trimestre, semana, ...
  4. Creas una tabla LINK_CALENDARIO_FACTURAS en la que añadas los siguientes campos: [ID Factura], valor numérico de [Fecha Creación Factura] y 'C' AS [Tipo Fecha Factura].
  5. A la tabla anterior añades de igual manera los siguientes campos: [ID Factura], valor numérico de [Fecha Vencimiento Factura] y 'V' AS [Tipo Fecha Factura]. Tras este paso ya tienes unidas las tablas de FACTURAS y de CALENDARIO FACTURAS mediante la tabla de link LINK_CALENDARIO_FACTURAS: con FACTURAS gracias al campo [ID Factura], y con CALENDARIO_FACTURAS gracias al campo con el valor numérico de las fechas.

De esta forma tienes un calendario canónico o maestro, que no es una isla, y con el que al seleccionar una fecha tienes "disponibles" las facturas que se creen o que venzan en esa fecha.

No sé si me he logrado explicar... Espero que te sirva!

Saludos,
H

mena_ricardo
Partner - Contributor II
Partner - Contributor II
Author

Muchas gracias por la respuesta, pero me surge una duda, de esta forma, si hay algún día que no tenga facturas creadas o vencidas... no tendré esa fecha.

¿Cómo se podría combinar con un master calendar?

hector_munoz
Specialist
Specialist

Buena pregunta...

Ahí lo que puedes hacer es (estos pasos van detrás del punto 2):

     2.1 Crear una tabla temporal donde crees (AUTOGENERATE) un registro con la fecha en el formato numérico que tengas en la tabla CALENDARIO_FACTURAS para cada uno de los días desde la fecha inicial hasta el día actual o final de año, como elijas.

     2.2 Cargas los registros de la tabla temporal en la tabla CALENDARIO_FACTURAS donde la fecha en formato numérico no se encuentre ya allí (con la combinación de las funciones Not() y Exists()).

Espero que te sirva...

Saludos,
H

mena_ricardo
Partner - Contributor II
Partner - Contributor II
Author

Finalmente con un master calendar y una link table parece que he llegado a la solución. Aún tengo que hacer más pruebas.

Gracias por la ayuda

hector_munoz
Specialist
Specialist

Me alegro! Esta solución en particular me gusta mucho porque puedes ver fácilmente las creadas y las vencidas con un clic...

Saludos,
H