Está en la página 1de 24

FUNDACIÓN UNIVERSITARIA COMPENSAR

FACULTAD DE INGENIERIA
PRACTICA III

ACTIVIDAD II
EVIDENCIAS PLAN DE PRÁCTICA
REPORTES POWER BI GLPI – OCTOPUS

AUTOR

GREGORIO ENRIQUE PALMA SARMIENTO

DIRECTOR
LUIS DAVID CALVO FUENTES

BOGOTÁ, D.C, OCTUBRE DE 2023


TABLA DE CONTENIDO

INTRODUCCIÓN............................................................................................................................. 4
REPORTES POWER BI GLPI – OCTOPUS ................................................................................ 5
1. Configuración del ODBC.......................................................................................................... 5
2. Instalamos la herramienta PowerBI ........................................................................................ 6
3. Crear tablas para Histórico Semanal y Mensual.................................................................... 6
4. REPORTES DASHBOARD GENERAL – TÉCNICOS Y SUPERVISORES ..................... 9
4.1. Reporte de Tickets Pendientes. ............................................................................................ 9
4.2. Reporte de Cambios y Problemas. ..................................................................................... 14
4.3. Reporte de Encuestas de Satisfacción. ............................................................................... 20
4.4. Reporte de Tickets Huérfanos o Sin Técnico .................................................................... 22
CONCLUSIONES ........................................................................................................................... 23
ANEXOS .......................................................................................................................................... 24
Enlace al Cronograma .................................................................................................................... 24
Enlace al PXB PowerBI .................................................................................................................. 24
TABLA DE ILUSTRACIONES

Ilustración 1 - Configuración del Data Source - GLPI ........................................................................... 5


Ilustración 2 - Descarga PowerBI ......................................................................................................... 6
Ilustración 3 - Tablas Históricas ........................................................................................................... 6
Ilustración 4 - Tabla tickets_week........................................................................................................ 7
Ilustración 5 - Tabla tickets_month ..................................................................................................... 8
Ilustración 6 - Login HeidiSQL .............................................................................................................. 9
Ilustración 7 - Fuente de Datos Tickets Pendientes........................................................................... 12
Ilustración 8 - Informe Tickets Pendientes ........................................................................................ 13
Ilustración 9 - Informe Tickets Pendientes Publicado ....................................................................... 14
Ilustración 10 - Problemas ................................................................................................................. 19
Ilustración 11 - Cambios .................................................................................................................... 20
Ilustración 12 - Encuestas Tabla Datos .............................................................................................. 21
Ilustración 13 - Encuestas Reporte .................................................................................................... 21
Ilustración 14 - Reporte Tickets Huérfanos ....................................................................................... 22
INTRODUCCIÓN

En un mundo empresarial cada vez más digitalizado, la gestión efectiva de incidentes,


problemas y solicitudes de cambio se ha convertido en una parte fundamental de la
operación de cualquier organización. La habilidad para monitorizar y tomar decisiones
basadas en datos en tiempo real es esencial para mantener la satisfacción de los clientes,
optimizar los recursos y garantizar la eficiencia operativa. En este contexto, PowerBI, una
poderosa herramienta de visualización y análisis de datos emerge como un aliado
fundamental. Este trabajo de prácticas se centra en la creación y análisis de diversos
informes utilizando PowerBI, con el objetivo de proporcionar una visión integral y
detallada de la gestión de tickets, problemas y cambios en Metropolitan Touring.

A lo largo de este trabajo, se abordarán varios aspectos clave de la gestión de servicios,


incluyendo la identificación de tickets pendientes, la evaluación de tickets en escalamiento,
el análisis de problemas y cambios, la medición de la satisfacción del cliente a través de
encuestas, la detección de tickets huérfanos y el seguimiento de tickets con SLA vencido.
Además, se llevará a cabo un análisis histórico semanal para identificar tendencias y
patrones. La utilización de PowerBI permitirá la visualización de datos en tableros
interactivos, facilitando la toma de decisiones informadas y proporcionando una visión
detallada de la operación de la organización en tiempo real. A través de este trabajo, se
explorarán las capacidades de PowerBI y se demostrará su utilidad para la toma de
decisiones estratégicas en el ámbito de la gestión de servicios.

