⚡ Power BI — Nivel 2
DAX Intermedio · Power Query · Modelo de Datos avanzado · Visualizaciones profesionales
📖 Teoría
En el Nivel 2 de DAX se trabajan las funciones que permiten modificar el contexto de filtro y navegar entre tablas relacionadas. Son la base de cualquier análisis avanzado.
| Función | ¿Qué hace? | Ejemplo de uso |
|---|---|---|
| CALCULATE | Evalúa una expresión modificando el contexto de filtro activo | Ventas solo de región Norte aunque el slicer muestre todas |
| FILTER | Devuelve una tabla con las filas que cumplen una condición | Tabla de ventas donde Monto > 1.000.000 |
| ALL | Elimina todos los filtros de una tabla o columna | Calcular % del total ignorando los slicers |
| ALLEXCEPT | Elimina todos los filtros EXCEPTO los de las columnas indicadas | % del total de cada categoría, respetando el filtro de año |
| RELATED | Trae un valor de una tabla relacionada (lado 1 de 1:N) | En tabla Ventas, traer el nombre del cliente desde Clientes |
| RELATEDTABLE | Trae una tabla de filas relacionadas (lado N de 1:N) | En tabla Clientes, contar todas sus ventas |
💡 CALCULATE es la función más importante de DAX. Casi toda fórmula avanzada la usa como envoltorio para cambiar qué datos se calculan.
En DAX existen dos contextos de evaluación que determinan cómo se calculan las fórmulas:
- • Lo crean los slicers, filtros de página y las filas/columnas de un visual (tabla, matrix)
- • Determina qué filas de la tabla se consideran en una medida
- • Se puede modificar con CALCULATE
- • Ejemplo: Slicer "Región = Norte" → la medida SUM solo suma ventas del Norte
- • Lo crean las columnas calculadas y la función SUMX / iteradores
- • La fórmula se evalúa fila por fila, sabiendo en qué fila está
- • Una medida NO tiene contexto de fila por defecto
- • Ejemplo: columna calculada Margen = Ventas[Precio] - Ventas[Costo] — cada fila usa sus propios valores
⚡ La trampa clásica:
Dentro de una columna calculada existe contexto de fila, pero
no contexto de filtro. Si quieres usar funciones como
SUM() dentro de una columna, debes envolver con
CALCULATE() para que DAX cree el contexto de filtro correcto. Esto se
llama "transición de contexto".
| Criterio | Medida (Measure) | Columna calculada |
|---|---|---|
| ¿Cuándo se calcula? | En tiempo de consulta (cuando el visual se renderiza) | Al cargar o actualizar el modelo |
| Contexto de evaluación | Contexto de filtro del visual | Contexto de fila (fila por fila) |
| ¿Ocupa espacio en disco? | No — no almacena datos | Sí — se guarda en el modelo comprimido |
| ¿Se puede usar en slicer? | No directamente | Sí — como cualquier columna |
| ¿Reacciona a filtros? | Sí — responde dinámicamente | No — valor fijo al cargar |
| Icono en Power BI | 🧮 (calculadora) | fx (función) |
| Ejemplo típico | Ventas Totales = SUM(Ventas[Monto]) | PrecioConIVA = Ventas[Precio] * 1.19 |
| ¿Cuándo usarla? | Cuando necesitas un valor que cambie según el contexto del visual | Cuando necesitas una columna derivada para filtrar o agrupar |
💡 Regla práctica: preferir medidas para cálculos. Solo usar columnas calculadas cuando la columna se necesita como dimensión (para filtrar, agrupar o hacer jerarquías).
Power Query es el motor de preparación de datos de Power BI (y Excel). Trabaja con el lenguaje M y registra cada transformación como un Paso Aplicado que se puede editar o eliminar.
🖥️ El Editor de Power Query
- Se abre desde Inicio → Transformar datos
- Panel izquierdo: lista de consultas (tablas)
- Panel derecho: Pasos aplicados — el historial de transformaciones
- Vista previa central: los datos transformados hasta el paso actual
- Cada paso genera código M automáticamente
📋 Pasos Aplicados
- Se registran en orden secuencial
- Se puede hacer clic en cualquier paso para ver el estado de los datos en ese momento
- Se puede eliminar, reordenar o editar cualquier paso
- El paso Source siempre es el primero (la conexión)
- Los cambios se aplican al actualizar el modelo
Tipos de transformación principales:
✂️ Dividir columna
Separar una columna en dos por delimitador (coma, espacio) o por número de caracteres. Ej: "Apellido, Nombre" → dos columnas.
🔗 Combinar (Merge/Append)
Merge: une dos tablas como un JOIN por columna clave. Append: apila tablas con la misma estructura.
↔️ Pivotar / Despivotar
Pivotar: convierte valores de una columna en encabezados. Despivotar: convierte encabezados en filas (normalización).
🔄 Reemplazar valores
Sustituir un valor por otro en toda la columna. Útil para limpiar nulos, corregir errores tipográficos o estandarizar categorías.
🔢 Cambiar tipo
Definir el tipo de dato de una columna: texto, número entero, decimal, fecha, booleano. Fundamental antes de cargar al modelo.
🧹 Eliminar filas
Quitar filas superiores/inferiores, duplicados, errores o filas vacías. Limpia los datos antes del análisis.
El modelo de datos define cómo se relacionan las tablas. Un modelo bien diseñado es la base de todo análisis correcto y eficiente en Power BI.
Tipos de cardinalidad en relaciones:
1 : N
Uno a Muchos
La más común. Dim → Hechos. Un cliente puede tener muchas ventas. La clave principal está en el lado "1".
✅ RecomendadaN : N
Muchos a Muchos
Power BI la soporta pero puede causar ambigüedad. Se recomienda resolver con tabla puente intermedia.
⚠️ Usar con cuidado1 : 1
Uno a Uno
Cada fila de una tabla corresponde a exactamente una fila en la otra. Poco común; indica que las tablas podrían fusionarse.
⚡ Poco frecuenteEsquema estrella vs Copo de nieve:
| Criterio | ⭐ Esquema Estrella | ❄️ Copo de Nieve |
|---|---|---|
| Estructura | Tabla hechos + dimensiones directas (1 nivel) | Tabla hechos + dimensiones con sub-dimensiones (N niveles) |
| Rendimiento | Mejor — menos JOINs necesarios | Más lento — más tablas que relacionar |
| Complejidad | Simple — fácil de entender | Complejo — normalizado como BD relacional |
| Redundancia | Sí — datos repetidos en dimensiones | No — totalmente normalizado |
| Recomendación Power BI | ✅ Preferido en Power BI | Aceptable si viene del origen; aplanar con Power Query |
Dirección de filtro en relaciones:
→ Filtro único (Single)
El filtro fluye desde el lado "1" (dimensión) hacia el lado "N" (hechos). Es el comportamiento estándar y recomendado. Evita ambigüedades.
↔️ Filtro bidireccional (Both)
El filtro fluye en ambas direcciones. Útil en relaciones N:N o para contar elementos en la dimensión. Puede crear resultados inesperados — usar con precaución.
📋 Matrix (Matriz)
Como una tabla dinámica de Excel. Muestra datos en filas y columnas con subtotales automáticos y posibilidad de expandir/contraer jerarquías. Ideal para comparar categorías cruzadas (región × trimestre).
🌳 Treemap
Rectángulos proporcionales al valor de cada categoría. Muestra jerarquías y proporciones de un vistazo. Perfecto para ver participación de mercado o distribución de ventas por producto.
✦ Scatter Chart (Dispersión)
Muestra la relación entre dos métricas numéricas. El eje X y Y son medidas; el tamaño del punto puede ser una tercera métrica. Útil para detectar correlaciones y outliers.
🌊 Waterfall (Cascada)
Muestra cómo un valor inicial llega a un valor final a través de aumentos y disminuciones intermedias. Ideal para analizar variaciones de ingresos, costos o beneficios.
🔍 Decomposition Tree (Árbol de descomposición)
Visual de inteligencia artificial que permite explorar interactivamente los factores que explican un valor. El usuario elige qué dimensión descomponer en cada nivel. Power BI puede sugerir automáticamente la dimensión que más explica la variación (High value / Low value).
📊 Simulador de Dashboard Avanzado
Dashboard "Ventas por región - Análisis avanzado". Usa los slicers para filtrar KPIs, barras, treemap y matrix simultáneamente.
📊 Ventas por Región — Análisis Avanzado 2024
Actualizado: Mayo 2024 · Modelo estrella · DAX Nivel 2
⚡ Simulador educativo — en Power BI real los filtros cruzados ocurren instantáneamente entre todas las visualizaciones de la página.
🧪 Laboratorio DAX
Haz clic en cada fórmula para expandir su explicación, código y resultado de ejemplo.
📚 Diccionario — Nivel 2
🎬 Videos de Apoyo
CALCULATE en DAX — explicación completa en español
Power Query en Power BI — transformaciones desde cero en español
Modelo de datos y relaciones avanzadas en Power BI
Contexto de filtro y contexto de fila en DAX — Power BI
📝 Cuestionario — Nivel 2
10 preguntas aleatorias del banco de 50. Calificación de 0 a 100. Preguntas sobre DAX intermedio, Power Query y modelo de datos.
Tu calificación: