PDA

View Full Version : Tabla hechos->tabla catalogo->tabla catalogo



ajuarez
02-19-2009, 02:21 PM
Hola a todos, fijense que tengo mi tabla principal (hechos), la cual se conecta a una tabla catalogo1 mediante un campo, y esa tabla catalogo 1 se conecta a otra tabla catalogo2 donde viene una descripción que requiero.

Alguien podría indicarme el procedimiento que requiero o como hago esa doble conexión??

De antemano, muchas gracias.

tdidomenico
02-19-2009, 02:39 PM
En tu caso en lugar de un diseño "estrella" ("star"), deberías aplicar un diseño "copo de nieve" ("snowflake"). Es muy sencillo de aplicar en Mondrian, aquí tienes un ejemplo:

http://mondrian.pentaho.org/documentation/schema.php#Star_schemas

¡Saludos!

ajuarez
02-19-2009, 03:38 PM
Gracias nuevamente tdidomenico, leí la página que me hiciste favor de recomendar, y a mi entender seguí los pasos y me quedo de esta forma:



<Dimension type="StandardDimension" foreignKey="FOLIO" name="Bene">
<Hierarchy name="" hasAll="true" allMemberName="apoyo_id" primaryKey="FOLIO" primaryKeyTable="V_MONTO2" caption="">
<Join lefkey="FOLIO" rightAlias="FOLIO" rightKey="FOLIO">
<Table name="V_MONTO2" schema="GEQ_PAF" alias="">
</Table>
<Join lefkey="ID" rightKey="ID">
<Table name="SOLICITUD" schema="GEQ_PAF">
</Table>
<Table name="APOYOS" schema="GEQ_PAF">
</Table>
</Join>
</Join>
</Hierarchy>
</Dimension>
pero me arroja el siguiente error cuando la intento abrir con el workbench:


Error opening schema - Parsing Error: Could not openfile em31.xml
In Schema: In Cube: In Dimension: In Hierarchy: In Join: Attribute 'leftkey' is unset
and has no default value..
En qué podrá estar el error??

Gracias

tdidomenico
02-19-2009, 03:52 PM
Por lo pronto, en que pusiste "lefkey" en lugar de "leftkey" :p

¡Saludos!

ajuarez
02-19-2009, 04:33 PM
jajajaja :p, ok, ya lo corregí, quedo así:

<Dimension type="StandardDimension" foreignKey="FOLIO" name="Bene">
<Hierarchy name="" hasAll="true" allMemberName="apoyo_id" primaryKey="FOLIO" primaryKeyTable="V_MONTO2" caption="">
<Join leftkey="APOYO_SOL" rightAlias="FOLIO" rightKey="FOLIO">
<Table name="V_MONTO2" schema="GEQ_PAF" alias="">
</Table>
<Join leftkey="ID" rightKey="ID">
<Table name="SOLICITUD" schema="GEQ_PAF">
</Table>
<Table name="APOYOS" schema="GEQ_PAF">
</Table>
</Join>
</Join>
</Hierarchy>
</Dimension>
pero me sigue arrojando el mismo error, pero dejame explicar lo que entendí, porque igual ahi es donde esta mi error.
Mi tabla principal o de hechos se llama "V_MONTO2" la cual se conecta primero a "SOLICITUD" y el campo de conexión para ambas tablas es "FOLIO".
Después necesito que "SOLICITUD" se conecte con "APOYOS" y en este caso el Campo de "SOLICITUD" para conectarse es "APOYO_SOL" y el campo que conecta con ella en "APOYOS" es "ID".

en base a esto último hice bien mi estructura??

Gracias nuevamente.

tdidomenico
02-20-2009, 10:40 AM
La tabla de hechos no debería ser parte de la definición de dimensión. Sólo indicarás por qué campo la dimensión se une con ella.

Te recomiendo pegarle una mirada al archivo "steelwheels.mondrian.xml" que viene con la plataforma por defecto. Ahí podrás ver cómo se define la tabla de hechos y cómo se relacionan con ella las dimensiones.

¡Saludos!

ajuarez
02-20-2009, 12:17 PM
gracias nuevamente, fijate que estoy leyendo steelwheels.mondrian.xml, pero no encuentro un caso parecido al mio, ya que sus estructuras son solo a una tabla, no hacen un brinco doble como el mio... snif snif :(

tdidomenico
02-20-2009, 12:38 PM
A lo que me refería para que vieras ahí es cómo no se incluye la tabla de hechos en la dimensión. En tu caso usarías sólo un join dentro de la dimensión, uniendo tus dos tablas "SOLICITUD" y "APOYOS".


<Schema name="MiEsquema">
<Cube name="MiCubo" cache="true" enabled="true">
<Table name="V_MONTO2"></Table>
<Dimension foreignKey="FOLIO" name="MiDimension">
<Hierarchy hasAll="true" allMemberName="All Members" primaryKey="FOLIO" primaryKeyTable="">
<Join leftKey="APOYO_SOL" rightKey="ID">
<Table name="SOLICITUD"/>
<Table name="APOYOS"/>
</Join>
</Hierarchy>
</Dimension>
</Cube>
</Schema>

Ese es un ejemplo de cómo deberías armar la parte de la tabla de hechos y la dimensión en tu esquema. Falta la definición de los niveles de la dimensión y los measures, pero confío en que puedas agregarle eso por tu cuenta.

¡Saludos!

ajuarez
02-20-2009, 01:37 PM
uoooo, ok ahora lo checo y te comento, gracias!!

ajuarez
02-20-2009, 03:32 PM
Ya esta conectado, ya lo visualicé con el siguiente codigo:

<Dimension type="StandardDimension" foreignKey="FOLIO" name="Familia">
<Hierarchy hasAll="true" allMemberName="Miembros" primaryKey="FOLIO" primaryKeyTable="SOLICITUD">
<Join leftKey="APOYO_SOL" rightKey="ID">
<Table name="SOLICITUD" schema="GEQ_PAF">
</Table>
<Table name="APOYOS" schema="GEQ_PAF">
</Table>
</Join>
</Hierarchy>
</Dimension>

Lo que no logro es meter el nivel o la etiqueta.
Saludos

ajuarez
02-20-2009, 03:51 PM
je, ya pude, quedo así:

<Dimension type="StandardDimension" foreignKey="FOLIO" name="Familia">
<Hierarchy hasAll="true" allMemberName="Miembros" primaryKey="FOLIO" primaryKeyTable="SOLICITUD">
<Join leftKey="APOYO_SOL" rightKey="ID">
<Table name="SOLICITUD" schema="GEQ_PAF">
</Table>
<Table name="APOYOS" schema="GEQ_PAF">
</Table>
</Join>
<Level name="fami" table="APOYOS" column="APOYOS" type="String" uniqueMembers="true" levelType="Regular" hideMemberIf="Never" formatter="">
</Level>
</Hierarchy>
</Dimension>
Gracias!!!

PD: si quieres lo puedes cerrar el hilo ;)

tdidomenico
02-20-2009, 04:46 PM
Bueno, me alegro de que hayas podido hacerlo funcionar, y gracias por escribir la solución completa. :D

En cuanto al hilo, por lo general se acostumbra dejarlo abierto por si alguien tiene comentarios relacionados. Sólo en casos particulares donde se puede prestar a confusión pueden llegar a cerrarse.

¡Saludos!