A medida que avanzamos en este trabajo, se profundizará en cada uno de los informes
mencionados, destacando su relevancia y contribución a la gestión eficiente y eficaz de
incidentes y solicitudes en un entorno empresarial en constante evolución.
ACTIVIDAD II
EVIDENCIAS PLAN DE PRÁCTICA
REPORTES POWER BI GLPI – OCTOPUS

1. Configuración del ODBC

Ilustración 1 - Configuración del Data Source - GLPI

La creación de una conexión ODBC (Open Database Connectivity) desde Power BI al


servidor donde está instalado y configurado GLPI es un paso esencial para obtener datos de
GLPI y utilizarlos en PowerBI.

Obtenemos los datos a través del ODBC para tener datos en tiempo real y obtener la mejor
flexibilidad en la extracción de estos y con esto tendríamos una transformación y modelado
óptimos en PowerBI y de igual forma podemos automatizar la extracción de los datos.
2. Instalamos la herramienta PowerBI

Para descargar la herramienta primero procedemos a ir a este enlace y le damos clic para
descargar: https://www.microsoft.com/en-us/download/details.aspx?id=58494

Esto nos lleva a la página de descarga donde escogemos el idioma en que deseamos
descargar y procedemos a dar clic en Download (descargar) y luego escogemos el tipo de
plataforma en la que queremos descargar (x86 o x64) esto depende puramente del sistema
operativo y el tipo de arquitectura que maneje, para nuestro caso usaremos el de 64bits.

Ilustración 2 - Descarga PowerBI

Cuando ya tengamos el archivo de instalación:

Hacemos doble clic para ejecutarlo y continuación dando clic en siguiente al asistente de
instalación y con esto instalamos la herramienta. Para usarla simplemente buscamos su
nuevo ícono en el escritorio y lo ejecutamos.

3. Crear tablas para Histórico Semanal y Mensual.


Estas tablas tienen como función principal guardar un histórico tanto semanal como
mensual para comparar los datos en estos mismos intervalos de tiempo.

Ilustración 3 - Tablas Históricas


Creamos las 2 tablas, tickets_week que se usa para los históricos semanales, en la práctica
lo que hacemos es obtener una foto todos los viernes a las 23:55 de la base de datos del
GLPI que está en otro servidor MySQL y se hace a través de procesos de Integration
Services y se obtienen los datos automáticamente para luego moldearlos en PowerBI.

Ilustración 4 - Tabla tickets_week


De igual forma se hace con la tabla tickets_month pero esta vez el corte se hace mensual, el
séptimo día hábil de cada mes.

Ilustración 5 - Tabla tickets_month

Con estos datos ya podemos comenzar a construir nuestros reportes, ya tenemos las
conexiones y la herramienta; ahora solo nos falta extraer los datos y modelarlos para luego
presentarlos en los informes.
4. REPORTES DASHBOARD GENERAL – TÉCNICOS Y
SUPERVISORES

En este apartado veremos el Dashboard (1 solo archivo) que contiene los reportes que van a
utilizar los técnicos y supervisores para su día a día. Entre otros veremos los tickets
pendientes, huérfanos, problemas y cambios, Encuestas de Satisfacción, etc.

4.1. Reporte de Tickets Pendientes.

Este informe es el más utilizado por los técnicos y supervisores y nos muestra los tickets
que tenemos actualmente en un estado No Resuelto, ya sea que estén En Curso, En Espera,
sean tickets nuevos, etc.

Para llegar al resultado final necesitamos antes realizar varios pasos, entre otros primero
tenemos que diseñar la consulta que extraerá los datos tal y como lo necesitamos, esto lo
hacemos primero a través de la herramienta HeidiSQL (hay otras herramientas para realizar
esto, pero esta es la de mi preferencia) con la cual nos conectamos a la base de datos
MySQL (MariaDB) del GLPI.

Ilustración 6 - Login HeidiSQL


Nuestra consulta es realizada luego de hacer el levantamiento de lo que queremos mostrar
en el informe, muchos de los campos salen directamente de la base de datos, otros
requieren una conversión y algunas las hacemos directamente en la consulta, las otras las
hacemos obteniendo los datos de un Excel, ejemplo: áreas, categorías. Esto se hace porque
la base de datos no nos proporciona esta información.

Consulta SQL, para todos los reportes de tickets:

SELECT t.id Ticket


, t.name Titulo
, CASE t.status
WHEN 1 THEN 'Nuevos'
WHEN 2 THEN 'En Curso (asignada)'
WHEN 3 THEN 'En Curso (planificada)'
WHEN 4 THEN 'En Espera'
WHEN 5 THEN 'Resuelto'
WHEN 6 THEN 'Cerrado'
ELSE 'Sin Estado' END Estado
, CASE t.status
WHEN 1 THEN 'No Resuelto'
WHEN 2 THEN 'No Resuelto'
WHEN 3 THEN 'No Resuelto'
WHEN 4 THEN 'No Resuelto'
WHEN 5 THEN 'Resuelto'
WHEN 6 THEN 'Resuelto'
ELSE 'Sin Estado' END Grupo_Estado
, t.date Fecha_Apertura
, t.solvedate Fecha_Resolucion
, t.closedate Fecha_Cierre
, t.date_mod Ultima_Modificacion
, CONCAT(u.firstname,' ',u.realname) Ultima_Modificacion_Por
, CASE t.priority
WHEN 1 THEN 'Muy Baja'
WHEN 2 THEN 'Baja'
WHEN 3 THEN 'Media'
WHEN 4 THEN 'Alta'
WHEN 5 THEN 'Muy Alta'
WHEN 6 THEN 'Mayor'
ELSE 'Sin Prioridad' END Prioridad
, (select CONCAT(solu.firstname,' ',solu.realname) from glpi_users solu
join glpi_tickets_users tu on solu.id = tu.users_id where tu.tickets_id =
t.id and tu.type = 1 LIMIT 1) Solicitante
, (select CONCAT(solu.firstname,' ',solu.realname) from glpi_users solu
join glpi_tickets_users tu on solu.id = tu.users_id where tu.tickets_id =
t.id and tu.type = 2 LIMIT 1) Tecnico
, (select CONCAT(solu.firstname,' ',solu.realname) from glpi_users solu
join glpi_tickets_users tu on solu.id = tu.users_id where tu.tickets_id =
t.id and tu.type = 3 LIMIT 1) Observador
, CONCAT(us.firstname,' ',us.realname) Creador
, CASE WHEN (t.users_id_recipient = (select solu.id from glpi_users solu
join glpi_tickets_users tu on solu.id = tu.users_id where tu.tickets_id =
t.id and tu.type = 2 LIMIT 1) AND t.users_id_recipient <> (select solu.id
from glpi_users solu join glpi_tickets_users tu on solu.id = tu.users_id
where tu.tickets_id = t.id and tu.type = 1 LIMIT 1)) THEN
'Creado_Tecnico'
ELSE 'Creado_Solicitante' END Tipo_Creador
,(select golu.name from glpi_groups golu join glpi_groups_tickets gu on
golu.id = gu.groups_id where gu.tickets_id = t.id and gu.type = 1 LIMIT
1) Grupo_Solicitante
,(select golu.name from glpi_groups golu join glpi_groups_tickets gu on
golu.id = gu.groups_id where gu.tickets_id = t.id and gu.type = 2 LIMIT
1) Grupo_Tecnico
,(select golu.name from glpi_groups golu join glpi_groups_tickets gu on
golu.id = gu.groups_id where gu.tickets_id = t.id and gu.type = 3 LIMIT
1) Grupo_Observador
, g.name Grupo_Categoria
, REPLACE(i.name,'&gt;', '>') Categoria
, l.name Ubicacion
, CASE t.type
WHEN 1 THEN 'Incidente'
WHEN 2 THEN 'Solicitud'
ELSE 'Sin Tipo' END Tipo
, t.time_to_own Tiempo_Aduenarse
, t.time_to_resolve Tiempo_en_Resolver
, r.name Fuente_Solicitud
, (select tu.alternative_email from glpi_tickets_users tu where
tu.tickets_id = t.id and tu.type = 1 LIMIT 1) Correo_Seguimiento
,
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(R
EPLACE(REPLACE(t.content,'&lt', ''), '&gt;', ''), ';p', ''), ';/p', ''),
';br /', ''), ';strong', ''), ';/strong', ''), ';em', ''), ';u', ''),
';/em', ''), ';/u', '') Descripcion
, HOUR(t.date_creation) Hora_apertura
, CASE WHEN HOUR(t.date_creation) >= 8 AND HOUR(t.date_creation) <= 17
THEN 'H' ELSE 'FH' END Fuera_Horario
, CASE WHEN (t.status IN (5,6) AND t.time_to_resolve < t.solvedate)
AND t.slas_id_ttr <> 0 THEN 'Si'
WHEN (t.status IN (1,2,3,4) AND t.time_to_resolve <
NOW()) AND t.slas_id_ttr <> 0 THEN 'Si'
ELSE 'No' END SLA_Vencido
, sl.name SLA
,
CONCAT('https://octopus.metro.net.ec/glpi/front/ticket.form.php?id=',t.id
) url
, CASE t.is_deleted
WHEN 1 THEN 'Si'
WHEN 0 THEN 'No'
ELSE 'Sin Borrado' END Borrado
, NOW() actualizado
, CASE pf.plugin_fields_tipodeescalamientofielddropdowns_id
WHEN 0 THEN 'Sin Escalamiento'
WHEN 1 THEN 'Mantenimiento'
WHEN 2 THEN 'Seguridad'
ELSE 'Ninguno' END Escalamiento
, CASE WHEN (SELECT COUNT(tr.id) FROM glpi_ticketrecurrents tr WHERE
tr.NAME = t.NAME) > 0 THEN 'Si'
ELSE 'No' END Recurrente
, t.internal_time_to_resolve Tiempo_Interno_Resolver
, REPLACE(i.completename,'&gt;', '>') Categoria_Full
FROM glpi.glpi_tickets t
left join glpi.glpi_users u on t.users_id_lastupdater = u.id
inner join glpi.glpi_itilcategories i on i.id = t.itilcategories_id
left join glpi. glpi_groups g on g.id = i.groups_id
left join glpi.glpi_locations l on l.id = t.locations_id
left join glpi.glpi_requesttypes r on t.requesttypes_id = r.id
left join glpi.glpi_users us on t.users_id_recipient = us.id
LEFT JOIN glpi.glpi_slas sl ON sl.id = t.slas_id_ttr
LEFT JOIN glpi.glpi_plugin_fields_ticketescalamientos pf ON t.id =
pf.items_id
WHERE (YEAR(t.date)=YEAR(CURDATE()) OR YEAR(t.date)=YEAR(CURDATE())-1)

