1.
P1: CALCULATE con filtros — diagnóstico de código
Se tiene un modelo de Power BI con una tabla de hechos llamada Eventos y una tabla de dimensión llamada Modelos. Un analista escribe la siguiente medida:
Ventas_Modelo_A =
CALCULATE(
SUM(Eventos[Monto]),
Modelos[NombreModelo] = \"Modelo A\"
)
Al probar la medida en un visual, el resultado es incorrecto: devuelve el total general en lugar de filtrar por \"Modelo A\".
¿Cuál es el error en el código DAX?
2.
P2: RELATED vs RELATEDTABLE
Un modelo contiene dos tablas: Modelos (una fila por modelo, ~50 registros) y Eventos (muchas filas por modelo). La relación es uno-a-muchos desde Modelos hacia Eventos.
Un desarrollador escribe esta columna calculada en la tabla Modelos:
Conteo_Eventos =
RELATED(Eventos[EventoID])
El archivo no compila y arroja error. ¿Por qué falla esta expresión?
3.
P3: Medida semáforo con SWITCH y umbrales
Se requiere crear una medida que clasifique el desempeño de cada modelo según su tasa de eventos completados. El criterio es: verde si >= 80%, amarillo si entre 50% y 79%, rojo si = 0.8, \"Verde\",
[Tasa_Completados] >= 0.5, \"Amarillo\",
\"Rojo\"
)
¿Qué problema tiene esta implementación para usarse como indicador visual en Power BI?
4.
P4: ALL vs ALLEXCEPT en contexto de filtro
Un reporte muestra el % que representa cada modelo sobre el total general. La medida es:
Pct_del_Total =
DIVIDE(
SUM(Eventos[Monto]),
CALCULATE(SUM(Eventos[Monto]), ALL(Eventos))
)
El usuario aplica un filtro de fecha y nota que el denominador ya no representa el total filtrado por fecha, sino el total absoluto de toda la tabla.
¿Cómo debe modificarse la medida para respetar el filtro de fecha pero ignorar solo el filtro de modelo?
5.
P5: Relación inactiva y USERELATIONSHIP
El modelo tiene una tabla Eventos con dos columnas de fecha: FechaCreacion y FechaCierre. La tabla Calendario está relacionada con Eventos[FechaCreacion] (relación activa). Se necesita una medida que cuente eventos por FechaCierre.
Un desarrollador escribe:
Eventos_Cerrados =
CALCULATE(
COUNT(Eventos[EventoID]),
Eventos[FechaCierre] = MAX(Calendario[Fecha])
)
La medida produce resultados incorrectos. ¿Cuál es la solución adecuada?
6.
P6: DIVIDE vs operador de división — manejo de errores
Una medida calcula la tasa de conversión:
Tasa_Conversion =
Eventos[Completados] / Eventos[Total]
En algunos modelos, Eventos[Total] es cero, lo que genera errores en el visual.
¿Cuál es la práctica correcta en DAX para manejar este caso?
7.
P7: SUMX vs SUM — contexto de fila
Un analista necesita calcular el ingreso ponderado: cantidad por precio unitario, sumado sobre todos los eventos. Escribe:
Ingreso_Total =
SUM(Eventos[Cantidad] * Eventos[PrecioUnitario])
El código no compila. ¿Por qué falla y cuál es la expresión correcta?
8.
P8: Cardinalidad y rendimiento en relaciones
Un modelo en Power BI contiene aproximadamente 50 modelos y una tabla de Eventos con 2 millones de filas. Un desarrollador crea la relación entre ambas tablas usando una columna de texto NombreModelo en lugar de una clave entera ModeloID.
¿Cuál es el impacto principal de esta decisión sobre el rendimiento del modelo?
9.
P9: RANKX y orden descendente
Se necesita rankear los 50 modelos por su monto total de eventos, del mayor al menor. Un analista escribe:
Ranking_Modelo =
RANKX(ALL(Modelos), [Monto_Total])
Al revisar los resultados, el modelo con mayor monto aparece con el ranking más alto numéricamente (50), no con 1.
¿Qué parámetro corrige el orden?
10.
P10: Tabla calculada vs medida para segmentación
Un usuario necesita un segmentador de \"rangos de monto\" en el reporte: [Bajo: 0-10k], [Medio: 10k-50k], [Alto: >50k]. Propone crear la clasificación con esta medida:
Rango_Monto =
IF([Monto_Total] < 10000, \"Bajo\",
IF([Monto_Total] < 50000, \"Medio\", \"Alto\"))
Intenta usar esta medida directamente en un segmentador (slicer). No funciona. ¿Por qué?
11.
P11: Contexto de filtro y contexto de fila — error conceptual
Un desarrollador crea esta columna calculada en la tabla Eventos:
Promedio_Global =
AVERAGE(Eventos[Monto])
Espera que cada fila muestre el promedio global de toda la tabla, pero en cambio cada fila muestra el mismo valor (el promedio correcto). Concluye que \"hay un error\" porque pensaba que la columna usaría el monto de la fila actual.
¿Cuál es la explicación correcta del comportamiento observado?
12.
P12: Medida de tendencia con DATESINPERIOD
Se requiere una medida que calcule el promedio móvil de eventos de los últimos 3 meses. Un analista escribe:
Promedio_Movil_3M =
CALCULATE(
AVERAGE(Eventos[Monto]),
DATESINPERIOD(Calendario[Fecha], LASTDATE(Calendario[Fecha]), -3, MONTH)
)
¿Qué condición del modelo es indispensable para que esta medida funcione correctamente?
13.
P13: Error de tipo en merge de DataFrames
Un analista tiene dos DataFrames: df_modelos con columna modelo_id de tipo string, y df_eventos con columna modelo_id de tipo integer. Ejecuta:
import pandas as pd
resultado = pd.merge(df_modelos, df_eventos, on=\'modelo_id\')
print(resultado.shape)
# Output: (0, 8)
El resultado tiene cero filas a pesar de que hay datos en ambas tablas. ¿Cuál es el problema?
14.
P14: SettingWithCopyWarning — modificación de slice
Un desarrollador ejecuta el siguiente código y recibe un SettingWithCopyWarning:
import pandas as pd
df_activos = df_eventos[df_eventos[\'estado\'] == \'activo\']
df_activos[\'prioridad\'] = \'alta\'
Aunque el warning no detiene la ejecución, la columna no siempre se actualiza correctamente en df_activos. ¿Cuál es la causa del warning y cómo debe corregirse?
15.
P15: groupby con múltiples agregaciones
Se necesita calcular por cada modelo_id: el total de monto, el conteo de eventos y el promedio de duración. Un analista escribe:
resumen = df_eventos.groupby(\'modelo_id\').agg(
total_monto=(\'monto\', \'sum\'),
conteo_eventos=(\'evento_id\', \'count\'),
promedio_duracion=(\'duracion\', \'mean\')
)
Al revisar los resultados, modelo_id aparece como índice del DataFrame resultante, no como columna. ¿Cómo se corrige para que modelo_id sea una columna regular?
16.
P16: Error de KeyError en lectura de CSV
Un script carga un archivo CSV y accede a una columna:
import pandas as pd
df = pd.read_csv(\'eventos.csv\')
print(df[\'Modelo_ID\'].head())
# KeyError: \'Modelo_ID\'
Al revisar el archivo, la columna existe. ¿Cuál es la causa más probable del KeyError?
17.
P17: Filtrado con múltiples condiciones — error de operador
Un analista escribe:
import pandas as pd
filtro = df_eventos[df_eventos[\'estado\'] == \'activo\' and df_eventos[\'monto\'] > 5000]
El código lanza ValueError: The truth value of a Series is ambiguous. ¿Cuál es el error y cómo se corrige?
18.
P18: Exportación a CSV para Power BI — encoding
Un analista exporta un DataFrame a CSV para cargarlo en Power BI:
df_resultado.to_csv(\'reporte_modelos.csv\', index=False)
Al abrir el archivo en Power BI, los acentos y caracteres especiales en español (á, é, ñ) aparecen como símbolos incorrectos. ¿Cuál es la corrección?
19.
P19: apply() vs vectorización — rendimiento
Para clasificar 2 millones de eventos por monto, un desarrollador usa:
df_eventos[\'categoria\'] = df_eventos[\'monto\'].apply(
lambda x: \'alto\' if x > 50000 else (\'medio\' if x > 10000 else \'bajo\')
)
El proceso tarda varios minutos. ¿Cuál es el problema y cuál es la alternativa más eficiente?
20.
P20: Pivot table para análisis de modelos
Se tiene un DataFrame df_eventos con columnas: modelo_id, mes, tipo_evento, monto. Se necesita una tabla donde las filas sean modelo_id, las columnas sean mes, y los valores sean la suma de monto.
Un analista escribe:
tabla = df_eventos.pivot_table(
values=\'monto\',
index=\'modelo_id\',
columns=\'mes\',
aggfunc=\'sum\'
)
Al revisar la tabla, algunos valores aparecen como NaN donde no hubo eventos ese mes. ¿Cuál es el parámetro para rellenar esos vacíos con cero?
21.
P21: Lectura de múltiples archivos y concatenación
Un proceso carga 50 archivos CSV (uno por modelo) y los concatena:
import pandas as pd
import glob
archivos = glob.glob(\'modelos/*.csv\')
df_total = pd.DataFrame()
for archivo in archivos:
df = pd.read_csv(archivo)
df_total = pd.concat([df_total, df])
print(df_total.shape)
El código funciona pero es muy lento para 50 archivos con miles de filas cada uno. ¿Cuál es el problema de rendimiento y cómo se corrige?
22.
P22: Múltiples modelos — workspace y datasets
Una organización tiene aproximadamente 50 modelos de negocio, cada uno con su propia tabla de eventos. Un arquitecto propone crear un archivo .pbix separado por modelo y publicarlos todos en el mismo workspace de Power BI Service.
¿Cuál es el problema principal de esta arquitectura para un análisis comparativo entre modelos?
23.
P23: Formato condicional para semáforo visual
Se desea mostrar un indicador semáforo en una tabla de Power BI: un ícono de color verde, amarillo o rojo según el desempeño de cada modelo. Ya existe la medida DAX Semaforo_Color que devuelve el valor hexadecimal del color.
¿Cuál es el procedimiento correcto en Power BI Desktop para aplicar este color como fondo o ícono de una columna en la tabla?
24.
P24: Diagrama de relaciones — detección de ambigüedad
Al construir el modelo de datos en Power BI, un desarrollador conecta: Eventos → Modelos, Eventos → Calendario, y también Modelos → Calendario. Power BI muestra una de las relaciones con línea discontinua.
¿Qué indica la línea discontinua y cuál es el riesgo asociado?
25.
P25: Actualización incremental — configuración
El dataset de Eventos tiene 2 millones de filas y se actualiza diariamente con aproximadamente 5,000 nuevos registros. La actualización completa tarda 45 minutos. El cliente quiere reducir ese tiempo.
¿Cuál es la solución nativa de Power BI para este escenario?
26.
P26: Drill-through vs Drill-down — diferencia funcional
Un gerente quiere que al hacer clic en el nombre de un modelo en el reporte resumen, se abra una página de detalle con todos los eventos de ese modelo. Un desarrollador configura Drill-down en el visual de barras.
¿Por qué Drill-down no es la solución adecuada para este requerimiento?
27.
P27: Gráfico de líneas para tendencias — configuración correcta
Se necesita mostrar la tendencia mensual de eventos para los 50 modelos en un solo gráfico de líneas, con una línea por modelo. Al agregar modelo_id al campo Leyenda del visual, Power BI advierte que hay demasiadas categorías y muestra solo las primeras.
¿Cuál es la mejor práctica para manejar este escenario en Power BI?
28.
P28: Tablas de hechos y dimensiones — esquema estrella
Un desarrollador carga al modelo de Power BI una sola tabla desnormalizada con 15 columnas que incluye datos de eventos y atributos de los modelos (nombre, categoría, responsable, región). No crea tablas de dimensión separadas.
¿Cuál es el impacto principal de esta decisión sobre el modelo de Power BI?
29.
P29: Seguridad a nivel de fila (RLS)
El cliente requiere que cada responsable de modelo solo vea los datos de sus propios modelos al acceder al reporte publicado. Un desarrollador propone crear reportes separados por responsable.
¿Cuál es la solución nativa de Power BI que evita duplicar reportes?
30.
P30: Modo de almacenamiento — Import vs DirectQuery
El cliente tiene una base de datos transaccional que se actualiza en tiempo real. Quiere que el reporte de Power BI siempre muestre datos del momento actual sin esperar actualizaciones programadas.
Un consultor recomienda DirectQuery. ¿Cuál es la limitación más importante de DirectQuery que el cliente debe conocer?