⚡ Power BI — Nivel 3 Experto

Time Intelligence, Row Level Security, optimización VertiPaq y publicación profesional en Power BI Service.

NIVEL 3 Time Intelligence RLS VertiPaq Power BI Service Quiz 10/50

📖 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 YTD = TOTALYTD(SUM(Ventas[Monto]), Fechas[Fecha])

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() o USERPRINCIPALNAME()
  • 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
// RLS Estático — solo ve datos de Norte
[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
// ❌ Lento — FILTER escanea toda la tabla
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

// Crear Date Table automática con DAX
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.

Año:
Mes:
Sucursal:
Ventas Período
$0
Ventas YTD
$0
TOTALYTD(SUM(Ventas[Monto]), Fechas[Fecha])
vs Período Anterior
DATEADD(Fechas[Fecha], -1, MONTH)
vs Mismo Período AA
SAMEPERIODLASTYEAR(Fechas[Fecha])
📈 Tendencia mensual — Año seleccionado vs Año anterior
Año actual Año anterior
📉 Variación mensual (Waterfall)
DAX: [Ventas Mes] - CALCULATE([Ventas Mes], PREVIOUSMONTH(Fechas[Fecha]))
📋 Tabla acumulada YTD vs Año anterior
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.