Visuales personalizados en Power BI: seguridad, rendimiento y mantenimiento
En cualquier proyecto de Business Intelligence llega un momento en que los visuales nativos de Power BI se quedan cortos. El cliente pide un diagrama de Sankey para analizar flujos de costes, un gráfico de radar para comparar competencias o un visual de tipo Gantt que las barras estándar no pueden emular con precisión. Es aquí donde entran los visuales personalizados (Custom Visuals) disponibles en AppSource o archivos .pbiviz de terceros.
Sin embargo, la adopción de estos componentes no debe ser impulsiva. Introducir código de terceros en un informe de producción conlleva riesgos que a menudo se ignoran: desde fugas de información hacia servidores externos hasta degradaciones severas en el rendimiento del navegador del usuario final. Como consultores, nuestra responsabilidad no es solo que el informe sea ‘bonito’, sino que sea seguro, sostenible y eficiente a largo plazo.
En este artículo desglosamos los criterios técnicos necesarios para validar un visual antes de incorporarlo a tu arquitectura de datos. No basta con que el gráfico funcione en Power BI Desktop; debe superar un proceso de auditoría que garantice que no compromete la Seguridad en Microsoft Fabric: Roles, Workspaces y Permisos sin Agujeros ni la experiencia del usuario.
Certificación de Microsoft: qué es y qué no es
El distintivo azul de ‘Certificado’ en AppSource es el primer filtro, pero existe una confusión generalizada sobre lo que implica. Un visual certificado ha pasado un proceso de revisión de código por parte de Microsoft para asegurar que no accede a recursos externos (red o servicios web) y que no utiliza patrones de código maliciosos. Sin embargo, la certificación no garantiza que el visual sea eficiente ni que esté libre de errores lógicos.
Un visual certificado se ejecuta en un entorno de pruebas estricto. La principal ventaja técnica es que estos visuales pueden exportarse a PDF, PowerPoint y aparecer en los correos de suscripción por correo electrónico. Si el visual no está certificado, estas funciones simplemente no funcionarán o mostrarán un recuadro vacío. Además, los visuales certificados respetan las políticas de grupo de la organización, permitiendo a los administradores de tenant bloquear cualquier visual que no cumpla este requisito.
Por el contrario, los visuales no certificados tienen acceso potencial a la API de red. Esto significa que, técnicamente, podrían enviar los datos que están visualizando (como el Importe de Ventas o nombres de Clientes) a una dirección IP externa sin que el usuario se dé cuenta. En entornos con RLS en Power BI: seguridad por filas estática, dinámica y validación en el servicio, este riesgo se multiplica, ya que el visual maneja datos filtrados que no deberían salir del ecosistema de la empresa.
Impacto en el rendimiento y consumo de memoria
Muchos visuales de terceros están construidos sobre librerías pesadas como D3.js o Three.js. A diferencia de los visuales nativos, que están altamente optimizados para el motor de renderizado de Power BI, un visual personalizado mal programado puede bloquear el hilo principal (Main Thread) de ejecución del navegador.
Cuando evaluamos un visual, debemos usar el Performance Analyzer. Es común ver visuales que tardan 200ms en recibir los datos del motor DAX (Data Selection), pero emplean 2.500ms en el renderizado (Other). Esto suele deberse a un bucle ineficiente en el código TypeScript del visual que recorre el DataView de forma redundante.
En proyectos de gran escala, como los que medimos siguiendo las Pruebas de rendimiento en Fabric Warehouse: metodología y métricas reales, el impacto de un solo visual puede arruinar la experiencia de un dashboard con 10 elementos. Si el visual tiene fugas de memoria (Memory Leaks), el navegador irá consumiendo más RAM conforme el usuario interactúe con los filtros o el cross-filtering, llegando a colapsar la pestaña.
Cómo probar el estrés de un visual personalizado
Antes de decidirte por un visual, crea una página de prueba con el máximo volumen de datos que esperas manejar. Si el visual debe mostrar 5.000 puntos en un mapa, no lo pruebes con 10. Usa una medida DAX que fuerce una carga de datos significativa para observar cómo escala el tiempo de renderizado.
-- Medida para generar volumen de datos ficticio y probar estrés en visuales
Test Carga Visual =
VAR UnidadesSimuladas =
GENERATE(
VALUES('Producto'[Categoria]),
GENERATESERIES(1, 1000, 1)
)
RETURN
SUMX(UnidadesSimuladas, [Importe Total Ventas] * 0.001)Seguridad y privacidad: el riesgo de exfiltración
La seguridad no se limita a quién puede ver el informe. En el caso de los visuales de terceros, el riesgo reside en la comunicación. Algunos visuales requieren conectar con servidores externos para realizar cálculos complejos o para cargar mapas personalizados. Esto es una línea roja en la mayoría de las auditorías de seguridad corporativas.
Si el visual no es certificado, debes revisar si el desarrollador tiene una política de privacidad clara. Pregúntate: ¿Por qué este visual de gráfico de barras necesita acceso a internet? Si no hay una justificación técnica (como el uso de una API de geocodificación), descártalo inmediatamente.
Además, considera la interacción con la Actualización programada en Power BI: errores de Gateway, credenciales y optimización. Aunque el visual sea una capa de presentación, si requiere recursos externos, puede fallar en entornos cerrados o con Firewalls estrictos, generando tickets de soporte innecesarios.
| Característica | Visual Nativo | Visual Certificado | Visual No Certificado |
|---|---|---|---|
| Seguridad de Datos | Máxima (Entorno Microsoft) | Alta (Auditado por MSFT) | Variable (Riesgo de exfiltración) |
| Exportar a PDF/PPT | Sí | Sí | No |
| Rendimiento | Optimizado | Variable (Depende del autor) | Variable (Riesgo de bloqueos) |
| Soporte RLS | Nativo | Sí | Sí (pero con riesgos de fuga) |
| Uso Offline | Sí | Sí | Depende (algunos llaman a APIs) |
Mantenimiento y ciclo de vida: el visual huérfano
Este es el punto que más afecta a la consultoría a largo plazo. Un visual personalizado es código que alguien debe mantener. Si el desarrollador (ya sea una empresa pequeña o un individuo) deja de actualizar el visual, este puede dejar de funcionar tras una actualización del API de Power BI.
He visto proyectos donde el informe principal de la compañía dependía de un visual de terceros que quedó abandonado. Al actualizarse la versión de Power BI Desktop, el visual empezó a mostrar errores de JavaScript, obligando a rehacer páginas enteras del informe en tiempo récord.
Antes de elegir un visual, revisa en AppSource la fecha de la última actualización y el historial de versiones. Si el visual no se ha actualizado en los últimos 12 meses, es un candidato firme a convertirse en un problema de mantenimiento. Siempre es preferible usar una combinación creativa de visuales nativos (técnicas de superposición, uso de rectángulos y medidas DAX avanzadas) que depender de un componente externo inestable.
Preparación de datos para visuales complejos
Muchos visuales de terceros (como los de tipo jerárquico o diagramas de cuerdas) requieren que los datos lleguen en un formato específico, a menudo desnormalizado o con estructuras de padre-hijo. En lugar de forzar esto en el modelo de datos (lo cual rompería nuestro esquema en estrella), utiliza Power Query para preparar una tabla específica para ese visual.
// Transformación para visual de Sankey (Origen, Destino, Valor)
let
Origen = Ventas,
SeleccionColumnas = Table.SelectColumns(Origen, {"Canal", "Categoria", "Importe"}),
Agrupacion = Table.Group(SeleccionColumnas, {"Canal", "Categoria"},
{{"Total", each Number.Round(List.Sum([Importe]), 2), type number}})
in
AgrupacionErrores frecuentes al usar visuales de terceros
- Sobrecargar el informe: Usar 5 visuales personalizados diferentes en una sola página. Cada uno carga sus propias librerías, multiplicando el tiempo de carga total.
- Ignorar el modo oscuro/claro: Muchos visuales de terceros tienen colores fijos y no responden correctamente a los temas de Power BI.
- Ignorar el Cross-filtering: Algunos visuales no emiten eventos de filtrado hacia el resto del informe, actuando como islas de información.
Protocolo de validación técnica (Checklist)
- Verificar Certificación: ¿Tiene el check azul? Si no, ¿está justificado su uso por una necesidad de negocio crítica?
- Auditoría de Red: Usar las herramientas de desarrollador del navegador (F12) para confirmar que el visual no realiza peticiones externas (tab Network).
- Impacto en Performance Analyzer: El tiempo de ‘Visual Display’ no debe exceder los 500-800ms con un set de datos real.
- Compatibilidad de Exportación: Confirmar que los usuarios que reciben suscripciones por email verán el gráfico y no un error.
- Historial del Desarrollador: ¿Es una empresa reconocida? ¿Cuándo fue la última actualización?
Preguntas frecuentes
¿Puedo usar visuales no certificados si mi empresa usa Private Links?
Los Private Links aseguran la conexión entre tu red y Azure, pero el visual se ejecuta en el navegador del cliente. Si el visual tiene código para enviar datos a una URL externa, lo hará a través de la conexión a internet del usuario, saltándose la protección del Private Link.
¿Por qué mi visual personalizado se ve en blanco al exportar a PDF?
Esto ocurre casi siempre porque el visual no está certificado. Microsoft solo permite el renderizado de visuales certificados en el motor de exportación del servicio para evitar la ejecución de código no verificado en sus servidores.
¿Es mejor comprar una licencia de un visual de pago o intentar hacerlo con Charticulator?
Si el visual es crítico y el presupuesto lo permite, un visual de pago (como los de Zebra BI o ZoomCharts) ofrece soporte técnico y actualizaciones garantizadas. Charticulator o Deneb son excelentes para personalización total, pero requieren que tú seas el responsable de mantener ese código JSON/Vega-Lite en el futuro.