Ya con la consulta podemos configurar nuestra fuente de datos en el PowerBI:

Ilustración 7 - Fuente de Datos Tickets Pendientes

Añadimos como fuente de datos nuestra conexión ODBC y en la misma colocamos la


consulta que creamos previamente de igual manera, esto nos va a traer los datos planos que
necesitamos para comenzar con la creación de nuestro reporte, con esto procedemos a la
creación del Dashboard, agregando las tablas y visualizaciones que necesitamos para ver
nuestros datos, el resultado final:
Ilustración 8 - Informe Tickets Pendientes

Como lo pueden ver en la imagen si incluyen múltiples filtros para tener la información
organizada: ubicación, técnico, solicitante, país, etc. Esto para tener datos segmentados
según el usuario lo requiera. Todos los reportes que veremos de ahora en adelante tendrán
estos filtros y la misma estructura visual e interna.

Finalmente, cada uno de los reportes se van publicando en el Sharepoint de la compañía,


teniendo especial cuidado en que sean reportes públicos para así no tener que depender que
cada usuario disponga de una licencia PowerBI para su uso, pero públicos para los usuarios
del dominio usado por la compañía, de esta manera se requiere un usuario y contraseña de
Office 365 para visualizar los mismos:
Ilustración 9 - Informe Tickets Pendientes Publicado

4.2. Reporte de Cambios y Problemas.

Todos los reportes mantienen la misma estructura tal como lo mencioné en el punto
anterior, para este punto veremos los reportes de cambios y problemas que no son más que
tickets de cierta forma escalados de acuerdo con el proceso que manejamos en la empresa.
Para el caso de los cambios son los tickets que son definidos de esta forma porque van a
modificar un proceso y tienen primero que ser incluidos en el comité de cambios. Los
problemas por su parte son tickets que se vuelven repetitivos y que se crean de esta manera
para así asociarle los tickets que se repiten y llevarles un seguimiento conjunto, estos
problemas al igual que los cambios tienen ciertos lineamientos que los hacen diferentes de
los problemas y los tickets normales como:
Proyectos asociados, elementos afectados, inclusión en la base de conocimientos, esto para
los problemas, para los cambios, tenemos aprobaciones, costos, los tickets asociados, etc.

