Qlik Community

QlikView Documents

Documents for QlikView related information.

Announcements
QlikView Fans! We’d love to hear from you.
Share your QlikView feedback with the product team… Click here to participate in our 5-minute survey.
Rules, plus terms and conditions, can be found here.

Creacion Link Table

Not applicable

Creacion Link Table

Cuando se tiene un modelo de datos con más de una Fact Table,  pueden presentarse relaciones circulares y “Synthetic Key”.  La primera técnica para solucionar esto es unir las Fact Tables en una sola tabla usando la función Concatenate, siempre que compartan la mayoría de las Key.


Cuando no comparten la mayoria de las Keys, entonces es conveniente usar LinkTables.


Si se tiene una Fact Table de Ventas, y otra de Compras, y se desea saber, por ejemplo, las ventas y  las compras de un producto específico al seleccionar una fecha,  esto no se obtendría con la asociación natural que hace qlikview. Si se ejecutara sólo el PASO 1 del script debajo, se crean las tablas con la asociación natural de qlikview.


El siguiente script  muestra la creación de una Link Table y la Creación de una tabla  Calendario con las fechas de ambas fact tables, y se como se asicia con la Link Table.


Para más información sobre Link Table, ver referencias al final.



//PASO 1: ==========  CARGA DE DATOS  =============================================

Ventas:

LOAD * INLINE [

  IdVenta, IdProducto, Venta, FechaVenta

  V1, P1, 54, 28/11/2011

  V2, P2, 29, 29/11/2011

  V3, P2, 73, 30/11/2011

  V4, P2, 66, 01/12/2011

  V5, P1, 55, 01/01/2012];

Compras:

LOAD * INLINE [

  IdCompra, IdProducto, Compra, FechaCompra

  C1, P1, 61, 28/11/2011

  C2, P1, 29, 29/11/2011

  C3, P1, 55, 30/11/2011

  C4, P2, 88, 01/12/2011

  C5, P2, 84, 15/01/2012];

Productos:

LOAD * INLINE [

  IdProducto, Producto_Desc

  P1, Silla

  P2, Mesa ];


//PASO 2: ====== CREACIÓN DE FACT TABLES CON NUEVA KEY  ====================================

// Se renombrar las foreign key existentes en las Facts, que solo irán en la Link Table 

Fact_Ventas:

LOAD IdVenta,

     IdProducto as temp_idproducto,

     Venta,

     FechaVenta

  Resident Ventas; DROP Table Ventas;

Fact_Compras:

LOAD IdCompra,

     IdProducto as temp_idproducto,

     Compra,

     FechaCompra

     Resident Compras; DROP Table Compras;



//PASO 3: ============= CREACION DE LINK TABLE ===========================================

//Concatena todas las key y foreign key existentes en las Fact Tables.

//La LinkTable solo tiene campos de las Fact.

//Los Campos de las tablas de dimensiones no se incluyen en la LinkTable

LinkTable:

LOAD

IdVenta,

temp_idproducto      as IdProducto,

FechaVenta                as Fecha

Resident Fact_Ventas;

Concatenate (LinkTable)

LOAD IdCompra,

temp_idproducto      as IdProducto,

FechaCompra            as Fecha

Resident Fact_Compras;

DROP Field temp_idproducto;


//PASO 4: //==============  CREACION CALENDARIO MAESTRO   ==========================


Calendario_tmp:

LOAD

FechaCompra  as Fecha

Resident Fact_Compras;

Outer Join

LOAD

FechaCompra  as Fecha

Resident Fact_Compras;


Calendario:

LOAD

Fecha,

Year (Fecha)      as Año,

Month (Fecha)     as Mes,

day(Fecha)        as Dia

Resident Calendario_tmp;

DROP Table Calendario_tmp;


     

Referencia

Definicion y reglas generales sobre Link Table (ingles):

http://www.qliktips.com/2011/05/rules-for-creating-keylink-table-in.html

http://community.qlik.com/docs/DOC-1303

Ejemplo de Link Table (ingles):

http://dailyqv.blogspot.com.ar/2012/12/link-tables.html

Link Table para evitar referencia circular (ingles):

http://www.quickqlearqool.nl/?p=910

Labels (1)
Comments
sakamsureshbabu
Contributor

good

Not applicable

Very Helpful post. Thanks for sharing.

Not applicable

Very good, simple and useful.

Thank You!

ivan_diaz
Visitor

Buenos días Enmanuel,

Lo primero agradecerte el ejemplo ya que me ha ayudado a comprender como resolver el problema de los campos compartidos haciendo uso de las Tablas de enlace.

He revisado el código y creo que hay una errata en el punto 4 debido probablemente al copia y pega.

El Outer Join se debe realizar sobre los campos de la tabla Fact_Ventas. Sino el día 01/01/2012 dato para el que hay ventas pero no compras no se guarda en el calendario y me deja los campos Año Mes Día vacíos.

Se adjunta el código modificado:

//PASO 4: //==============  CREACION CALENDARIO MAESTRO   ==========================

Calendario_tmp:
LOAD
FechaCompra  as Fecha
Resident Fact_Compras;
Outer Join
LOAD
FechaVenta  as Fecha
Resident Fact_Ventas;

Version history
Revision #:
1 of 1
Last update:
‎10-16-2013 05:26 PM
Updated by: