93.393.92.80 info@evotic.es

Pues ya tenemos aquí el ultimo capitulo de nuestras peleas con nuestros cubos OLAP, como siempre recomendamos que todas estas cosas se prevean durante el análisis funcional ya que tocar las tablas de hechos (FACT) una vez implementadas y con sus métricas creadas puede generar inconsistencias como la que nos encontramos ayer nosotros en Evotic.

Teníamos una FACT donde tenemos todas las ventas del cliente que se relaciona por la fecha de factura con la dimensión TIEMPO pero que pasa si ahora de repente descubrimos que necesitamos una fecha más en la FACT, porque ademas vamos a crear otra dimensión tiempo (TIEMPO-2 la llamaremos a partir de ahora) que nos permitirá ver las ventas del cliente desde dos puntos de vista diferente.

Bien pues, primer paso:

1- Replicamos la Dimensión TIEMPO y creamos la dimensión TIEMPO-2, pero ahora necesitamos crear una columna nueva en nuestra FACT_TABLE principal, por tanto lo hacemos.
2- Creamos otra columna tiempo en la FACT y la llenamos con las fechas que queremos consultar, y después la relacionamos en nuestro DataSourceView (DSV) por la esta nueva columna que llamaremos FECHA-2 con la Clave de la tabla TIEMPO-2.

Hasta ahora todo correcto por tanto una vez creada, la columna, creada la 2º Dimension TIEMPO-2 vamos a las relaciones del Cubo OLAP y las relacionamos con la nueva columna:

 

Todo correcto, pero ahora viene el problema que nosotros nos encontramos y que probablemente mas de uno os hayáis encontrado:

“The data source view does not contain a definition for the ‘FECHA-2’ column in the table or view.”

o si tenéis el Visual Studio el error sera:

“La vista del origen de datos no contiene ninguna definición para la columna ‘FECHA-2’ en la tabla o vista”

Pues aquí es donde empieza nuestro dolor de cabeza, la columna SI que existe! la vemos, incluso la vemos en el DSV pero no la reconoce, como hemos dicho al principio este cubo ya estaba creado y esto fue una petición posterior, todas sus métricas estaban funcionando pero no habían tenido cambios posterior a la implantación original.

Pues después de mucho probar y probar, os digo la única solución que hay…

SOLUCIÓN:

Cuando generamos un cubo y creamos métricas sobre la tabla FACT este crea sus relaciones internas que luego hay que romper para que se vuelvan a generar, por tanto la única solución a este problema es BORRAR todas las métricas asociadas a esa FACT es decir todo lo que sean agregados de columnas de esa tabla en la que hemos metido la columna nueva, y volver a crearlas de nuevo, esto hará que el cubo fuerce el re-diseño de las relaciones internas y entonces YA SI identificará nuestra nueva columna…

Raro? Si, Trabajoso? depende de las métricas que tengas creadas sobre la FACT, también, pero efectivo.

Os aseguro que si hubiera sabido esto hubiera tardado mucho menos en borrar y crear que una vez te pones no es tanto que en intentar corregirlo tocando otros temas del DSV etc…

Siempre recomiendo que hagáis una copia del proyecto o del cubo para tener la foto antes de los cambios por si acaso, yo siempre lo hago.

Bueno pues espero que os sirva de ayuda y cualquier cosa que necesitéis no dudéis en contactar con nosotros a través de nuestra pagina de contacto o través de los comentarios de esta entrada.

Gracias y saludos!