Cabe volver a mencionarlo, todos los reportes mantienen la misma estructura, pero en este
caso los reportes de problemas y cambios no trabajan con la misma consulta SQL ya que
los datos de estos se guardan en tablas diferentes, las consultas son bastante parecidas en su
estructura y forma que consultan las tablas, pero además de apuntar a tablas distintas
también obvian algunos campos que no se encuentran en las tablas de Problemas y
Cambios. Veamos:

Consulta SQL Problemas:

SELECT t.id Problema


, t.name Titulo
, CASE t.status
WHEN 1 THEN 'Nuevos'
WHEN 2 THEN 'En Curso (asignada)'
WHEN 3 THEN 'En Curso (planificada)'
WHEN 4 THEN 'En Espera'
WHEN 5 THEN 'Resuelto'
WHEN 6 THEN 'Cerrado'
ELSE 'Sin Estado' END Estado
, t.date Fecha_Apertura
, t.solvedate Fecha_Resolucion
, t.closedate Fecha_Cierre
, t.date_mod Ultima_Modificacion
, CONCAT(u.firstname,' ',u.realname) Ultima_Modificacion_Por
, CASE t.priority
WHEN 1 THEN 'Muy Baja'
WHEN 2 THEN 'Baja'
WHEN 3 THEN 'Media'
WHEN 4 THEN 'Alta'
WHEN 5 THEN 'Muy Alta'
WHEN 6 THEN 'Mayor'
ELSE 'Sin Prioridad' END Prioridad
,(select CONCAT(solu.firstname,' ',solu.realname) from glpi_users solu
join glpi_problems_users tu on solu.id = tu.users_id where tu.problems_id
= t.id and tu.type = 1 LIMIT 1) Solicitante
,(select CONCAT(solu.firstname,' ',solu.realname) from glpi_users solu
join glpi_problems_users tu on solu.id = tu.users_id where tu.problems_id
= t.id and tu.type = 2 LIMIT 1) Tecnico
,(select CONCAT(solu.firstname,' ',solu.realname) from glpi_users solu
join glpi_problems_users tu on solu.id = tu.users_id where tu.problems_id
= t.id and tu.type = 3 LIMIT 1) Observador
,(select golu.name from glpi_groups golu join glpi_groups_problems gu on
golu.id = gu.groups_id where gu.problems_id = t.id and gu.type = 1 LIMIT
1) Grupo_Solicitante
,(select golu.name from glpi_groups golu join glpi_groups_problems gu on
golu.id = gu.groups_id where gu.problems_id = t.id and gu.type = 2 LIMIT
1) Grupo_Tecnico
,(select golu.name from glpi_groups golu join glpi_groups_problems gu on
golu.id = gu.groups_id where gu.problems_id = t.id and gu.type = 3 LIMIT
1) Grupo_Observador
, g.name Grupo_Categoria
, REPLACE(i.name,'&gt;', '>') Categoria
, t.time_to_resolve Tiempo_en_Resolver
, (select tu.alternative_email from glpi_problems_users tu where
tu.problems_id = t.id and tu.type = 1 LIMIT 1) Correo_Seguimiento
, st.name Tipo_Solucion
,
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(R
EPLACE(REPLACE(fu.content,'&lt', ''), '&gt;', ''), ';p', ''), ';/p', ''),
';br /', ''), ';strong', ''), ';/strong', ''), ';em', ''), ';u', ''),
';/em', ''), ';/u', '') Seguimientos
,
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(R
EPLACE(REPLACE(t.content,'&lt', ''), '&gt;', ''), ';p', ''), ';/p', ''),
';br /', ''), ';strong', ''), ';/strong', ''), ';em', ''), ';u', ''),
';/em', ''), ';/u', '') Descripcion
,
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(R
EPLACE(REPLACE(t.impactcontent,'&lt', ''), '&gt;', ''), ';p', ''), ';/p',
''), ';br /', ''), ';strong', ''), ';/strong', ''), ';em', ''), ';u',
''), ';/em', ''), ';/u', '') Impactos
,
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(R
EPLACE(REPLACE(t.causecontent,'&lt', ''), '&gt;', ''), ';p', ''), ';/p',
''), ';br /', ''), ';strong', ''), ';/strong', ''), ';em', ''), ';u',
''), ';/em', ''), ';/u', '') Causas
,
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(R
EPLACE(REPLACE(t.symptomcontent,'&lt', ''), '&gt;', ''), ';p', ''),
';/p', ''), ';br /', ''), ';strong', ''), ';/strong', ''), ';em', ''),
';u', ''), ';/em', ''), ';/u', '') Sintomas
,
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(R
EPLACE(REPLACE(pk.content,'&lt', ''), '&gt;', ''), ';p', ''), ';/p', ''),
';br /', ''), ';strong', ''), ';/strong', ''), ';em', ''), ';u', ''),
';/em', ''), ';/u', '') Tareas
, CONCAT(usf.firstname,' ',usf.realname) Usuario_Seguimiento
, fu.date_mod Fecha_Seguimiento
, HOUR(t.date_creation) Hora_apertura
, CASE WHEN HOUR(t.date_creation) >= 8 AND HOUR(t.date_creation) <= 17
THEN 'H' ELSE 'FH' END Fuera_Horario
,
CONCAT('https://octopus.metro.net.ec/glpi/front/problem.form.php?id=',t.i
d) url
, CASE t.is_deleted
WHEN 1 THEN 'Si'
WHEN 0 THEN 'No'
ELSE 'Sin Borrado' END Borrado
, NOW() actualizado
, pt.tickets_id Ticket_Asociado
FROM glpi.glpi_problems t
left join glpi.glpi_users u on t.users_id_lastupdater = u.id
left join glpi.glpi_itilcategories i on i.id = t.itilcategories_id
left join glpi. glpi_groups g on g.id = i.groups_id
left join glpi.glpi_itilsolutions its on t.id = its.items_id
left join glpi.glpi_solutiontypes st on its.solutiontypes_id = st.id
left join glpi.glpi_itilfollowups fu on fu.items_id = t.id
left join glpi.glpi_users usf on fu.users_id = usf.id
left join glpi.glpi_problems_tickets pt ON pt.id = t.id
LEFT JOIN glpi.glpi_problemtasks pk ON pk.problems_id = t.id
WHERE (YEAR(t.date)=YEAR(CURDATE()) OR YEAR(t.date)=YEAR(CURDATE())-1)

