Programa Power BI para SunFruits Exports · Módulo 2 · Día 8
Sesión 8 Seguridad (RLS) y publicación
RLS dinámica, Power BI Service, gateway y refresco incremental
Bloque A · RLSBloque B · Publicación y operación
Sesión de cierre del programa
Mapa de la sesión
🅰 Bloque A — 45 min
Row Level Security
RLS estática (por rol)
Tabla de seguridad
RLS dinámica con USERPRINCIPALNAME()
Validar y caveats en DirectQuery
🅱 Bloque B — 45 min
Publicación y operación
Publicar al Service
Gateway on-premise
Refresco programado e incremental
Apps y distribución
Objetivos de aprendizaje
Al terminar la sesión vas a poder…
Asegurar
Implementar RLS estática y dinámica por usuario.
Publicar
Llevar el reporte al Service con gateway y refresco.
Operar
Configurar refresco incremental y distribuir con Apps.
💡 Idea fuerza
Un reporte en producción no es "publicar y listo": es seguridad + refresco confiable + distribución. Aquí cerramos el ciclo de un proyecto BI real.
Bloque A · 45 min
Row Level Security
Que cada quien vea solo lo suyo
¿Qué es RLS?
Row Level Security filtra las filas que cada usuario puede ver, según su rol.
Sin RLS
Todos ven todas las ventas de todas las regiones.
Con RLS
El comercial de Europa ve solo Europa; gerencia ve todo. Un mismo reporte, datos según el usuario.
Se define con un filtro DAX sobre una tabla (normalmente una dimensión).
RLS estática (por rol)
Creas un rol por grupo y le pones un filtro fijo.
Modelado → Administrar roles → Crear
Rol "Europa" con filtro sobre Clientes
Simple, pero no escala si hay muchas regiones
// Filtro de tabla del rol (Clientes)
[Region Comercial] ="Europa"
Un rol por región = muchos roles que mantener.
Tabla de seguridad
La clave de la RLS dinámica: una tabla que mapea usuario → qué puede ver.
Email
Region Comercial
luis.tafur@sunfruits.com.pe
Europa
maria.rojas@sunfruits.com.pe
Asia
carlos.mendoza@sunfruits.com.pe
Norteamerica
carlos.mendoza@sunfruits.com.pe
Europa
gerencia@sunfruits.com.pe
(todas las regiones)
Ya viene en la BD de SunFruits: tabla seguridad. Un usuario puede tener varias filas.
RLS dinámica con USERPRINCIPALNAME()
Un solo rol que se adapta al usuario conectado. USERPRINCIPALNAME() devuelve su correo.
// Filtro del rol 'RLS Dinámica' sobre la tabla Clientes
[Region Comercial] INSELECTCOLUMNS(
FILTER(Seguridad, Seguridad[Email] =USERPRINCIPALNAME()),
"r", Seguridad[Region Comercial])
Alternativa con relación: filtrar Seguridad[Email] = USERPRINCIPALNAME() y propagar.
Validar los roles
En Desktop
Modelado → Ver como
Elige el rol y, para el dinámico, escribe un correo de prueba
Confirma que solo aparecen las regiones permitidas
En el Service
Asigna los roles a usuarios/grupos en la seguridad del modelo semántico. USERPRINCIPALNAME() ahí devuelve el correo real.
RLS en DirectQuery / compuesto
El filtro RLS se traduce a SQL en cada consulta: mantenlo simple.
Evita la dirección de filtro bidireccional: puede filtrar de menos o de más.
No actives "Actualizar/eliminar relaciones al refrescar" si tu RLS depende de ellas.
Prueba siempre con "Ver como" tras cualquier cambio de modelo: la seguridad es lo último que quieres romper.
Bloque B · 45 min
Publicación y operación
Service, gateway y refresco
Publicar al Power BI Service
Power BI Desktop .pbix
→
Workspace área de trabajo
→
App consumidores
Inicio → Publicar al workspace del cliente.
Asigna los roles RLS a usuarios/grupos en el modelo semántico.
Roles de workspace: Visor / Colaborador / Miembro / Administrador.
Gateway on-premise
El gateway es el puente entre el Service (nube) y tus datos locales (SQL on-premise o Excel en red).
Instala el On-premises data gateway (modo estándar)
En un servidor con acceso al origen
Mapea el origen y sus credenciales en el Service
Power BI Service (nube)
↕
Gateway
↕
BD SunFruits / Excel (on-premise)
Refresco programado
En el modelo semántico → Actualización programada: define frecuencia y horarios.
Hasta 8 refrescos/día en Pro; más en capacidad Premium/Fabric.
Configura notificaciones de fallo al responsable.
Para SunFruits: refresco diario tras el cierre de operaciones; alerta al correo de TI si falla.
Refresco incremental: por qué
Refrescar 4 años completos cada día es un desperdicio. El incremental refresca solo lo reciente y archiva el histórico.
Refrescos más rápidos y livianos
Menos carga en el origen
Requiere parámetros RangeStart/RangeEnd
Parámetros RangeStart / RangeEnd · Microsoft Learn
Configurar el refresco incremental
Política de actualización incremental · Microsoft Learn
En la tabla Ventas → Actualización incremental:
Archivar datos de los últimos N años
Actualizar (incrementalmente) los últimos M meses
Opcional: detectar cambios
El filtro debe plegar
// Filtro que habilita el incremental (debe foldear)=Table.SelectRows(Origen, each
[fecha_pedido] >= RangeStart and
[fecha_pedido] < RangeEnd)
Si no pliega al origen, el incremental no funciona bien.
Aviso: el paso debe plegar · Microsoft Learn
Distribución y gobierno
Distribuir
Publica una App del workspace para consumidores
Controla el acceso por audiencias
Gobierno
Etiquetas de confidencialidad
Documenta orígenes, gateway, horarios y matriz RLS
Versiona (PBIP + Git) en proyectos serios
🛠 Taller de la sesión
Parte 1 — RLS
Carga la tabla seguridad de SunFruits.
Crea el rol "RLS Dinámica" con USERPRINCIPALNAME().
Valida con "Ver como" usando correos de prueba.
Parte 2 — Publicar
Publica al workspace y asigna roles RLS.
Configura el refresco incremental con RangeStart/RangeEnd.
Programa el refresco y publica la App.
Resumen — puntos importantes
🅰 RLS
Filtra filas por usuario/rol
Tabla de seguridad + USERPRINCIPALNAME()
Un solo rol dinámico escala mejor
Valida con "Ver como"
🅱 Publicación
Service + roles RLS asignados
Gateway para orígenes on-premise
Refresco programado e incremental (debe plegar)
Apps + gobierno
🎯 Una idea: producción = seguridad + refresco confiable + distribución controlada.
Preguntas de repaso
Verifiquemos lo aprendido en esta sesión
1
¿Qué diferencia hay entre RLS estática y dinámica?
2
¿Qué devuelve USERPRINCIPALNAME() y para qué se usa en RLS?
3
¿Cuándo necesitas un gateway?
4
¿Qué ventaja da el refresco incremental y qué requisito tiene el filtro?
5
¿Por qué validar siempre con "Ver como" antes de publicar?
Sun Fruits Exports · Programa Power BI · Fin del curso
¡Gracias!
De un Excel sucio a un modelo seguro, optimizado y publicado. ¡Felicitaciones!
Edwin Barrientos Retuerto
Arquitecto de Inteligencia de Negocios & Cloud · Instructor
🌐 blog.arquitecturabi.pe
Siguiente nivel sugerido: PBIP + Git, pipelines de implementación y certificación PL-300