Error en la dimensión 'date' del cubo de ventas

Empezaremos explicando que estaba sucediendo con el cubo de ventas y cómo llegue a encontrar la solución.

¿Cuál era el error?

El error en el cubo era que no mostraba las fechas del nuevo año, por supuesto habíamos cambiado de año.

Si os fijáis en la imagen no muestra las fechas para el año 2020.

 


Lo primero que me vino a la cabeza era que no estaban creados los registros del nuevo año.
El paso evidente era revisar que fechas estaban configuradas para la dimensión fecha para el BI en la siguiente ruta:


Administración del sistema > Configurar > Business Intelligence > Analysis Services > Dimensiones de fecha 


   

Como veis en la imagen la fecha final es del 2019. El error era evidente así que escribiendo como fecha final la del año 2020 se debería solucionar el problema pero…no fue así.
(Para que quede claro cuando se modifican las fechas en este formulario y se cierra se lanza un proceso que genera unos registros en la tabla BIDateDimensionValue.)




Una vez procesamos el cubo seguía sin funcionar, en el cubo las fechas del  año 2020 no aparecían aunque si estaban en la tabla de Ax. Así que no me quedaba otra que investigar que estaba pasando ya que el cubo se ejecutaba y no mostraba ningún mensaje de error.


Me conecte al servidor de Analysis Services.



Utilizando el botón conexiones de la pestaña datos podemos saber a qué servidor y Base de datos debemos conectarnos.


Intenté procesar la dimensión de nuevo.



Una vez procesada la dimensión se creó el nuevo valor.


Tal y como se ve en la siguiente imagen:


Sólo quedaba procesar de nuevo el cubo.


Lo podemos hacer desde el mismo servidor de Analysis Service situándonos encima de la BD y en el menú contextual dándole a procesar o conectándonos al servidor donde tengamos el job de ejecución de los cubos.



Una vez se procesó el cubo, al intentar actualizar los datos del Excel nos mostraba un error en un formato de fecha.


Todo parecía correcto pero ahora teníamos un nuevo error. Cómo no entendíamos que estaba pasando nos fuimos a procesar uno por uno todos los cubos a ver si todos se procesaban correctamente.




Al procesar el cubo de ventas nos mostró un error con el atributo Date, nos indicaba que no encontraba un valor válido para la dimensión fecha. Busqué la dimensión y miré que valores tenia, para mi sorpresa no tenía ningún valor, en todos ellos aparecía desconocido.


No quedaba otra que abrir el cubo mediante VS.



Nos situamos en las dimensiones y abrimos la que mostraba el error.




Una vez abierta la dimensión en sus propiedades encontramos el origen de datos de la dimensión; una vista llamada BIDateDimensionView.






Al abrir la vista desde Ax vimos que no mostraba datos..


El DataSource de la vista era una Query que tenía las siguientes tablas:


Vimos de donde provenía el campo DotNetCulture, y en la tabla donde debería existír algún valor con el idioma en-Us sólo existían registros con el valor es-Es.


Por mi experiencia recordaba que existía una clase que era la encargada de las fechas para los cubos así que dentro de esta busqué en qué momento se crean los registros en esta tabla.

En la clase BiDateDimensionManager se generan los registros de las traducciones de las fechas.


Fijaos el comentario que indica que nos aseguremos que el idioma por defecto sea en-us.


Revisamos que idioma está marcado por defecto y por sorpresa vimos que alguien ha puesto como idioma por defecto el español en lugar del inglés, si recordáis en la captura anterior indicaba claramente que nos aseguráramos que el idioma por defecto fuese el inglés.


Cómo no estaba seguro si esa modificación estaba hecha para algún desarrollo específico por el partner preferí dejarlo tal cual e ir a las tablas Biconfiguration y marcar el check para que realizará las traducciones de los idiomas marcados en la tabla BIUdmTranslations.


En esta tabla no había ningún idioma marcado así que le marque el en-us.


Ahora que por fin parecía que lo teníamos todo configurado realizamos los siguientes pasos:

1.- En el formulario de dimensiones de fecha volvimos a modificar las fechas para que genere los registros de nuevo.
2.- Confirmamos que en la tabla BIDateDimensionTranslations se han generado los registros para los dos idiomas en-Es y en-US.
3.- Procesamos de nuevo la dimensión date y verificamos que se muestran los datos.
4.- Procesamos el cubo y verificamos que se muestran los datos.


Comentarios