Consulta SQL Cambios:

SELECT t.id Cambio


, t.name Titulo
, CASE t.status
WHEN 1 THEN 'Nuevos'
WHEN 2 THEN 'En Curso (asignada)'
WHEN 3 THEN 'En Curso (planificada)'
WHEN 4 THEN 'En Espera'
WHEN 5 THEN 'Resuelto'
WHEN 6 THEN 'Cerrado'
ELSE 'Sin Estado' END Estado
, t.date Fecha_Apertura
, t.solvedate Fecha_Resolucion
, t.closedate Fecha_Cierre
, t.date_mod Ultima_Modificacion
, CONCAT(u.firstname,' ',u.realname) Ultima_Modificacion_Por
, CASE t.priority
WHEN 1 THEN 'Muy Baja'
WHEN 2 THEN 'Baja'
WHEN 3 THEN 'Media'
WHEN 4 THEN 'Alta'
WHEN 5 THEN 'Muy Alta'
WHEN 6 THEN 'Mayor'
ELSE 'Sin Prioridad' END Prioridad
,(select CONCAT(solu.firstname,' ',solu.realname) from glpi_users solu
join glpi_changes_users tu on solu.id = tu.users_id where tu.changes_id =
t.id and tu.type = 1 LIMIT 1) Solicitante
,(select CONCAT(solu.firstname,' ',solu.realname) from glpi_users solu
join glpi_changes_users tu on solu.id = tu.users_id where tu.changes_id =
t.id and tu.type = 2 LIMIT 1) Tecnico
,(select CONCAT(solu.firstname,' ',solu.realname) from glpi_users solu
join glpi_changes_users tu on solu.id = tu.users_id where tu.changes_id =
t.id and tu.type = 3 LIMIT 1) Observador
,(select golu.name from glpi_groups golu join glpi_changes_groups gu on
golu.id = gu.groups_id where gu.changes_id = t.id and gu.type = 1 LIMIT
1) Grupo_Solicitante
,(select golu.name from glpi_groups golu join glpi_changes_groups gu on
golu.id = gu.groups_id where gu.changes_id = t.id and gu.type = 2 LIMIT
1) Grupo_Tecnico
,(select golu.name from glpi_groups golu join glpi_changes_groups gu on
golu.id = gu.groups_id where gu.changes_id = t.id and gu.type = 3 LIMIT
1) Grupo_Observador
, g.name Grupo_Categoria
, REPLACE(i.name,'&gt;', '>') Categoria
, t.time_to_resolve Tiempo_en_Resolver
, (select tu.alternative_email from glpi_problems_users tu where
tu.problems_id = t.id and tu.type = 1 LIMIT 1) Correo_Seguimiento
, st.name Tipo_Solucion
,
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(R
EPLACE(REPLACE(fu.content,'&lt', ''), '&gt;', ''), ';p', ''), ';/p', ''),
';br /', ''), ';strong', ''), ';/strong', ''), ';em', ''), ';u', ''),
';/em', ''), ';/u', '') Seguimientos
,
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(R
EPLACE(REPLACE(t.content,'&lt', ''), '&gt;', ''), ';p', ''), ';/p', ''),
';br /', ''), ';strong', ''), ';/strong', ''), ';em', ''), ';u', ''),
';/em', ''), ';/u', '') Descripcion
,
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(R
EPLACE(REPLACE(t.impactcontent,'&lt', ''), '&gt;', ''), ';p', ''), ';/p',
''), ';br /', ''), ';strong', ''), ';/strong', ''), ';em', ''), ';u',
''), ';/em', ''), ';/u', '') Impactos
,
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(R
EPLACE(REPLACE(t.controlistcontent,'&lt', ''), '&gt;', ''), ';p', ''),
';/p', ''), ';br /', ''), ';strong', ''), ';/strong', ''), ';em', ''),
';u', ''), ';/em', ''), ';/u', '') Lista_Control
,
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(R
EPLACE(REPLACE(t.rolloutplancontent,'&lt', ''), '&gt;', ''), ';p', ''),
';/p', ''), ';br /', ''), ';strong', ''), ';/strong', ''), ';em', ''),
';u', ''), ';/em', ''), ';/u', '') Plan_Despliegue
,
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(R
EPLACE(REPLACE(t.backoutplancontent,'&lt', ''), '&gt;', ''), ';p', ''),
';/p', ''), ';br /', ''), ';strong', ''), ';/strong', ''), ';em', ''),
';u', ''), ';/em', ''), ';/u', '') Plan_Respaldo
,
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(R
EPLACE(REPLACE(t.checklistcontent,'&lt', ''), '&gt;', ''), ';p', ''),
';/p', ''), ';br /', ''), ';strong', ''), ';/strong', ''), ';em', ''),
';u', ''), ';/em', ''), ';/u', '') Lista_Revision
,
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(R
EPLACE(REPLACE(pk.content,'&lt', ''), '&gt;', ''), ';p', ''), ';/p', ''),
';br /', ''), ';strong', ''), ';/strong', ''), ';em', ''), ';u', ''),
';/em', ''), ';/u', '') Tareas
, CASE cv.status
WHEN 2 THEN 'Esperando Aprobacion'
WHEN 3 THEN 'Aprobado'
ELSE 'Sin Estado'
END Estado_Aprobacion
, CONCAT(usf.firstname,' ',usf.realname) Usuario_Seguimiento
, fu.date_mod Fecha_Seguimiento
, HOUR(t.date_creation) Hora_apertura
, CASE WHEN HOUR(t.date_creation) >= 8 AND HOUR(t.date_creation) <= 17
THEN 'H' ELSE 'FH' END Fuera_Horario
,
CONCAT('https://octopus.metro.net.ec/glpi/front/change.form.php?id=',t.id
) url
, CASE t.is_deleted
WHEN 1 THEN 'Si'
WHEN 0 THEN 'No'
ELSE 'Sin Borrado' END Borrado
, NOW() actualizado
, pt.tickets_id Ticket_Asociado
FROM glpi.glpi_changes t
left join glpi.glpi_users u on t.users_id_lastupdater = u.id
left join glpi.glpi_itilcategories i on i.id = t.itilcategories_id
left join glpi. glpi_groups g on g.id = i.groups_id
left join glpi.glpi_itilsolutions its on t.id = its.items_id
left join glpi.glpi_solutiontypes st on its.solutiontypes_id = st.id
left join glpi.glpi_itilfollowups fu on fu.items_id = t.id
left join glpi.glpi_users usf on fu.users_id = usf.id
left join glpi.glpi_changes_tickets pt ON pt.id = t.id
LEFT JOIN glpi.glpi_changetasks pk ON pk.changes_id = t.id
LEFT JOIN glpi.glpi_changevalidations cv ON cv.changes_id = t.id
WHERE (YEAR(t.date)=YEAR(CURDATE()) OR YEAR(t.date)=YEAR(CURDATE())-1)

