Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hola,
Estoy generando mi modelo de datos y se me crean muchas tablas con claves sintéticas.
El problema es que casi todas las tablas de mi modelo contienen 3 campos iguales, que son los que voy a usar para filtrar en casi todas las vistas, y por estos principalmente se me generan varias claves .
Mi intención era generar una "Link Table", es decir crear manualmente una tabla que me almacenara estos campos comunes para que todos se relacionaran con esa tabla en lugar de distintas claves.
¿A alguien se le ocurre como hacerlo? ¿ o alguna indicación diferente?
He leído lo de concatenar campos para crear claves pero no es exactamente lo que busco.
Un saludo,
Maria
Hola María
Tabla1:
LOAD campo1, campo2, campo3,
Autonumber(campo1 & campo2 & campo3) as key
...
Tabla2:
LOAD campo1, campo2, campo3,
Autonumber(campo1 & campo2 & campo3) as key
...
Tabla3:
LOAD campo1, campo2, campo3,
Autonumber(campo1 & campo2 & campo3) as key
LinkTable:
LOAD DISTINCT campo1, campo2, campo3,
Autonumber(campo1 & campo2 & campo3) as key
Resident Table1
LinkTable:
LOAD DISTINCT campo1, campo2, campo3,
Autonumber(campo1 & campo2 & campo3) as key
Resident Table2
LinkTable:
LOAD DISTINCT campo1, campo2, campo3,
Autonumber(campo1 & campo2 & campo3) as key
Resident Table3
DROP FIELD campo1, campo2, campo3 from Table1;
DROP FIELD campo1, campo2, campo3 from Table2;
DROP FIELD campo1, campo2, campo3 from Table3;
Espero haberte ayudado,
Joaquín
Hola
Aloha
Ups, lo publiqué antes de tiempo... ya lo he modificado ...
Hola María:
Empieza por aquí https://community.qlik.com/blogs/qlikviewdesignblog/2013/04/16/synthetic-keys#comment-33794
Una posibilidad es DROP FIELDS después de crear la link table,
Por último, copia y pega una parte del script y será más fácil ayudarte
Saludos
Joaquín
Puede usar Qualify *; para que se agreguen los nombres de las tablas antes ddel nombre de campo.
Otra cosa seria concatenar los campos para formar una clave unica:
Load
Campo1 & Campo2 & Campo3 FROM... ;
y lo mismo haces en tus otras tablas.
La unica forma de evitar claves sinteticas es quitando o renombrando campos en comun. Puedes usar las funciones AS o Rename field. Ej:
Load
Campo1 AS miCampo FROM miTabla;
O
Load Campo1 from miTabla;
Rename field Campo1 to miCampo;
Juan
Hola María
Tabla1:
LOAD campo1, campo2, campo3,
Autonumber(campo1 & campo2 & campo3) as key
...
Tabla2:
LOAD campo1, campo2, campo3,
Autonumber(campo1 & campo2 & campo3) as key
...
Tabla3:
LOAD campo1, campo2, campo3,
Autonumber(campo1 & campo2 & campo3) as key
LinkTable:
LOAD DISTINCT campo1, campo2, campo3,
Autonumber(campo1 & campo2 & campo3) as key
Resident Table1
LinkTable:
LOAD DISTINCT campo1, campo2, campo3,
Autonumber(campo1 & campo2 & campo3) as key
Resident Table2
LinkTable:
LOAD DISTINCT campo1, campo2, campo3,
Autonumber(campo1 & campo2 & campo3) as key
Resident Table3
DROP FIELD campo1, campo2, campo3 from Table1;
DROP FIELD campo1, campo2, campo3 from Table2;
DROP FIELD campo1, campo2, campo3 from Table3;
Espero haberte ayudado,
Joaquín
Hola María,
estos links te ayudaran:
Claves Sintéticas:
https://community.qlik.com/thread/10279
https://community.qlik.com/blogs/qlikviewdesignblog/2013/04/16/synthetic-keys
Synthetic keys: to have or not to have ?
Creación de Link Table:
https://community.qlik.com/docs/DOC-5162
Caso de Link Table:
Joining Tables & Linking Tables = Headache
Saludos,
Gracias a todos por los comentarios.
Voy a verlo y os voy contando!!
Maria
Retomo la conversación algo tarde pero conforme he podido ir probando...
Lo que me comentas lo he probado cuando tengo una clave sintética y genial, la verdad es que ademas de que creo q es util me "aclara" bastante el modelo de datos.
El problema me surge ahora, ya que en mi modelo no tengo una sola clave sintética sino 10...
La primera que se me genera es con los campos Mes, y Filial, y las demás se generan a partir de esa pero añadiendo campos. Por ejemplo con "Mes, Filial, Centro" o "Mes, Filial, Area" o "Mes, Filial, Area, Centro" y asi sucesivamente.
¿Como lo harías en este caso??
Saludos,
Maria