concatenación de fact tables

90 views
Skip to first unread message

Anónimo

unread,
Sep 3, 2015, 9:53:14 AM9/3/15
to qlikviewapuntes
Hola,

Estamos evaluando comprar Qlickview para nuestra organización pero tenemos muchas fact tables. Los partners nos hablan de concatenar las tablas, pero dudo de que sea una buena propuesta.Pues la tablas tienen muchos campos diferentes aunque tienen unos comunes.

1-Creo que será caótico de leer por tener muchos campos vacíos. ¿Es así?.¿Vuestra opinión?.

2-Creo que puedo tener problemas al añadir registros que me haga cálculos incorrectamente. Al haber más registros me haga el contaje mal. ¿Es así?.

3-Mi gran preocupación imaginemos 2 tablas una de farmacia y otro de pruebas radiológicas.Si están unidas en una sola tabla. Como puedo saber si pacientes del medicamento x las pruebas que han tenido. Pues entiendo que es una pregunta entre 2 tablas. Al ser una única tabla como ¿Qlikview puede contestarme?. Esto para mi se respondería con una consulta  entre las dos tablas mediante un join. Las dos tablas tienen en común únicamente el identificador de paciente.

Gracias por sus respuestas.





Enmanuel Santana

unread,
Sep 4, 2015, 9:37:48 AM9/4/15
to qlikviewapuntes

Hola,

Te comento que para estos casos se usa link table o concatenar. En mi experiencia siempre funciona más concatenar.

 

Sobre el punto uno y dos, los campos vacíos se registran como nulos, y no afectan los cálculos finales. Qlikview está pensado para trabajar con nulos (fíjate en la referencia que copio al final).

Sobre el punto tres, no hace falta el join, está resuelto con la concatenación. Al seleccionar el medicamento A en la aplicación de usuario, también seleccionas todas las Pruebas Radiológicas que fueron hechas por los clientes que consumieron el medicamento A.

 

La ventaja de la concatenación es la simpleza y mejor performance. La desventaja es que ocupa más espacio en memoria.

 

 

Si buscas el tema en https://community.qlik.com , los comentarios son a favor de concatenar, más que linktable.

 

Copio algunos link

https://community.qlik.com/blogs/qlikviewdesignblog/2013/05/17/concatenate-vs-link-table

https://community.qlik.com/blogs/qlikviewdesignblog/2012/10/26/mixed-granularity

https://community.qlik.com/blogs/qlikviewdesignblog/2012/09/12/to-join-or-not-to-join#comment-5658

 

Sobre manejo de nulos en qlikview

https://community.qlik.com/docs/DOC-3155

 

Sobre link table. Fíjate en las referencias al final de la nota

http://qlikviewapuntes.blogspot.com.ar/2013/12/creacion-link-table.html

 

 

espero te sirva

 

 

suerte

Anónimo

unread,
Sep 4, 2015, 11:06:59 AM9/4/15
to qlikviewapuntes
Hola,

Muchas gracias por tus respuestas Enmanuel. No sabía que qlikview funcione de esta manera ya que estoy acostumbrado a otros tipos de base de datos.

Si en otra base de datos programa tipo spss  si concateno 2 tablas. Tendría un resultado así.

paciente medicamento  Radiología
1                    A             
2                    B
3                    A
1                                           si
2                                           no
3                                            si


si hago select if medicamento=A  med daría un resultado así

paciente medicamento  Radiología
1                    A             
3                    A

Pero no podría saber si el paciente ha tenido radiología o no.

¿ me confirmas que Qlickview, me haría el filtro también por el id sin estar relacionadas.

Gracias por tu ambilísima atención y pot tu gran blog.







Enmanuel Santana

unread,
Sep 7, 2015, 11:48:29 PM9/7/15
to qlikviewapuntes
NO, no trabaja así. En el escenario que planteas la union de tablas seria por outer join, algo así:

LOAD * INLINE [
    paciente, medicamento
    1,  A
    2,  B
    3,  A]
;

Outer Join

LOAD * INLINE [
    paciente,  Radiología
    1, si
    2, no
    3, si]
;


Para tener resultados que quieres con un modelo relacional, fijate en el pdf al final de esta nota:

espero te sirva
suerte!

Anónimo

unread,
Sep 8, 2015, 4:25:50 AM9/8/15
to qlikviewapuntes
Muchas gracias de nuevo,


las tablas serían más bien así (pero con muchos más campos). Así que un join no creo que valiera.


paciente medicamento  fecha_farmacia 
1                    A               20150101       
1                    A               20150102
1                    B               20150101
2                    B               20150101
2                    D               20150101
3                    A               20150104


paciente   Radiologia       fecha_radiologia
1                    x              20150101       
1                    y               20150101
2                    y               20150306
2                    z               20150101




si las concateno, 

paciente medicamento  fecha_farmacia    Radiologia     fecha_radiologia
1                    A               20150101       
1                    A               20150102
1                    B               20150101
2                    B               20150101
2                    D               20150101
3                    A               20150104
1                                                       x              20150101       
1                                                       y               20150101
2                                                       y               20150306
2                                                       z               20150101




no podría contestar que pacientes del medicamento A tiene pruebas de radiología y cuales son.  y con un join. Me duplicaría casos. Porque haría el producto Cartesiano.¿No és así?.

Gracias por tu ayuda y por las molestias que te ocasiono.










Reply all
Reply to author
Forward
0 new messages