⚡ Power BI — Nivel 3 Experto
Time Intelligence, Row Level Security, optimización VertiPaq y publicación profesional en Power BI Service.
📖 Teoría
Las funciones de Time Intelligence permiten realizar comparaciones y acumulaciones a lo largo del tiempo. Requieren obligatoriamente una tabla de fechas marcada (Date Table) con una columna de fecha contigua sin huecos.
| Función | Propósito | Ejemplo práctico |
|---|---|---|
TOTALYTD |
Acumula la medida desde el inicio del año fiscal hasta la fecha actual | Ventas acumuladas enero-marzo del año en curso |
TOTALMTD |
Acumula la medida desde el inicio del mes | Ventas acumuladas del 1 al 15 del mes actual |
TOTALQTD |
Acumula desde el inicio del trimestre | Ventas del trimestre hasta hoy |
SAMEPERIODLASTYEAR |
Devuelve el mismo período del año anterior | Comparar ventas marzo 2024 vs marzo 2023 |
DATEADD |
Desplaza un período en el tiempo (días, meses, trimestres, años) | Ventas del mes anterior, hace 3 meses, hace 1 año |
PREVIOUSMONTH |
Devuelve el mes anterior completo | Comparación mes a mes (MoM) |
DATESYTD |
Genera la tabla de fechas desde inicio del año hasta la fecha del contexto | Usada dentro de CALCULATE para acumulados YTD |
PARALLELPERIOD |
Devuelve un período completo paralelo al actual | Mes completo anterior, trimestre anterior completo |
Ejemplos de uso real:
Ventas Año Anterior = CALCULATE(SUM(Ventas[Monto]), SAMEPERIODLASTYEAR(Fechas[Fecha]))
Ventas Mes Anterior = CALCULATE(SUM(Ventas[Monto]), DATEADD(Fechas[Fecha], -1, MONTH))
Crecimiento YoY % = DIVIDE([Ventas YTD] - [Ventas YTD AA], [Ventas YTD AA])
💡 Año fiscal personalizado: TOTALYTD acepta un tercer argumento para definir el fin del año fiscal: TOTALYTD(SUM(Ventas[Monto]), Fechas[Fecha], "06-30") para año fiscal que termina en junio.
Row Level Security (RLS) permite que diferentes usuarios vean solo las filas de datos que les corresponden, usando el mismo informe de Power BI. Se configura en Power BI Desktop y se gestiona en Power BI Service.
RLS Estático
- Los roles tienen condiciones fijas en DAX
- Se define manualmente en Power BI Desktop
- Ejemplo:
[Region] = "Norte" - Fácil de configurar, difícil de escalar
- Ideal para pocas regiones o departamentos fijos
RLS Dinámico
- Usa
USERNAME()oUSERPRINCIPALNAME() - Se basa en una tabla de seguridad en la BD
- Un solo rol para todos los usuarios
- Escala a miles de usuarios sin modificar el informe
- Ideal para grandes organizaciones
[Region] = "Norte"
// RLS Dinámico — el usuario ve solo sus datos
[Email] = USERPRINCIPALNAME()
// RLS Dinámico con tabla de seguridad
[VendedorID] IN VALUES(Seguridad[VendedorID]) &&
RELATED(Seguridad[Email]) = USERPRINCIPALNAME()
💡 Pasos para configurar RLS: Power BI Desktop → Modelado → Administrar roles → Definir condición DAX → Publicar → Power BI Service → Seguridad → Asignar miembros al rol.
VertiPaq es el motor de almacenamiento columnar en memoria de Power BI. Comprime y codifica los datos por columna, lo que hace que las consultas analíticas sean extremadamente rápidas.
| Concepto | Impacto en rendimiento | Recomendación |
|---|---|---|
| Cardinalidad alta | Más memoria, peor compresión | Eliminar columnas de texto libre, GUIDs, timestamps precisos |
| Cardinalidad baja | Mejor compresión, menos memoria | Usar campos categóricos: País, Categoría, Año |
| Medidas vs Columnas calculadas | Columnas calculadas se almacenan en memoria; medidas se calculan en tiempo de consulta | Preferir medidas sobre columnas calculadas cuando sea posible |
| VAR / RETURN | Evita recalcular la misma expresión varias veces | Usar VAR para guardar resultados intermedios |
| FILTER sobre tabla grande | Escanea fila por fila — muy lento | Usar CALCULATE con argumentos de filtro directos |
| Relaciones bidireccionales | Aumentan complejidad y pueden causar ambigüedad | Usar solo cuando sea necesario; preferir tablas puente |
Ventas Top = CALCULATE(SUM(Ventas[Monto]),
FILTER(Ventas, Ventas[Monto] > 1000))
// ✅ Rápido — usar VAR y argumentos de filtro directos
Ventas Eficiente =
VAR Umbral = 1000
RETURN
CALCULATE(SUM(Ventas[Monto]),
Ventas[Monto] > Umbral)
💡 Herramienta recomendada: DAX Studio + VertiPaq Analyzer para medir tamaño de columnas, cardinalidad y tiempo de consulta.
Relaciones Many-to-Many (M:M) ocurren cuando un registro de la tabla A puede relacionarse con múltiples registros de la tabla B y viceversa. Ejemplo: vendedores que atienden múltiples regiones.
Tabla Puente (Bridge Table)
Resuelve M:M creando una tabla intermedia que contiene solo las combinaciones válidas. Power BI crea dos relaciones 1:N con la tabla puente.
Ejemplo: Vendedor → VendedorRegion (puente) → Region
Date Table (Tabla de Fechas)
Tabla con una fila por cada día del rango de datos. Obligatoria para Time Intelligence. Debe estar marcada como "Tabla de fechas" en el modelo.
Columnas típicas: Fecha, Año, Mes, Trimestre, DíaSemana, EsFinDeSemana
Fechas = CALENDARAUTO()
// Crear Date Table con rango específico
Fechas = CALENDAR(DATE(2020,1,1), DATE(2025,12,31))
// Agregar columnas calculadas a la Date Table
Año = YEAR(Fechas[Date])
MesNombre = FORMAT(Fechas[Date], "MMMM")
Trimestre = "Q" & QUARTER(Fechas[Date])
EsFinDeSemana = WEEKDAY(Fechas[Date],2) >= 6
Power BI Service (app.powerbi.com) es la plataforma en la nube donde se publican, comparten y administran los informes creados en Power BI Desktop.
| Componente | Descripción |
|---|---|
| Workspace | Espacio de trabajo colaborativo. Contiene datasets, informes, dashboards y dataflows. Requiere licencia Pro o Premium por usuario para compartir. |
| App de Power BI | Empaqueta un workspace entero para distribuirlo a usuarios finales con interfaz personalizada. |
| Gateway on-premise | Conecta datos locales (SQL Server, Oracle, archivos en red) con Power BI Service para actualizaciones programadas. |
| Dataflow | ETL en la nube con Power Query. Los dataflows son reutilizables por múltiples datasets. |
| Actualización programada | Hasta 8 actualizaciones/día (Pro) o 48/día (Premium). Requiere gateway si los datos son locales. |
| Alertas | Notificaciones automáticas cuando un KPI supera un umbral definido. |
- Embebido en SharePoint: Insertar un informe de Power BI en una página de SharePoint Online usando el web part nativo de Power BI. Los usuarios ven el informe sin salir de SharePoint.
- Embebido en Teams: Agregar una pestaña de Power BI en un canal de Teams. Los reportes se actualizan en tiempo real y los miembros pueden interactuar con los filtros.
- Power Automate + Power BI: Crear flujos que se disparan cuando un dato supera un umbral (alert), generan capturas del informe, envían reportes por email o guardan datos exportados en OneDrive.
- Exportar a PDF / PowerPoint: Desde Power BI Service: Archivo → Exportar → PDF o PowerPoint. Exporta todas las páginas del informe con los filtros aplicados.
- API REST de Power BI: Permite automatizar publicación de informes, refrescar datasets, gestionar permisos y embeber informes en aplicaciones web propias (Embedded Analytics).
- Power BI Embedded: Para desarrolladores que quieren incluir Power BI en su propia app usando tokens de acceso (sin que el usuario necesite licencia Power BI).
📊 Simulador: Análisis Temporal de Ventas
Dashboard ejecutivo con Time Intelligence — selecciona año, mes y sucursal para ver las comparativas. Las fórmulas DAX equivalentes aparecen en cada tarjeta.
| Mes | Ventas Mes | Ventas YTD | YTD Año Ant. | Δ vs AA |
|---|
TOTALYTD(SUM(Ventas[Monto]), Fechas[Fecha]) | CALCULATE([Ventas YTD], SAMEPERIODLASTYEAR(Fechas[Fecha]))
🧪 Laboratorio DAX Avanzado
8 fórmulas DAX de nivel experto con código, explicación y caso de uso empresarial real.
🔐 Configurador de RLS Interactivo
Selecciona un rol pre-configurado o crea uno propio para simular qué datos vería cada usuario en el dashboard.
Roles pre-configurados
Crear rol personalizado
Rol activo: Gerente General
Condición DAX: Sin restricción — ve todos los datos
Vista simulada del dashboard:
💡 Importante en Power BI Service:
- Los roles se asignan a usuarios o grupos de seguridad de Azure AD
- El creador del informe siempre ve todos los datos (es admin)
- Usar "Probar como rol" en Power BI Desktop para validar antes de publicar
📚 Diccionario — Nivel 3
🎬 Videos en Español
⏱️ Time Intelligence DAX — TOTALYTD, SAMEPERIODLASTYEAR
🔐 Row Level Security (RLS) en Power BI
⚙️ Optimización y rendimiento Power BI — VertiPaq
☁️ Publicar informe en Power BI Service — Workspaces y Gateways
✅ Cuestionario — Nivel 3
10 preguntas aleatorias del banco de 50. Calificación de 0 a 100.
Tu calificación: