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: 
alex_millan
Creator III
Creator III

Ayuda para el modelado de datos

Buenas tardes,

agradecería vuestra ayuda respecto a un modelo de datos, porque estoy un poco saturado y no acabo de dar con la tecla

Empecé por el Modelo1 que adjunto, el cuál como podéis ver me causaba un loop. Lo solucioné con el Modelo2 que adjunto, desvinculando el campo Periodo entre la Tabla3 y la tabla Calendario.

Este modelo me funcionaba en principio correctamente con los objetos que estaba usando. En el documento, el selector corresponde al campo Periodo con lo que, cuando necesitaba datos de la Tabla3, utilizaba SET para forzar los valores del campo PeriodoObjetivo según lo seleccionado en el campo Periodo.

El problema se me presenta al crear un gráfico y utilizar el campo Periodo como dimensión. El gráfico tiene dos expresiones: la primera se nutre de la Tabla2 y enlaza sin problemas por el campo dimensión, pero la segunda se nutre de la Tabla3 y al no enlazar, no me da el cálculo correcto para cada valor de la dimensión.

Os adjunto el resultado que me da el Chart: el total facturado por subgrupo en cada periodo se calcula bien, pero el objetivo por Subgrupo en cada periodo se calcula mal, ya que da un valor constante en todos los periodos (corresponde a la suma de los diferentes objetivos de los periodos indicados) ya que no consigo que calcula para cada Periodo su correspondiente PeriodoObjetivo.

El Chart utiliza el campo Periodo como dimensión. La variable vPeriod corresponde al periodo actual. Las expresiones que uso son:

Sum({<Periodo = {'<=$(vPeriod)'}, Fecha=>}Importe)

Sum(TOTAL<ClienteGrupo,PeriodoObjetivo>Aggr(

     Only({<PeriodoObjetivo = {'<=$(vPeriod)'}>}Objetivo)

     ,ClienteSubgrupo, ClienteGrupo, PeriodoObjetivo)

)

Si utilizo como dimensión el campo Periodo, la primera expresión se calcula bien y la segunda mal.

Si utilizo como dimensión el campo PeriodoObjetivo la segunda se calcula bien y la primera mal.

Cualquier sugerencia que aportéis será bienvenida!

Gracias de antemano y saludos!

Alex

1 Solution

Accepted Solutions
JoaquinLazaro
Partner - Specialist II
Partner - Specialist II

Hola Chicos;

Yo haría un join para llevar los campos de la tabla 1 primero a la tabla 2 y otro join para llevarlos a la tabla 3; después un drop table de la tabla 1.

En la tabla tres necesitas convertir el periodo objetivo a periodo

Por último haces un concatenate para llevar los datos de la tabla 3 a la tabla 2 y drop table de la tabla 3

...

Ya tienes una tabla con todos los datos vinculada al calendario

Suerte

Joaquín

View solution in original post

7 Replies
sorrakis01
Specialist
Specialist

Hola Alex,

la variable vPeriod a que es igual en tu caso?


Saludos,

alex_millan
Creator III
Creator III
Author

Hola Jordi,

La variable vPeriod corresponde al periodo actual, con datos de hoy corresponde a 201601. Los datos de periodo tienen formato YYYYMM.

Un saludo.

JoaquinLazaro
Partner - Specialist II
Partner - Specialist II

Hola Chicos;

Yo haría un join para llevar los campos de la tabla 1 primero a la tabla 2 y otro join para llevarlos a la tabla 3; después un drop table de la tabla 1.

En la tabla tres necesitas convertir el periodo objetivo a periodo

Por último haces un concatenate para llevar los datos de la tabla 3 a la tabla 2 y drop table de la tabla 3

...

Ya tienes una tabla con todos los datos vinculada al calendario

Suerte

Joaquín

alex_millan
Creator III
Creator III
Author

Gracias por la sugerencia Joaquín, voy a probarlo a ver que tal funciona y te comento.

En principio prefería mantener las tablas 1, 2 y 3 como entidades separadas ya que la estructura que adjuntaba está muy recortada pero las tablas tienen muchos más campos, con lo que aumentaría los datos cargados significativamente al juntar las tablas. De todas maneras, pruebo y así reviso como operaría.

Un saludo,

Alex

JoaquinLazaro
Partner - Specialist II
Partner - Specialist II

Hola Alex:

Entonces añade dos claves externas en la tabla2 que te permita apuntar al resto de campos de las tablas 1 y 3

Saludos

Joaquín

alex_millan
Creator III
Creator III
Author

Buenos días,

al final seguí la sugerencia de Joaquín: llevé los datos de la Tabla1 a la Tabla2, y generé una clave con PeriodoSubgrupo. En la Tabla3 únicamente dejé dos campos PeriodoSubgrupo y Objetivo. Con esto quedó solucionado el problema.

Eso sí, tal y como temía, el volumen de datos en la estructura completa me ha aumentado un 80%. Pese a ello, dado que el rendimiento de la aplicación no se resiente y que no preveo un aumento significativo del conjunto de datos, doy el tema por cerrado.

Muchas gracias por la ayuda Joaquín!

Y a ti también Jortxi!

Un saludo,

Alex

JoaquinLazaro
Partner - Specialist II
Partner - Specialist II

Perfecto Alex, hasta la próxima