Microstrategy nos ofrece la posibilidad de almacenar estadísticas sobre nuestros proyectos en tablas físicas. Esta información es variada y abarca fechas de acceso, registro de fallos, tiempos de ejecución… Si queremos ver la definición y composición de las tablas de estadísticas que recolecta Microstrategy podemos consultarlas en:
Microstrategy 9.4 AdminSupplemental
a partir de la página 463, ahí podemos ver que información que contiene cada tabla.
En este post voy a combinar la información procedente de este repositorio de estadísticas, con la información que tenemos en la metadata de Microstrategy, por este motivo es recomendable echar un vistazo a el anterior post:
Microstrategy Metadata Queries (I)
en donde hablo, a modo introductorio, de las principales tablas de este repositorio.
Jugando con esta información, pretendo sacar datos útiles para la gestión del servidor desde el punto de vista de la Administración.
En primer lugar debemos crear nuestro repositorio de estadísticas, si no lo tenemos creado previamente. Para este fin debemos abrir en «Configuration Wizard» de Microstrategy y seleccionar la opción «Crear repositorio de estadísticas, de historial y de metadata»
y en el siguiente paso seleccionamos «Crear tablas de Estadísticas»
y seguimos los pasos que requiere nuestro asistente hasta crear el repositorio.
En este punto ya tenemos las tablas donde se van almacenar la estadísticas, ahora debemos activar la recolección de estadisticas en los proyectos que a nosotros nos interese. Para este fin vamos a la configuración de cada proyecto (Click derecho en nuestro proyecto > Configuración del Proyecto) y ahí nos dirigimos al apartado de estadísticas:
Aquí podemos ver la instancia de base de datos que hemos creado en el Configuration Wizard.
Procedemos a marcar los checkbox de los datos que nos interese recolectar. Una vez hayamos guardado los cambios y reiniciado el Intelligent Server nuestro proyecto empezará a recolectar estadísticas.
A continuación os voy a proponer una serie de queries que pueden ser útiles e ilustrativas a la hora de explotar la información de estas tablas. Como decía, estas queries combinan tablas de metadata y de estadísticas, las cuales son dos instancias de base de datos distintas, por lo que las consultas deben hacerse desde un perfil de administración.
En los siguientes ejemplos
MICROSTRATEGY es la instancia de Base de datos correspondiente a la Metadata
ESTADISTICA es la instancia de Base de datos correspondiente a las Estadisticas
En la primera query podemos sacar una lista de usuarios que ejecutaron informes desde un periodo determinado, por ejemplo en las últimas 24 horas:
SELECT A.OBJECT_NAME AS USER_NAME, SUM(B.NUM_JOBS_EXEC) «JOBS_EXECUTED»
FROM MICROSTRATEGY.DSSMDOBJINFO A
JOIN
(
SELECT A1.USERID AS USERID, COUNT(REPORTID) AS NUM_JOBS_EXEC
FROM ESTADISTICA.IS_REPORT_STATS A1
JOIN
ESTADISTICA.IS_SESSION_STATS A2
ON (A1.SESSIONID=A2.SESSIONID)
WHERE ROUND(SYSDATE-TRUNC(A1.DAY_ID)) <=1
GROUP BY A1.USERID,A2.SESSIONID
ORDER BY 2 DESC
) B
ON
(A.OBJECT_ID= B.USERID)
WHERE A.OBJECT_TYPE=34
GROUP BY A.OBJECT_NAME
ORDER BY 2 DESC;
Podemos obtener una lista de los informes/documentos, con y sin fallo, ejecutados en un periodo de tiempo, por ejemplo en las últimas 24 horas:
SELECT TIPO, SUM(OK) AS NUM_EXEC_OK,SUM(KO) AS NUM_EXEC_KO
FROM
(
select ‘INFORME’ AS TIPO,
CASE WHEN A.JOBSTATUS=4 THEN 1
ELSE 0
END AS KO,
CASE WHEN JOBSTATUS=3 THEN 1
ELSE 0
END AS OK
FROM ESTADISTICA.IS_REPORT_STATS A
WHERE ROUND(SYSDATE-TRUNC(A.DAY_ID)) <=1 AND A.JOBSTATUS IN (3,4)
UNION ALL
select ‘DOCUMENTO’ AS TIPO,
CASE WHEN B.EXECSTATUS=4 THEN 1
ELSE 0
END AS KO,
CASE WHEN EXECSTATUS=3 THEN 1
ELSE 0
END AS OK
FROM ESTADISTICA.IS_DOCUMENT_STATS B
WHERE ROUND(SYSDATE-TRUNC(B.DAY_ID)) <=1 AND B.EXECSTATUS IN (3,4)
)
GROUP BY TIPO;
Mensaje de error de los informes que han fallado en un periodo determinado, por ejemplo, en las últimas 24 horas:
SELECT
D.OBJECT_UNAME AS PROYECTO,
C.OBJECT_UNAME AS NOMBRE_INFORME,
B.OBJECT_UNAME AS USUARIO,
A.ERRORMESSAGE AS MENSAJE_ERROR,
MAX(A.RECORDTIME) HORA_FIN,
MAX(A.REQUESTRECTIME) HORA_INICIO
FROM
ESTADISTICA.IS_REPORT_STATS A
JOIN
MICROSTRATEGY.DSSMDOBJINFO B
ON (B.OBJECT_ID= A.USERID)
JOIN
MICROSTRATEGY.DSSMDOBJINFO C
ON (C.OBJECT_ID= A.REPORTID)
JOIN
MICROSTRATEGY.DSSMDOBJINFO D
ON (D.OBJECT_ID= A.PROJECTID)
WHERE
A.JOBERRORCODE <> 0
AND UPPER(A.ERRORMESSAGE) NOT LIKE ‘%CANCELED%’
AND UPPER(A.ERRORMESSAGE) NOT LIKE ‘%CANCELADO%’
AND (ROUND(SYSDATE-TRUNC(A.RECORDTIME))>=1)
GROUP BY D.OBJECT_UNAME ,
C.OBJECT_UNAME ,
B.OBJECT_UNAME ,
A.SERVERMACHINE ,
A.ERRORMESSAGE;
Como podéis intuir y ver, todas estas queries son personalizables para obtener los resultados que nosotros queramos y las posibilidades son infinitas teniendo un conocimiento de, «el qué buscar» y «donde buscarlo».
Buen día. Como puedo obtener la cantidad de licencias dadas de alta y de baja por mes