<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Haciendo Cubos &#187; Mejores prácticas</title>
	<atom:link href="http://haciendocubos.com/category/mejores-practicas/feed/" rel="self" type="application/rss+xml" />
	<link>http://haciendocubos.com</link>
	<description>Un blog acerca de data warehousing, cubos, Artus y BI</description>
	<lastBuildDate>Fri, 11 May 2012 08:03:16 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='haciendocubos.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Haciendo Cubos &#187; Mejores prácticas</title>
		<link>http://haciendocubos.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://haciendocubos.com/osd.xml" title="Haciendo Cubos" />
	<atom:link rel='hub' href='http://haciendocubos.com/?pushpress=hub'/>
		<item>
		<title>&#191;Qu&#233; va en una dimensi&#243;n?</title>
		<link>http://haciendocubos.com/2008/06/30/qu-va-en-una-dimensin/</link>
		<comments>http://haciendocubos.com/2008/06/30/qu-va-en-una-dimensin/#comments</comments>
		<pubDate>Mon, 30 Jun 2008 22:25:34 +0000</pubDate>
		<dc:creator>Adrian</dc:creator>
				<category><![CDATA[Mejores prácticas]]></category>

		<guid isPermaLink="false">http://cubos.wordpress.com/2008/06/30/qu-va-en-una-dimensin/</guid>
		<description><![CDATA[Varias veces me ha ocurrido que al trabajar con un data warehouse me encuentro con que en la dimensión producto viene todo lo imaginariamente posible. Por ejemplo, si estamos hablando que si la información viene de un sistema de dulcería, en el catálogo de productos vienen todos los productos vendibles en ella: paletas, dulces, refrescos, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=haciendocubos.com&#038;blog=1299221&#038;post=351&#038;subd=cubos&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://cubos.files.wordpress.com/2008/06/image.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="190" alt="image" src="http://cubos.files.wordpress.com/2008/06/image-thumb.png?w=222&h=190" width="222" border="0"></a> </p>
<p>Varias veces me ha ocurrido que al trabajar con un data warehouse me encuentro con que en la dimensión producto viene todo lo imaginariamente posible. Por ejemplo, si estamos hablando que si la información viene de un sistema de dulcería, en el catálogo de productos vienen todos los productos vendibles en ella: paletas, dulces, refrescos, palomitas o rosetas de maíz, chocolates, etc.</p>
<p>&#8230; pero también vienen escobas, el detergente para lavar los pisos, el aceite para el maíz inflado, los vasos desechables y hasta el papel higiénico del baño.</p>
<p>¿Qué sucede? Pues que el sistema sirve tanto para vender que como sistema de inventarios o almacén. Así que el catálogo de producto almacena todo.</p>
<p>Pregunta ¿entonces en un modelo de ventas de dulcería, la dimensión de productos deberá tener todos estos artículos aunque no se vendan?</p>
<p>Yo creo que nó.</p>
<p>Creo que lo correcto es crear 2 dimensiones: productos y materias primas. Los 2 se llenarán a partir del único catálogo de productos. Debemos extraer solo aquello que tiene que ver con ventas y depositarlo en el modelo de ventas. Lo otro irá al modelo de inventario o almacén.</p>
<p>Recuerden que a la información de un data warehouse o cubo &#8220;se le habrán aplicado procesos de transformación y limpieza&#8221;.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/cubos.wordpress.com/351/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/cubos.wordpress.com/351/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cubos.wordpress.com/351/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cubos.wordpress.com/351/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cubos.wordpress.com/351/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cubos.wordpress.com/351/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cubos.wordpress.com/351/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cubos.wordpress.com/351/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cubos.wordpress.com/351/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cubos.wordpress.com/351/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cubos.wordpress.com/351/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cubos.wordpress.com/351/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cubos.wordpress.com/351/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cubos.wordpress.com/351/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cubos.wordpress.com/351/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cubos.wordpress.com/351/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=haciendocubos.com&#038;blog=1299221&#038;post=351&#038;subd=cubos&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://haciendocubos.com/2008/06/30/qu-va-en-una-dimensin/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cfd55e2d559d0d24e0bd295058e9ff47?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">Adrian</media:title>
		</media:content>

		<media:content url="http://cubos.files.wordpress.com/2008/06/image-thumb.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>
	</item>
		<item>
		<title>Llaves surrogadas o sustitutas.</title>
		<link>http://haciendocubos.com/2008/06/12/llaves-surrogadas-o-sustitutas/</link>
		<comments>http://haciendocubos.com/2008/06/12/llaves-surrogadas-o-sustitutas/#comments</comments>
		<pubDate>Thu, 12 Jun 2008 13:12:44 +0000</pubDate>
		<dc:creator>Adrian</dc:creator>
				<category><![CDATA[Diseño]]></category>
		<category><![CDATA[Mejores prácticas]]></category>
		<category><![CDATA[Data Warehouse]]></category>

		<guid isPermaLink="false">http://cubos.wordpress.com/2008/06/12/llaves-surrogadas-o-sustitutas/</guid>
		<description><![CDATA[Esta es una de las buenas prácticas que a mi juicio muchas veces se omiten en el diseño de un data warehouse. Las llaves surrogadas o sustitutas son una llave generada artificialmente y que viene a sustituir el campo llave de la dimensión. Para ponerlo en bits y bytes, lo que hacemos es diseñamos la [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=haciendocubos.com&#038;blog=1299221&#038;post=341&#038;subd=cubos&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://cubos.files.wordpress.com/2008/10/image.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="182" alt="image" src="http://cubos.files.wordpress.com/2008/10/image-thumb.png?w=176&h=182" width="176" border="0"></a> </p>
<p>Esta es una de las buenas prácticas que a mi juicio muchas veces se omiten en el diseño de un data warehouse. Las llaves surrogadas o sustitutas son una llave generada artificialmente y que viene a sustituir el campo llave de la dimensión.</p>
<p>Para ponerlo en bits y bytes, lo que hacemos es diseñamos la tabla de tal forma que la llave primara sea un campo con un tipo de dato entero y que además tenga la propiedad &#8220;autoincrement&#8221; ( o identity, o lo que sea, todo depende de la base de datos utilizada). En la tabla existe un campo que servirá para almacenar la llave original. Al llenar la tabla se generarán valores numéricos que usaremos en vez del campo clave original.</p>
<p>Las ventajas son muchas. Para mí la principal es mejorar el tiempo de respuesta de la base de datos ya que buscar entre números enteros es lo que menos trabajo le cuesta a la base de datos; pero también hay otras, por ejemplo, si estamos juntando en un data warehouse información de sistemas transaccionales diferentes y cada uno de ellos tienen llaves que no se parecen en nada la una de la otro, las llaves surrogadas o sustitutas nos permitirán tener una llave homogénea para ambos sistemas.</p>
<p>Nos permite también resolver cosas como por ejemplo mantener la historia en el tiempo y a la vez separarla. Por ejemplo si queremos que un vendedor que ahora pertenece a otra región, su historia se conserve en el data warehouse en la región original, lo que hacemos es crear un nuevo registro en la tabla de vendedores con una nueva llave sustituta para ese vendedor y usamos esa nueva llave para almacenar las ventas de ese cliente a partir de la fecha que el movimiento ocurre. De esta forma en el data warehouse tendremos las 2 cosas. </p>
<table cellspacing="0" cellpadding="2" width="474" border="0">
<tbody>
<tr>
<td valign="top" width="103"><strong>IdVendedor</strong></td>
<td valign="top" width="116"><strong>CveVendedor</strong></td>
<td valign="top" width="145"><strong>Vendedor</strong></td>
<td valign="top" width="105"><strong>Región</strong></td>
</tr>
<tr>
<td valign="top" width="104">2345</td>
<td valign="top" width="117">A00X456</td>
<td valign="top" width="145">Miguel Gutierrez</td>
<td valign="top" width="105">Norte</td>
</tr>
<tr>
<td valign="top" width="104">&#8230;</td>
<td valign="top" width="118">&#8230;</td>
<td valign="top" width="145">&#8230;</td>
<td valign="top" width="105">&nbsp;</td>
</tr>
<tr>
<td valign="top" width="104">5467</td>
<td valign="top" width="119">A00X456</td>
<td valign="top" width="145">Miguel Gutierrez</td>
<td valign="top" width="105">Centro</td>
</tr>
</tbody>
</table>
<p>Si queremos la historia del vendedor podemos hacer la consulta por el # de Vendedor lo cual abarcará a las 2 llaves (la nueva y la antigua).</p>
<p><font face="Courier New" size="2">select sum(ventas)<br />from HechosVentas A<br />join DimVendedores B on a.idVendedor = b.IdVendedor<br />where b.CveVendedor = &#8216;A00X456&#8242;</font></p>
<p>Si queremos las ventas de cada región:</p>
<p><font face="Courier New" size="2">select region, sum(ventas)<br />from HechosVentas A<br />join DimVendedores B on a.idVendedor = b.IdVendedor<br />group by region</font></p>
<p>El modelo por sí solo lo resolverá.</p>
<p><a href="http://cubos.files.wordpress.com/2008/06/surrogadas.png"><img height="379" alt="Surrogadas" src="http://cubos.files.wordpress.com/2008/06/surrogadas-thumb.png?w=504&h=379" width="504" border="0"></a></p>
<p>Por cierto, en el modelo arriba mostrado (que no tiene nada que ver con el ejemplo de regiones y vendedores que les daba) pueden ver que yo por ejemplo a todas las llaves usrrogadas las identifico por el sufijo &#8220;ID&#8221; y para los campos llaves originales reservo todos los campos con el sufijo &#8220;cve&#8221;. </p>
<p>¿implica más trabajo? Si, así es. Muchas veces por falta de tiempo yo en mi caso las omito. También en cierto que hay diferentes maneras de generarlas por ejemplo con algún ETL. Los beneficios son muchos así que cada vez que diseñe un modelo, ponga en la balanza los beneficios que le pueda traer el incluir dichas llaves.</p>
<p>Por cierto, si vá a utilizar el &#8220;count distinct&#8221; estas llaves sustitutas les vienen como anillo al dedo.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/cubos.wordpress.com/341/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/cubos.wordpress.com/341/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cubos.wordpress.com/341/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cubos.wordpress.com/341/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cubos.wordpress.com/341/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cubos.wordpress.com/341/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cubos.wordpress.com/341/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cubos.wordpress.com/341/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cubos.wordpress.com/341/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cubos.wordpress.com/341/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cubos.wordpress.com/341/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cubos.wordpress.com/341/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cubos.wordpress.com/341/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cubos.wordpress.com/341/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cubos.wordpress.com/341/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cubos.wordpress.com/341/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=haciendocubos.com&#038;blog=1299221&#038;post=341&#038;subd=cubos&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://haciendocubos.com/2008/06/12/llaves-surrogadas-o-sustitutas/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cfd55e2d559d0d24e0bd295058e9ff47?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">Adrian</media:title>
		</media:content>

		<media:content url="http://cubos.files.wordpress.com/2008/10/image-thumb.png" medium="image">
			<media:title type="html">image</media:title>
		</media:content>

		<media:content url="http://cubos.files.wordpress.com/2008/06/surrogadas-thumb.png" medium="image">
			<media:title type="html">Surrogadas</media:title>
		</media:content>
	</item>
		<item>
		<title>Agregados exactos</title>
		<link>http://haciendocubos.com/2008/04/09/agregados-exactos/</link>
		<comments>http://haciendocubos.com/2008/04/09/agregados-exactos/#comments</comments>
		<pubDate>Wed, 09 Apr 2008 13:42:40 +0000</pubDate>
		<dc:creator>Adrian</dc:creator>
				<category><![CDATA[Mejores prácticas]]></category>

		<guid isPermaLink="false">http://cubos.wordpress.com/2008/04/09/agregados-exactos/</guid>
		<description><![CDATA[Hoy mientras hacía cubos (¿qué otra cosa?) y utilizaba unos indicadores compuestos avanzados del tipo: SUM( CASE WHEN (COLOR = &#8216;RED&#8217; AND TIPO = 3) THEN INVENTARIO_LT ELSE INVENTARIO + EXCEDENTES ) Constataba lo poderosos que son. Sin embargo este tipo de indicadores son muy complicados de mantener en un data warehouse. El problema viene [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=haciendocubos.com&#038;blog=1299221&#038;post=286&#038;subd=cubos&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Hoy mientras hacía cubos (¿qué otra cosa?) y utilizaba unos indicadores compuestos avanzados del tipo:</p>
<blockquote><p>SUM( CASE WHEN (COLOR = &#8216;RED&#8217; AND TIPO = 3) THEN INVENTARIO_LT ELSE INVENTARIO + EXCEDENTES )</p></blockquote>
<p>Constataba lo poderosos que son. Sin embargo este tipo de indicadores son muy complicados de mantener en un data warehouse. El problema viene cuando la base de datos ha crecido demasiado y tenemos que crear <a href="http://haciendocubos.com/2007/10/25/agregados/">agregados</a> (por Tienda o Departamento digamos), la herramienta OLAP no puede usar estos <a href="http://haciendocubos.com/2007/10/25/agregados/">agregados</a> debido a que las columnas que se ocupan para el CASE dentro del sum no existen en el <a href="http://haciendocubos.com/2007/10/25/agregados/">agregado</a>.</p>
<p>Para que los agregados funcionaran tendríamos que agregar a cada agregado las columnas Color y Tipo. La herramienta OLAP solamente usaría estos <a href="http://haciendocubos.com/2007/10/25/agregados/">agregados</a> cuando lo elementos del: group by+where+(lo que está dentro del sum), existen en el agregado. </p>
<p>Hay que programar los dashboards para que al abrirlos utilicen todas las variables en el agregado. Tantito que el usuario juegue con el tablero, ya sea filtrando o moviendo una dimensión provocará que no use agregados. A este tipo de agregados que solamente se pueden usar cuando la consulta exactamente tiene las columnas del agregado les llamo <strong>agregados exactos</strong>.</p>
<p>Entiendase que normalmente no es así, por ejemplo una consulta que solo use un sum(ventas) puede obtener el total de ventas x tienda de un agregado a nivel tienda-departamento-producto.</p>
<p>Respecto a estos indicadores avanzados que usan agregados exactos, tendría que programar para cada variante  de la consulta que el usuario haga: un <a href="http://haciendocubos.com/2007/10/25/agregados/">agregado</a>. Me refiero con variante a cualquier filtro de dimensión que el usuario aplique o dimensión que mueva (que normalmente es lo que hacen los usuarios con una herramienta OLAP).</p>
<p>Lo mejor es traducir estos indicadores simples de tal forma que no se tengan que referenciar otras columnas (propiedades) de dimensiones dentro del sum.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/cubos.wordpress.com/286/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/cubos.wordpress.com/286/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cubos.wordpress.com/286/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cubos.wordpress.com/286/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cubos.wordpress.com/286/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cubos.wordpress.com/286/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cubos.wordpress.com/286/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cubos.wordpress.com/286/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cubos.wordpress.com/286/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cubos.wordpress.com/286/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cubos.wordpress.com/286/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cubos.wordpress.com/286/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cubos.wordpress.com/286/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cubos.wordpress.com/286/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cubos.wordpress.com/286/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cubos.wordpress.com/286/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=haciendocubos.com&#038;blog=1299221&#038;post=286&#038;subd=cubos&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://haciendocubos.com/2008/04/09/agregados-exactos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cfd55e2d559d0d24e0bd295058e9ff47?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">Adrian</media:title>
		</media:content>
	</item>
		<item>
		<title>Mejores ID para la tabla de Tiempo</title>
		<link>http://haciendocubos.com/2008/04/02/mejor-id-para-la-tabla-de-tiempo/</link>
		<comments>http://haciendocubos.com/2008/04/02/mejor-id-para-la-tabla-de-tiempo/#comments</comments>
		<pubDate>Wed, 02 Apr 2008 14:10:43 +0000</pubDate>
		<dc:creator>Adrian</dc:creator>
				<category><![CDATA[Mejores prácticas]]></category>

		<guid isPermaLink="false">http://cubos.wordpress.com/2008/04/02/mejor-id-para-la-tabla-de-tiempo/</guid>
		<description><![CDATA[No se como escribir esto, a menudo mientras reviso un modelo estrella o un data warehouse me encuentro que al ejecutar: select * from SalesFact Un select para ver como está la tabla de hechos, el select que ejecuto muestra que la columna TimeId ( o como sea que la hayan llamado) trae valores como [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=haciendocubos.com&#038;blog=1299221&#038;post=285&#038;subd=cubos&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>No se como escribir esto, a menudo mientras reviso un modelo estrella o un data warehouse me encuentro que al ejecutar:</p>
<blockquote><p>select * from SalesFact</p></blockquote>
<p>Un select para ver como está la tabla de hechos, el select que ejecuto muestra que la columna TimeId ( o como sea que la hayan llamado) trae valores como 54548,  54549,&#8230;54555. Esta columna es el campo por el que se hace join con la tabla de tiempo. A que fecha corresponden dichos números, ni idea. Habrá que hacerle un select a la tabla de tiempo y ver a que fecha corresponde el ID.</p>
<p>Lo mejor es no usar estos valores, es mucho más sencillo usar la fecha en formato yyyyMMdd. El resultado sigue siendo un número entero y mucho más fácil de leer</p>
<blockquote><p><font color="#333333">20080331 = 31 de Marzo del 2008</font></p></blockquote>
<p><font color="#333333">Para llenar la tabla de hechos no se requiere ir primero a la tabla de tiempo para ver que ID le toca a cada fecha, basta con un:</font></p>
<blockquote><p><font color="#333333">SQLServer: convert( varchar, fecha, 113)</font></p>
<p><font color="#333333">Oracle: TO_CHAR( fecha, yyyyMMdd)</font></p>
<p><font color="#333333">MySQL: Year(Fecha)*10000+Month(Fecha)*100+day(Fecha)</font></p></blockquote>
<p><font color="#333333">¿a poco nó?</font></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/cubos.wordpress.com/285/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/cubos.wordpress.com/285/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cubos.wordpress.com/285/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cubos.wordpress.com/285/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cubos.wordpress.com/285/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cubos.wordpress.com/285/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cubos.wordpress.com/285/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cubos.wordpress.com/285/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cubos.wordpress.com/285/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cubos.wordpress.com/285/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cubos.wordpress.com/285/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cubos.wordpress.com/285/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cubos.wordpress.com/285/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cubos.wordpress.com/285/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cubos.wordpress.com/285/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cubos.wordpress.com/285/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=haciendocubos.com&#038;blog=1299221&#038;post=285&#038;subd=cubos&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://haciendocubos.com/2008/04/02/mejor-id-para-la-tabla-de-tiempo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cfd55e2d559d0d24e0bd295058e9ff47?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">Adrian</media:title>
		</media:content>
	</item>
		<item>
		<title>Ceros y Nulos en un data warehouse</title>
		<link>http://haciendocubos.com/2007/09/19/ceros-y-nulos-en-un-data-warehouse/</link>
		<comments>http://haciendocubos.com/2007/09/19/ceros-y-nulos-en-un-data-warehouse/#comments</comments>
		<pubDate>Wed, 19 Sep 2007 20:34:16 +0000</pubDate>
		<dc:creator>Adrian</dc:creator>
				<category><![CDATA[Mejores prácticas]]></category>
		<category><![CDATA[anecdotas]]></category>
		<category><![CDATA[indicadores]]></category>

		<guid isPermaLink="false">http://haciendocubos.com/2007/09/19/ceros-y-nulos-en-un-data-warehouse/</guid>
		<description><![CDATA[Una de la grandes lecciones aprendidas una y otra vez, proyecto tras proyecto, es el uso correcto de ceros y nulos en el datawarehouse. El principio es sencillo e importante conocer: 5548+ nulo = nulo No importa lo que pongas el resultado se anula. Una o dos veces al principio me ocurrió que llenaba los [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=haciendocubos.com&#038;blog=1299221&#038;post=161&#038;subd=cubos&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Una de la grandes lecciones aprendidas una y otra vez, proyecto tras proyecto, es el uso correcto de ceros y nulos en el datawarehouse. El principio es sencillo e importante conocer:</p>
<p>5548+ <strong>nulo</strong> = <strong>nulo</strong></p>
<p>No importa lo que pongas el resultado se anula. Una o dos veces al principio me ocurrió que llenaba los cubos o estrellas y al tratar de sacar el total de ventas con un</p>
<p>select sum( ventas ) from HechosComercial</p>
<p>obtenía como resultado <strong>nada</strong>. Se platica sencillo pero lo que en realidad ocurría era:</p>
<p>—¿cuánto tiempo falta para que termine la carga?<br />
—una hora&#8230;<br />
—¿a que horas es a la presentación a dirección?&#8230;tenemos que darle una revisada rápida a las pantallas<br />
—dentro de 2 horas<br />
—tiempo suficiente.</p>
<p>Una hora después&#8230;</p>
<p>— ya terminó la carga, a ver, revisa las pantallas.<br />
— ¡las pantallas están vacías! No se cargó la información, %&amp;/%#&#8230;¿falló algo?<br />
— No, todo está bien. Los logs no marcan errores e incluso las tablas tienen información<br />
— <img src="http://us.i1.yimg.com/us.yimg.com/i/mesg/emoticons7/7.gif" alt="Confused" /><br />
— A lo mejor definiste mal los indicadores, revisa la definición<br />
— &#8230;está todo bien<br />
— ¿no será que usaste el indicador equivocado? hay que revisar las pantallas.<br />
— &#8230;No, todo es correcto.<br />
— ¿y si la haces de nuevo?<br />
—&#8230;ya la hice de nuevo sigue igual..¿cuanto falta?<br />
— 15 minutos&#8230;</p>
<p>Más tarde y después de cancelar la presentación o de haber arruinado el buen humor de la junta de resultados resulta que encontramos el query:</p>
<p>select sum( ventas ) from HechosComercial</p>
<p>— No entiendo, si ejecuto la consulta me regresa un nulo. Ya revisé cada uno de los totales por región. Saque el detalle, lo exporté a excel e hice los cálculos. Coinciden perfectamente.<br />
—¿no será un bug de la base de datos?<br />
—Yo creo que sí.<br />
—Voy a buscar algo en google&#8230;</p>
<p>Así, después de horas y horas finalmente descubrimos que un registro con el valor de la columna ventas igual a nulo era el causante de todo. 2 millones 354 mil registros de información y un mendigo registro con el valor de nulo echa a perder todo.</p>
<p>A partir de entonces como procedimiento normal de la carga, sustituimos todos los nulos por un cero o en su defecto uso un desagradable <strong>sum( isnull( Ventas,0)).</strong> También en el create table en la definición de las columnas ponemos un default de cero.</p>
<p>Alguien pudiera pensar&#8230;&#8221;sencillo, en el where ponle <strong>Ventas is not null</strong>&#8221; pero con millones y millones de registros estoy seguro que sentaríamos el servidor al obligarlo a recorrer registro por registro toda la estrella para discriminar aquellos registros con nulos. No se les ocurra indexar las columnas-indicadores para acelerar la busqueda. Sería una barbaridad.</p>
<p>No siempre usamos cero, a veces en ciertos casos hemos tenido que dejar los nulos por algún requerimiento del indicador. Todo depende.</p>
<p>Al menos una vez al año recibimos alguna llamada de una persona desesperada por que las pantallas no muestran información y con un &#8220;pero las tablas si están llenas&#8221;. Eso quiere decir que ocurre a menudo. ¿A alguien le ha pasado algo parecido?</p>
<p style="display:inline;margin:0;padding:0;" class="wlWriterSmartContent">Technorati tags: <a rel="tag" href="http://technorati.com/tags/mejores%20practicas">mejores practicas</a></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/cubos.wordpress.com/161/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/cubos.wordpress.com/161/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cubos.wordpress.com/161/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cubos.wordpress.com/161/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cubos.wordpress.com/161/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cubos.wordpress.com/161/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cubos.wordpress.com/161/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cubos.wordpress.com/161/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cubos.wordpress.com/161/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cubos.wordpress.com/161/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cubos.wordpress.com/161/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cubos.wordpress.com/161/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cubos.wordpress.com/161/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cubos.wordpress.com/161/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cubos.wordpress.com/161/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cubos.wordpress.com/161/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=haciendocubos.com&#038;blog=1299221&#038;post=161&#038;subd=cubos&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://haciendocubos.com/2007/09/19/ceros-y-nulos-en-un-data-warehouse/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cfd55e2d559d0d24e0bd295058e9ff47?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">Adrian</media:title>
		</media:content>

		<media:content url="http://us.i1.yimg.com/us.yimg.com/i/mesg/emoticons7/7.gif" medium="image">
			<media:title type="html">Confused</media:title>
		</media:content>
	</item>
		<item>
		<title>Indicadores simples</title>
		<link>http://haciendocubos.com/2007/09/06/indicadores-simples/</link>
		<comments>http://haciendocubos.com/2007/09/06/indicadores-simples/#comments</comments>
		<pubDate>Thu, 06 Sep 2007 15:15:42 +0000</pubDate>
		<dc:creator>Adrian</dc:creator>
				<category><![CDATA[Mejores prácticas]]></category>

		<guid isPermaLink="false">http://haciendocubos.com/2007/09/06/indicadores-simples/</guid>
		<description><![CDATA[Siguiendo con las reflexiones del post anterior: Una sola verdad. Quería comentar que hay más beneficios de crear métricas simples en vez de un indicador monto con una dimensión donde venga el indicador. Imaginese que tiene que hacer 50 reportes. Suponiendo que tiene un indicador Monto o Importe y una dimension que tiene como valores: [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=haciendocubos.com&#038;blog=1299221&#038;post=134&#038;subd=cubos&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Siguiendo con las reflexiones del post anterior: Una sola verdad. Quería comentar que hay más beneficios de crear métricas simples en vez de un indicador monto con una dimensión donde venga el indicador.</p>
<p>Imaginese que tiene que hacer 50 reportes. Suponiendo que tiene un indicador Monto o Importe y una dimension que tiene como valores: Ventas, Devoluciones, Cancelaciones, Mermas, Pedidos y Notas de Crédito; y tiene que calcular un indicador Ventas Netas ( Ventas &#8211; Devoluciones &#8211; Cancelaciones ) y ese indicador lo tiene que usar en cada uno de los reportes ¿se puede imaginar la friega?.</p>
<p>Primero hay que calcular las <strong>Ventas Netas</strong> ¿ Los valores de <strong>Devoluciones</strong> vienen negativos o positivos? Si vienen positivos tendrá que hacer hacer algún truco para restarselo a las Ventas.</p>
<p>Suponiendo que esto no fuera un problema y ese calculo lo hace en los 50 reportes (por que normalmente se hacen el calculo cada vez en cada nuevo reporte); cuando al día siguiente le informen:</p>
<p>Para calcular las <strong>ventas netas</strong> además hay que restarle las <strong>Notas de crédito</strong></p>
<p>Ya puedo imaginar la cara que hace <img src="http://us.i1.yimg.com/us.yimg.com/i/mesg/emoticons7/102.gif" alt="At wits end" />. Tendrá que modificar cada uno de los 50 reportes uno por uno&#8230;</p>
<p>Si convierte las dimensiones a indicadores ( un indicador Ventas, un indicador Devoluciones, uno Cancelaciones y uno Notas de Crédito) puede crear un indicador lógico que sea <strong>Ventas Netas</strong> = Ventas &#8211; Devoluciones &#8211; Cancelaciones. Si al día siguiente le dicen que hay un cambio pues solo modifica la definición del indicador lógico y listo. ¡Todos los reportes funcionan! No hay que hacer nada.</p>
<p>Tome en cuenta que una vez que tenga los cubos o el data warehouse listo, lo que hará será hacer reportes y más reportes, pantallas y más pantallas, gráficas y más gráficas.</p>
<p>Así que vale la pena invertir tiempo en tener métricas simples.</p>
<p> ¿&#8230;será que alguien en <a href="http://www.sap.com">Alemania </a>me lea? <img src="http://us.i1.yimg.com/us.yimg.com/i/mesg/emoticons7/63.gif" alt="Praying" /></p>
<p><font color="#ff0000"><strong>TIP</strong></font>: Para los que usen Analysis Services de Microsoft pueden usar la funcion Filter de MDX para convertir sin mucho esfuerzo una dimension a indicadores.</p>
<p style="display:inline;margin:0;padding:0;" class="wlWriterSmartContent">Technorati tags: <a rel="tag" href="http://technorati.com/tags/mejores%20pr%c3%a1cticas">mejores prácticas</a></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/cubos.wordpress.com/134/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/cubos.wordpress.com/134/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cubos.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cubos.wordpress.com/134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cubos.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cubos.wordpress.com/134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cubos.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cubos.wordpress.com/134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cubos.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cubos.wordpress.com/134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cubos.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cubos.wordpress.com/134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cubos.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cubos.wordpress.com/134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cubos.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cubos.wordpress.com/134/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=haciendocubos.com&#038;blog=1299221&#038;post=134&#038;subd=cubos&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://haciendocubos.com/2007/09/06/indicadores-simples/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cfd55e2d559d0d24e0bd295058e9ff47?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">Adrian</media:title>
		</media:content>

		<media:content url="http://us.i1.yimg.com/us.yimg.com/i/mesg/emoticons7/102.gif" medium="image">
			<media:title type="html">At wits end</media:title>
		</media:content>

		<media:content url="http://us.i1.yimg.com/us.yimg.com/i/mesg/emoticons7/63.gif" medium="image">
			<media:title type="html">Praying</media:title>
		</media:content>
	</item>
		<item>
		<title>Uso de &#237;ndices en un data warehouse</title>
		<link>http://haciendocubos.com/2007/08/28/uso-de-ndices-en-un-data-warehouse/</link>
		<comments>http://haciendocubos.com/2007/08/28/uso-de-ndices-en-un-data-warehouse/#comments</comments>
		<pubDate>Tue, 28 Aug 2007 13:07:02 +0000</pubDate>
		<dc:creator>Adrian</dc:creator>
				<category><![CDATA[Data Warehouse]]></category>
		<category><![CDATA[Mejores prácticas]]></category>
		<category><![CDATA[Performance]]></category>

		<guid isPermaLink="false">http://cubos.wordpress.com/2007/08/28/uso-de-ndices-en-un-data-warehouse/</guid>
		<description><![CDATA[Varias veces me ha pasado que al visitar un data warehouse me encuentro con que en las tablas hay cero índices. Tengo muy presente unos&#160;cubos que se tardaban 2 días en procesarse. El uso de índices es uno de las cosas que más afecta el performance o desempeño. Debería ser obligado que todo data warehouse [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=haciendocubos.com&#038;blog=1299221&#038;post=128&#038;subd=cubos&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img height="192" alt="mapa" src="http://cubos.files.wordpress.com/2007/08/mapa.gif?w=192&h=192" width="192">
<p>Varias veces me ha pasado que al visitar un data warehouse me encuentro con que en las tablas hay cero índices. Tengo muy presente unos&nbsp;cubos que se tardaban 2 días en procesarse.
<p>El uso de índices es uno de las cosas que más afecta el performance o desempeño. Debería ser obligado que todo data warehouse tenga los apropiados.
<p>Para los que se preguntan ¿que es un índice? Una&nbsp;sencilla respuesta sería hacer una comparación. Para encontrar donde está ubicado un cliente que tengo que visitar tengo 2 opciones: buscar la dirección en un mapa o lanzarme a ciegas. Si me lanzo a ciegas tengo que recorrer calle por calle, preguntar e ir contando número por numero hasta dar con la dirección. Los 2 sabemos que éste último método es pésimo.
<p>De 10 veces solo&nbsp;una vez encontré la dirección a la primera y eso que tuve mucha suerte.
<p>Los índices son los mismo. Son un mapa de la información. Si no hay mapa entonces la base de datos recorre uno por uno los registros para dar con ellos. Un síntoma de que ocurre esto es que al pararse enfrente del servidor las lucecitas están prendidas y no se detienen.
<p>Aparte de que el % de uso del procesador es elevado.
<p>Si usted es de esos usuarios avanzados sabrá que se puede monitorear la cantidad de accesos a disco y que el resultado dice que están arriba de lo normal.
<p>Algunas recomendaciones para usted y su data warehouse respecto a los índices:
<ul>
<li>indexar las primary keys de las tablas. Si, a veces hay primary keys y no hay índices. Sobre todo en los motores de bases de datos viejitos que no tenían tanta integridad.
<li><a href="http://cubos.wordpress.com/2007/07/09/use-llaves-numricas/">Evitar usar campos llaves que no sean numéricos</a>. Prefiera los campos enteros para las llaves. Eso hará que los índices se eficienten mucho y respondan de manera más rápida. Además esto le permitirá definir índices de tipo bitmap que funcionan hiper-eficientemente por no decir &#8220;hechos la @#&amp;%!&#8221;. Conozco una base de dato que cada índice mide el 25% de lo que mide la tabla. Con 2 o 3 índices ya nos acabamos el disco duro. Todo por que las llaves son varchar.
<li>Indexar aquellas columnas por las que hará búsquedas frecuentemente.
<li>Si tiene tiempo, paciencia y recursos pruebe lo que dice el manual de almacenar los índices en un archivo o disco diferente al de datos. Se sorprenderá al ver los tiempos de respuesta. Si todavía tiene paciencia entonces pruebe todo el concepto (datos, temporales, base de datos de sistema, indices y&nbsp;logs). Si tiene una base de datos gigantesta, los tiempos de respuesta están lentos y aún no ha probado esto&#8230;no entiendo como ha sobrevivido.
<li>Lea los manuales y trate de entender los diferentes tipos de índices que su base de datos tiene, las desventajas y ventajas que tiene cada uno de ellos. El costo y los beneficios que le puede traer.
<li>Si tiene Oracle el uso del paralelismo le puede traer muchos beneficios, investigue.
<li>En algunas bases de datos los índices también se pueden <a href="http://cubos.wordpress.com/2007/07/12/tablas-particionadas/">particionar</a>. Esto aplica para data warehouses gigantescos.
<li>Un data warehouse está diseñado para consultas así que es perfectamente válido que esté sobre-indexado, pero no exagere.
<li>Monitoree las consultas que se lanzan sobre la base de datos y verifique que usen índices. Si no usan índices investigue por qué. A lo mejor simple y sencillamente no tiene.
<li>Pregunte qué están haciendo en otras empresas respecto a este tema y no tenga temor de contratar alguien que le apoye con este tema.</li>
</ul>
<p>¿Ahora entiende por qué aquellos cubos que mencioné se tardaban 2 días en procesarse? Había cero índices.
</p>
<div class="wlWriterSmartContent" style="display:inline;margin:0;padding:0;">Technorati tags: <a href="http://technorati.com/tags/performance" rel="tag">performance</a>, <a href="http://technorati.com/tags/data%20Warehouse" rel="tag">data Warehouse</a>, <a href="http://technorati.com/tags/mejores%20pr%c3%a1cticas" rel="tag">mejores pr&#225;cticas</a></div>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/cubos.wordpress.com/128/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/cubos.wordpress.com/128/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cubos.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cubos.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cubos.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cubos.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cubos.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cubos.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cubos.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cubos.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cubos.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cubos.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cubos.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cubos.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cubos.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cubos.wordpress.com/128/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=haciendocubos.com&#038;blog=1299221&#038;post=128&#038;subd=cubos&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://haciendocubos.com/2007/08/28/uso-de-ndices-en-un-data-warehouse/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cfd55e2d559d0d24e0bd295058e9ff47?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">Adrian</media:title>
		</media:content>

		<media:content url="http://cubos.files.wordpress.com/2007/08/mapa.gif" medium="image">
			<media:title type="html">mapa</media:title>
		</media:content>
	</item>
		<item>
		<title>Los mejores escenarios</title>
		<link>http://haciendocubos.com/2007/08/14/los-mejores-escenarios/</link>
		<comments>http://haciendocubos.com/2007/08/14/los-mejores-escenarios/#comments</comments>
		<pubDate>Tue, 14 Aug 2007 19:54:25 +0000</pubDate>
		<dc:creator>Adrian</dc:creator>
				<category><![CDATA[Mejores prácticas]]></category>

		<guid isPermaLink="false">http://cubos.wordpress.com/2007/08/14/los-mejores-escenarios/</guid>
		<description><![CDATA[Tomando en cuenta el post anterior (léanlo si no lo han hecho) donde nos topamos con usuarios renuentes al cambio, usuarios que por inercia (la cual se ha llevado a todos entre las patas) siguen usando lo mismo de toda la vida; hay varias preguntas: ¿cómo podemos diseñar mejores reportes o escenarios?¿podemos sustituir esos reportes en [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=haciendocubos.com&#038;blog=1299221&#038;post=111&#038;subd=cubos&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Tomando en cuenta el <a href="http://cubos.wordpress.com/2007/08/08/automatizando-estupideces-2/">post anterior</a> (léanlo si no lo han hecho) donde nos topamos con usuarios renuentes al cambio, usuarios que por inercia (la cual se ha llevado a todos entre las patas) siguen usando lo mismo de toda la vida; hay varias preguntas: ¿cómo podemos diseñar mejores reportes o escenarios?¿podemos sustituir esos reportes en papel por un tablero de control?¿Qué información debo de incluir en mis reportes o informes?¿es suficiente?</p>
<p>Reflexionemos. Cuando ese reporte <img src="http://us.i1.yimg.com/us.yimg.com/i/mesg/emoticons7/77.gif" alt="Not worthy" /> (que todos adoran) nació, pasó lo siguiente:</p>
<p>—Dime como quieres que sea el reporte—Sistemas le preguntó al usuario<br />
—<img src="http://us.i1.yimg.com/us.yimg.com/i/mesg/emoticons7/7.gif" alt="Confused" /></p>
<p>Y ahí está el problema: El usuario sabe que lo que requiere es información acerca de los 5 mejores clientes, qué sucursales van mal, qué vendedores tienen problemas en su desempeño, qué productos no despegan; <strong>NÓ como quiere el reporte</strong>.</p>
<p>Vean que grave está esto. Al hacer así la pregunta, el usuario detectó que él (nó sistemas) tenía que diseñar un reporte de tal forma que la información que busca todos los días la pueda encontrar sin mucho esfuerzo. Así que puso columnas y mas columnas, totales, cálculos, % de participación todo en un solo reporte; de tal forma que cuando intentara localizar que vendedores tienen problemas en su desempeño tuviera toda la información a la mano.</p>
<p>¿Alguno de ustedes ha intentado localizar que vendedores están mal en un reporte con 24 columnas, 1200 renglones, 25 subtotales y 45 páginas? Háganlo, y comprenderán el esfuerzo que requiere.</p>
<p>Dicho todo lo anterior y regresando a la pregunta ¿cómo podemos hacer mejores reportes, tableros de contro o informes? Sencillo. NO pregunten como quieren que sean, pregunten:</p>
<blockquote><p><strong>¿Qué es lo que estás buscando?¿Dime que información necesitas para tomar decisiones?</strong></p></blockquote>
<p>Y si el usuario dice: Quiero ver qué vendedores y sucursales tienen problemas. Hágase entonces una pantalla donde vengan las sucursales y su venta; con la venta alarmada en rojo si la sucursal está mal. Y le dicen la usuario: cuando veas una sucursal en rojo quiere decir que tiene problemas, le das clic y te da la lista de los vendedores malos. Para cada vendedor te muestra lo que lleva vendido, cuanto debería llevar (el presupuesto) y lo que vendió el mes pasado.</p>
<blockquote><p><strong>Denle exactamente la información que está buscando el usuario. Nó lo hagan pensar ni buscar en un mar de información ya que ese no es el objetivo de la aplicación. El objetivo es tomar mejores decisiones.</strong></p></blockquote>
<p>Si hacen esto estoy seguro que tendrán éxito en su tablero de control o cuadro de mando ¿Me explico?</p>
<p style="display:inline;margin:0;padding:0;" class="wlWriterSmartContent">Technorati tags: <a rel="tag" href="http://technorati.com/tags/mejores%20pr%c3%a1cticas">mejores prácticas</a></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/cubos.wordpress.com/111/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/cubos.wordpress.com/111/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cubos.wordpress.com/111/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cubos.wordpress.com/111/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cubos.wordpress.com/111/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cubos.wordpress.com/111/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cubos.wordpress.com/111/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cubos.wordpress.com/111/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cubos.wordpress.com/111/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cubos.wordpress.com/111/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cubos.wordpress.com/111/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cubos.wordpress.com/111/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cubos.wordpress.com/111/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cubos.wordpress.com/111/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cubos.wordpress.com/111/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cubos.wordpress.com/111/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=haciendocubos.com&#038;blog=1299221&#038;post=111&#038;subd=cubos&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://haciendocubos.com/2007/08/14/los-mejores-escenarios/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cfd55e2d559d0d24e0bd295058e9ff47?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">Adrian</media:title>
		</media:content>

		<media:content url="http://us.i1.yimg.com/us.yimg.com/i/mesg/emoticons7/77.gif" medium="image">
			<media:title type="html">Not worthy</media:title>
		</media:content>

		<media:content url="http://us.i1.yimg.com/us.yimg.com/i/mesg/emoticons7/7.gif" medium="image">
			<media:title type="html">Confused</media:title>
		</media:content>
	</item>
		<item>
		<title>Automatizando estupideces</title>
		<link>http://haciendocubos.com/2007/08/08/automatizando-estupideces-2/</link>
		<comments>http://haciendocubos.com/2007/08/08/automatizando-estupideces-2/#comments</comments>
		<pubDate>Wed, 08 Aug 2007 13:42:34 +0000</pubDate>
		<dc:creator>Adrian</dc:creator>
				<category><![CDATA[Mejores prácticas]]></category>
		<category><![CDATA[Reflexiones]]></category>

		<guid isPermaLink="false">http://cubos.wordpress.com/2007/08/08/automatizando-estupideces-2/</guid>
		<description><![CDATA[Los proyectos que más odio son aquellos en donde todo está dicho. Recuerdo con especial interés uno de ellos. Fue un cliente muy difícil. La prospección duró varios meses y nos evaluaron todo. Que si los tableros de control, que si los componentes, que si soportaba mapas o velocímetros, que si tenia alarmas, que si [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=haciendocubos.com&#038;blog=1299221&#038;post=110&#038;subd=cubos&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://cubos.files.wordpress.com/2007/08/reportes1.gif"><img height="192" alt="Reportes1" src="http://cubos.files.wordpress.com/2007/08/reportes1-thumb.gif?w=192&h=192" width="192"></a>
<p>Los proyectos que más odio son aquellos en donde todo está dicho.
<p>Recuerdo con especial interés uno de ellos. Fue un cliente muy difícil. La prospección duró varios meses y nos evaluaron todo. Que si los tableros de control, que si los componentes, que si soportaba mapas o velocímetros, que si tenia alarmas, que si hacía dril-down, que si los cubos, que si las bases de datos, que si mil cosas mas.
<p>Cuando pasó todo esta etapa de la venta y el proyecto inició me entregaron una carpeta bastante gruesa de reportes o informes. Eran cientos de ellos y con la consigna: «así los quiero».
<p>Los reportes uno tras otro consistían en una tabla con “n” columnas y filtros arriba. Las columnas casi siempre eran las mismas: los meses del año, el YTD, el mes pasado, el presupuesto…en fin columnas más, columnas menos.
<p>—Oye, pero podemos hacer cosas mucho mejores que esto<br />—NO, así los quiero<br />—pero son puras tablas…<br />—si, así los quiero. El objetivo es poder imprimir los reportes tal cual.
<p>Y ahí esta. No se requiere un análisis, todo esta perfectamente definido. ¿El drill-down? ¿Los múltiples componentes? Bien, gracias.
<p>Si insistes en preguntar obtienes la siguiente respuesta:
<p>—Nuestro director es una persona importante, el maneja esos reportes a la perfección. Sabe donde esta cada dato y carga esa carpeta para todas partes y en cada viaje. No podemos modificar nada de ahí.
<p>Pues a darle. A desarrollar cada uno de los reportes, columna por columna, cuidando la separación en pixeles de cada una, los encabezados, los títulos, el pie de página, el espacio del engargolado…y mil cosas más que dan un dolor de cabeza.
<p>Pues listo, terminé los famosos reportes y a cuadrar los datos. En esa etapa pude trabajar hombro con hombro con el usuario. Cada vez que no cuadraba un numerito enfrente del usuario le&nbsp;hacía drill-down, lo graficaba, le sacaba tendencias y obtenía la diferencia. Al ver todo esto todo esto el usuario me preguntó que era todo eso, así que le hice una demo de la herramienta.
<p>Quedó fascinado y a la vez pensativo. Viendo sus reportes se volteó y me dijo.
<p>—Estás automatizando mis estupideces ¿verdad?<br />—la mera verdad, SI.
<p>Y me platicó la historia de los famosos reportes. La primera versión de los reportes surgió cuando tenían COBOL y se imprimían en aquellas hojas verdes gigantescas. Como tuvieron que sustituir COBOL por otra cosa y las impresoras gigantes por las pequeñas pues contrataron a alguien que desarrollara en FOX aquellos reportes. Luego vendrían las bases de datos cliente servidor y las impresoras laser, así que contrataron a alguien que los desarrollara en Visual Basic y se imprimieran en Laser.&nbsp;Los reportes desde los 70’s no habían cambiado en nada y ahora era mi turno de hacerlos. Ellos tenían que cambiar la tecnología por otra mejor.
<p>De esta plática como resultado muchos de los reportes se fueron a la basura y pude proponer algunos tableros. Hay mucho que&nbsp;aprender de esta anecdota. </p>
<p>Las reflexiones las dejaré para un post posterior.</p>
<div class="wlWriterSmartContent" style="display:inline;margin:0;padding:0;">Technorati tags: <a href="http://technorati.com/tags/Mejores%20pr%c3%a1cticas" rel="tag">Mejores pr&#225;cticas</a>, <a href="http://technorati.com/tags/reflexiones" rel="tag">reflexiones</a></div>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/cubos.wordpress.com/110/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/cubos.wordpress.com/110/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cubos.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cubos.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cubos.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cubos.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cubos.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cubos.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cubos.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cubos.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cubos.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cubos.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cubos.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cubos.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cubos.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cubos.wordpress.com/110/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=haciendocubos.com&#038;blog=1299221&#038;post=110&#038;subd=cubos&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://haciendocubos.com/2007/08/08/automatizando-estupideces-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cfd55e2d559d0d24e0bd295058e9ff47?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">Adrian</media:title>
		</media:content>

		<media:content url="http://cubos.files.wordpress.com/2007/08/reportes1-thumb.gif" medium="image">
			<media:title type="html">Reportes1</media:title>
		</media:content>
	</item>
		<item>
		<title>Algunas recomendaciones para la tabla de hechos</title>
		<link>http://haciendocubos.com/2007/07/26/algunas-recomendaciones-para-la-tabla-de-hechos/</link>
		<comments>http://haciendocubos.com/2007/07/26/algunas-recomendaciones-para-la-tabla-de-hechos/#comments</comments>
		<pubDate>Thu, 26 Jul 2007 22:57:49 +0000</pubDate>
		<dc:creator>Adrian</dc:creator>
				<category><![CDATA[Data Warehouse]]></category>
		<category><![CDATA[Mejores prácticas]]></category>

		<guid isPermaLink="false">http://cubos.wordpress.com/2007/07/26/algunas-recomendaciones-para-la-tabla-de-hechos/</guid>
		<description><![CDATA[Cuando hagas tu tabla de hechos sigue estas recomendaciones. No usar llaves compuestas. Trata de no usar llaves compuestas, esto es, utiliza un solo campo para hacer join con las otras tablas. Esto hará que la base de datos trabaje menos. Es un poco complejo de programar pero ayudará bastante en el performance de la [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=haciendocubos.com&#038;blog=1299221&#038;post=73&#038;subd=cubos&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://cubos.wordpress.com/2007/07/24/la-tabla-de-hechos/"><img src="http://cubos.files.wordpress.com/2007/07/tablahechos.gif?w=510"></a> </p>
<p>Cuando hagas tu tabla de hechos sigue estas recomendaciones.</p>
<ul>
<li>No usar llaves compuestas. Trata de no usar llaves compuestas, esto es, utiliza un solo campo para hacer join con las otras tablas. Esto hará que la base de datos trabaje menos. Es un poco complejo de programar pero ayudará bastante en el performance de la base de datos. ¿ Y no funciona si uso llaves compuestas? Si, si funciona pero se nota una diferencia en los tiempos de respuesta. Esto se nota más si la tabla de hechos será gigantesca.</li>
<li>Define la Primary Key en la tabla de hechos. Si en el CREATE TABLE establecemos quién es la primary key, la base de datos creará un índice con la combinación de estos campos lo que hará más rápidas las búsquedas&#8230;.Si, si me he topado con DWH que no tienen índices y que al procesar los cubos se tardaban 2 días. Si su tabla de hechos no tiene índices, pongale uno, el más apropiado de entrada es aquel que incluye a todos los campos que forman la llave de la tabla&#8230;.Lo mismo aplica para las tablas de dimensiones o catálogos.</li>
<li>Utilice los tipos de datos apropiados. En el diagrama puede ver como el campo <strong>unit sales</strong> usa un tipo de dato <a href="http://en.wikipedia.org/wiki/Double_precision">DOUBLE PRECISION</a>; esto estaría bien si nos dedicaramos a la venta de garbanzos <img src='http://s0.wp.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> &nbsp;y quisiéramos llevar la cuenta del # de garbanzos vendidos (no sé, pero un kilo de garbanzos ha de traer cientos de ellos ) ¡<font color="#ff0000">Es para almacenar números gigantescos</font>!. Si lo que vendemos es <a href="http://www.caterpillar.com">maquinaria</a> a lo mejor con un Decimal(10,2) estaría bien. Tenemos que acoplarnos al número que almacenará la columna. Espacio de más hará que la base de datos crezca más y se requiera más espacio, y a más espacio más trabajo y más servidor y más memoria y más&#8230;</li>
<li>Tenga cuidado con el tipo de dato entero. Una vez haciendo un cubo de recursos humanos teníamos 2 indicadores: # de Personas y #Personal Requerido. Como no se puede tener 1/2 persona ni requerir 1/2 persona los dos los definí de tipo entero. La bronca vino al hacer las consultas. Resulta que en las bases de datos, al dividir un entero entre otro entero el resultado es un entero, o sea ( 768/1000 ) = 1. Luego teníamos a cada rato que anteponerle CONVERT u otra instrucción por que el resultado o era 1 o 0. Recuerdo que esto aplica para SQLServer y Redbrick, no recuerdo en este momento si pasa lo mismo en Oracle.</li>
<li>Las tablas de hechos pueden tener campos de apoyo. Si, no siempre se tienen únicamente los hechos y dimensiones. Se pueden tener campos como Fecha de entrega, de compra, etc.</li>
<li>No guarde campos que se pueden calcular. Si por ejemplo tiene un indicador que es el precio promedio = ventas $/ Ventas Unidades; no haga el calculo y lo guarde en la tabla de hechos por que al consultar los datos deberá usar una formula de agregación como SUM, AVG, MAX, MIN y si lo analiza, la distorsión del indicador será bastante grande al promediar un precio promedio en millones de registros o pocos de ellos.</li>
<li>Use nombres amigables. No hay razón para no utilizar el nombre VENTAS UNIDADES para una columna en la tabla de hechos. Luego no tiene uno NPI de lo que hay en cada columna. </li>
</ul>
<p>Recuerde, los datawarehouses se diseñan pensando en ser de fácil consulta. Son para analizar información.</p>
<div class="wlWriterSmartContent" style="display:inline;margin:0;padding:0;">Technorati tags: <a href="http://technorati.com/tags/data%20Warehouse" rel="tag">data Warehouse</a>, <a href="http://technorati.com/tags/mejores%20pr%c3%a1cticas" rel="tag">mejores pr&#225;cticas</a></div>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/cubos.wordpress.com/73/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/cubos.wordpress.com/73/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cubos.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cubos.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cubos.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cubos.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/cubos.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/cubos.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/cubos.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/cubos.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cubos.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cubos.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cubos.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cubos.wordpress.com/73/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cubos.wordpress.com/73/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cubos.wordpress.com/73/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=haciendocubos.com&#038;blog=1299221&#038;post=73&#038;subd=cubos&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://haciendocubos.com/2007/07/26/algunas-recomendaciones-para-la-tabla-de-hechos/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cfd55e2d559d0d24e0bd295058e9ff47?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">Adrian</media:title>
		</media:content>

		<media:content url="http://cubos.files.wordpress.com/2007/07/tablahechos.gif" medium="image" />
	</item>
	</channel>
</rss>