La configuración de fuentes de datos y creación de los Dashboard se hace de la misma


forma que el punto inmediatamente anterior, todo lo vamos consolidando en un solo
archivo publicado tanto en el PowerBI como en el SharePoint que se configuró de acceso
público para los usuarios de la empresa.

Problemas

Ilustración 10 - Problemas
Cambios

Ilustración 11 - Cambios

4.3. Reporte de Encuestas de Satisfacción.

Este reporte consulta una base de datos completamente diferente, es una encuesta de
satisfacción para los usuarios finales de la herramienta GLPI, tenemos una interna a en la
misma herramienta a nuestra disposición, pero es bastante básica, optamos por crear nuestra
propia herramienta que guarda los resultados en una base de datos SQL Server en un
servidor propio de la compañía. Para este caso no mostramos la fuente de datos ni la
consulta, ya que es un servidor público. Estas encuestas no se realizan a todos los tickets,
únicamente a los tickets con una solución y de estos se les envía la notificación solo al 10%
del total de los tickets y claro que no todos los tickets enviados obtienen respuesta en sus
encuestas, mensualmente se puede encontrar una desviación hasta de un 2%.
Datos

Ilustración 12 - Encuestas Tabla Datos

Reporte

Ilustración 13 - Encuestas Reporte


En cada uno de los reportes encuentran el campo ACTUALIZADO EN, que muestra la
fecha de la última actualización de cada reporte, esto lo hago directamente en cada base de
datos con la sentencia GETDATE() o NOW().

