Problemas / Error en Microstrategy Web con el caracter ‘*’ en la representación de atributos

En las versiones 9.3 y anteriores de Microstrategy, nos encontrábamos con una especie de “bug” visual en Microstrategy Web cuando usábamos atributos cuya representación usaba el carácter ‘*’, sin embargo no afectaba a la hora del cálculo y representación de los datos en un informe.

Esta es una incidencia, ya conocida por Microstrategy, ya solucionada a partir de la versión 9.3.  Aquí podemos ver una TN que habla del problema sobre el que os voy a escribir:

TN37702: “1048576” is displayed in prompt detail when answering a prompted Freeform SQL report with attribute ID form element which is end with an asterisk (*) in MicroStrategy Web 9.x

Ilustro el caso más ampliamente para que veáis a que me refiero.


Partimos de esta tabla, similar a cualquier Look_up que podemos usar habitualmente:

Tabla Inicial

 

Y tenemos un atributo con origen en esta tabla:

sincase

Ahora creamos un informe con este atributo y una selección dinámica sobre el mismo y nos vamos a ejecutarlo vía Microstrategy Web.

-No vemos ningún tipo de problema en la selección dinámica:

dinamicaSincase

Cuando ya tenemos el informe en pantalla, vemos que en el resumen de la selección dinámica no se nos muestra la descripción del atributo, sino un código (1048576).

Informesincase

Os voy a proponer una solución rápida para resolver este problema desde Microtrategy para que el caracter ‘*’ no entre en conflicto y podamos tener una visualización correcta de los valores, no obstante, no es una solución óptima ni aconsejable pues este problema debería arreglarse con una distinta definición en Base de datos.  No creo que sea una buena práctica incluir en los registros de nuestra base de datos este tipo de caracteres reservados (‘*’,’#’,’&’…) en la mayoría de los lenguajes de programación.

Lo que vamos hacer es modificar la definición del atributo para que no asuma ‘*’ como valor  . Me explico, para poder ver el antes y después he creado una copia del atributo anterior y simplemente voy a cambiar la representación de esa columna usando un Applysimple (usando Oracle 11g).

concase

Con este ApplySimple cambiamos los valores ‘*’ y ‘**’ por ‘ * ‘ y ‘ ** ‘ (espacios blancos antes y después). Lo que buscamos con este cambio es que los valores conflictivos sean tratados de forma distinta por Microstrategy y que para nosotros el cambio sea transparente cuando visualizamos el informe.

Vamos a verlo. Incluimos en el informe anterior este atributo y una selección dinámica del mismo. Y nos vamos a Web a ejecutarlo.

Ahora vemos que los valores se muestran correctamente en el resumen para esta nueva representación del atributo.

informeconcase

Como dije antes, no es una solución óptima, pues penaliza el rendimiento de server al exigir un’ Case’ para todos los valores de ese atributo simplemente para tratar unos pocos datos, lo ideal es que el problema sea tratado en BBDD. Si podéis abordar este problema a este nivel, y por cualquier necesidad tenga que ser un * ese campo, podéis convertir en ‘ * ‘ (con espacios) y por Microstrategy será tratado correctamente sin necesidad de hacer un ApplyCase.

Por ejemplo tenemos la tabla:

TablaBBDD

Donde ERRONEO1 y SINDESC1 tiene los id ‘*’ y ‘**’  y ERRONEO2 y SINDESC2 tiene los id ‘ * ’ y ‘ ** ’ (espacio antes y después) .

Vemos que el resultado, creando un informe tal cuál el anterior, es correcto:

InformeBBDD

Espero que os pueda servir de ayuda, o por lo menos os parezca interesante.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *