6 Replies Latest reply: Oct 31, 2016 11:33 AM by Luis Garcia RSS

    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.

       

       

       

        • Llaves sinteticas

          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

          • Llaves sinteticas

            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

             

            • Llaves sinteticas

              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.