4.4. Reporte de Tickets Huérfanos o Sin Técnico

Este reporte es de los más útiles para el Coordinador de la Mesa de Ayuda y muestra los
tickets que actualmente se encuentran sin técnico, ya sea porque son nuevos, se les ha
olvidado asignar o cualquier otro motivo.

La consulta usada es la misma que usamos para los requerimientos pendientes, solo
hacemos un filtro para los que no tienen técnico asignado, este filtro también se usa para los
incidentes, solicitudes pendientes, etc.

Ilustración 14 - Reporte Tickets Huérfanos

Como ven, el reporte sigue la estructura de los anteriores, los mismos filtros, algunos se
eliminan únicamente por la naturaleza del reporte.
CONCLUSIONES

A lo largo de este periodo de prácticas, hemos explorado y desarrollado una serie de


informes en PowerBI que ofrecen una visión profunda y significativa de la gestión de
servicios en Metropolitan Touring. Estos informes incluyeron un análisis de tickets
pendientes, tickets en escalamiento, problemas y cambios, encuestas de satisfacción, tickets
huérfanos, tickets con SLA vencido y un análisis histórico semanal. Cada uno de estos
informes proporcionó una ventana a aspectos críticos de nuestra operación de servicios de
tecnología de la información (TI).

A través de Power BI, hemos sido capaces de extraer datos en tiempo real, modelarlos,
visualizarlos y, en última instancia, tomar decisiones informadas. Esta herramienta ha
demostrado ser invaluable en la identificación de tendencias, la mejora de la eficiencia
operativa y la satisfacción del cliente, así como en la toma de decisiones estratégicas
fundamentadas en datos.

Es importante mencionar que, debido a las múltiples responsabilidades y tareas adicionales


en mi rol de prácticas, se ha producido un pequeño atraso en la finalización de algunos
aspectos de este proyecto. Sin embargo, este desafío ha destacado la importancia de la
gestión del tiempo y la necesidad de equilibrar múltiples responsabilidades en un entorno
laboral real.
ANEXOS

Enlace al Cronograma

https://unipanamericanaeduco-
my.sharepoint.com/:x:/g/personal/gpalma_ucompensar_edu_co/Ef3gbdAq7U5Bl8npeHZZanEBqU
9yMog_fobX2OWIZeTsZg?e=ccLlfi

Enlace al PBIX PowerBI

https://unipanamericanaeduco-
my.sharepoint.com/:u:/g/personal/gpalma_ucompensar_edu_co/EYVjI1FW0gBMj4cmqKmYeFcBm
UDisFgKgaYDt404rnFUGQ?e=bhrzZW

También podría gustarte