Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Llaves sinteticas

Hola buenos dias, tengo un proyecto que se me ha vuelto algo complejo , voy a tratar de explicar de que se trata

Tengo las siguientes tablas:

- VENTAS cuyos campos son : año, mes,nit,valorventa

- DEVOLUCIONES con los campos: año,mes,nit,concepto, valordevolucion.

QlikView me genera una llave sintetica con los campos en comun año, mes,nit, estas dos tablas ; lo cual yo considero que esta bien. Si embargo en el curso que recibi el profesor insistia mucho en que debiamos evitar la generacion de las llaves sintenticas.

La pregunta es , si las llaves que genera qlikview por la relacion de varias tablas con varios campos que tienen en comun, no debe usarse, entonces cual es la mejor práctica para generar un gréfico comparativo entre datos que estan en ellas y las une no un campo sino varios.

Gracias por las aclaraciones que me puedan dar al respecto.

1 Solution

Accepted Solutions
Not applicable
Author

Hola Mónica,

Lo que comenta Héctor es lo más recomendable. Puedes optar por generar llaves compuestas, o concatenar las tablas y agregar banderas para saber qué tipo de registros estás accediendo, después puedes filtrar los registros por medio de set analysis y las banderas.

La ventaja de concatenar las tablas es que en caso de que algún valor no exista en alguna de las dos tablas, por ejemplo un mes o año existente en devoluciones no existe en Ventas, no existe problema ya que cada registro tiene una bandera que lo identifica. Por el contrario esto si representaría un problema si las ligaras por medio de una llave compuesta, pues en tal caso no se ligarían correctamente los registros.

Por lo tanto la solución más recomendable es la de concatenar las tablas.

View solution in original post

6 Replies
hector
Specialist
Specialist

Hola, un par de enfoques es concatenar las 2 tablas y transformarlas en una sola, asi tendrás una sola gran tabla con campos en comun, sino quizas puedas enlazar las dos tablas con una llave creada campo1_campo2_campo3, asi creas tu llave personalizada y las tablas se comunicarian....

tienes algun ejemplo de tu nube con las llaves sinteticas, una imagen está bien.

Saludos

Not applicable
Author

hola Hector, gracias por tu respuesta. Voy a probar con la primera opcion que me parece bastante buena.

Te adjunto mi nube de las tablas con todos los campos que tienen:

Not applicable
Author

Hola Monica!

el hecho de que te genere una llave sintetica, en si no es que sea malo, se recomienda no tener llaves sinteticas porque puede ser que afecte al perfomance de los modelos por como funciona qlikview de relacion en la nube de datos, el punto es que si tienes llaves sinteticas no significa que sea malo, se recomiendo no tenerlas, si las quieres eliminar, puedes crear un campo o llave compuesta, por ejemplo, si la relacion de tus tablas como lo mencionas son con los campos que tienes en comun, entonces puedes generar un campo compuesto, por ejemplo: año&mes&nit as Key en la tabla de ventas y en la tabla de devoluciones tambien crear un campo con año&mes&nit as Key, y renombrar estos campos en cualquiera de las tablas ya sea en ventas o en devoluciones ejemplo año as añoventa, mes as mesventa y nit as niventa, para que entonces no te genere las tablas sinteticas y si te mantenga la relacion en las tablas ventas y devoluciones

espero te sea de ayuda

Not applicable
Author

Hola Mónica,

Lo que comenta Héctor es lo más recomendable. Puedes optar por generar llaves compuestas, o concatenar las tablas y agregar banderas para saber qué tipo de registros estás accediendo, después puedes filtrar los registros por medio de set analysis y las banderas.

La ventaja de concatenar las tablas es que en caso de que algún valor no exista en alguna de las dos tablas, por ejemplo un mes o año existente en devoluciones no existe en Ventas, no existe problema ya que cada registro tiene una bandera que lo identifica. Por el contrario esto si representaría un problema si las ligaras por medio de una llave compuesta, pues en tal caso no se ligarían correctamente los registros.

Por lo tanto la solución más recomendable es la de concatenar las tablas.

Not applicable
Author

Gracias a los dos por sus valiosas respuestas.

Soy algo nueva en la herramienta. En este mismo proyecto utilice le INNER JOIN para unir otras tablas. Voy entonces a probar unificando las tablas y voy a investigar sobre lo que menciona Carlos del tema set analysis y las banderas.

gracias a los dos.

Monica

luiskeyrus
Partner - Contributor III
Partner - Contributor III

Fenomenalmente explicado carlos.reyes.qv