Ayudante Certificado

Proyecto práctico de Power BI: analiza datos reales de Fantasy LaLiga

Octubre 2026 · ayudantecertificadopl.com · ~10 min de lectura

Resumen rápido: un ejercicio completo para practicar las cuatro áreas del PL-300 (preparar, modelar, visualizar y publicar) con un conjunto de datos pequeño, real y que cambia cada día: los 40 jugadores «chollo» de Fantasy LaLiga, con precio, media de puntos y predicción para la jornada. Te damos el código de Power Query y las medidas DAX listos para copiar.

El problema de casi todos los ejercicios de Power BI es que los datos son de mentira: la típica tabla de ventas de una tienda que no existe, con números que nunca cambian. Así se aprende a hacer clic, pero no a resolver lo que pasa con datos reales: tipos que no cuadran, columnas anidadas, valores que se actualizan y medidas que tienen que responder a una pregunta concreta.

En este proyecto vas a trabajar con datos que sí cambian. La web Tu Ayudante Fantasy publica cada día su lista de chollos de Fantasy LaLiga: jugadores de menos de 10 millones con buena media y buena predicción de puntos. La misma lista está disponible en formato JSON en una dirección pública, que es justo lo que necesitamos para practicar.

Qué vas a practicar del PL-300

Área del examenQué haces en este proyecto
Preparar los datosConectar a un origen web JSON, expandir registros, asignar tipos y crear columnas en Power Query
Modelar los datosMedidas DAX con DIVIDE, RANKX, CALCULATE y TOPN
Visualizar y analizarTabla con formato condicional, gráfico de dispersión, segmentación y tarjetas
Implementar y mantenerPublicar en el servicio y programar la actualización (sin puerta de enlace)

Paso 1: conectar a los datos

En Power BI Desktop: Obtener datos → Web, pega esta dirección y acepta el acceso anónimo:

https://www.tuayudantefantasy.com/api/especulacion/chollos

Power Query abrirá un registro con tres campos: jugadores (la lista que nos interesa), max_precio y total_candidatos. Cada jugador trae nombre, equipo, posición (1 portero, 2 defensa, 3 centrocampista, 4 delantero), precio en euros, media de puntos, partidos jugados, puntos previstos para la próxima jornada, porcentaje de titularidad, cambio de precio de la semana, precio máximo recomendado y una nota de chollo.

Paso 2: transformar con Power Query

Puedes hacerlo con clics (convertir la lista en tabla, expandir la columna y cambiar tipos), pero merece la pena ver el código M completo, porque en el examen te preguntarán qué hace cada paso. Abre el Editor avanzado y pega:

let
    Origen = Json.Document(Web.Contents("https://www.tuayudantefantasy.com/api/especulacion/chollos")),
    Jugadores = Origen[jugadores],
    Tabla = Table.FromList(Jugadores, Splitter.SplitByNothing(), {"Registro"}),
    Expandida = Table.ExpandRecordColumn(Tabla, "Registro",
        {"name", "team", "position", "precio", "media", "partidos", "pts_pred", "titular_pct", "cambio_pct", "max_pagar", "nota"},
        {"Jugador", "Equipo", "Posicion", "Precio", "Media", "Partidos", "PtsPrevistos", "Titularidad", "CambioPrecio", "MaxPagar", "Nota"}),
    Tipos = Table.TransformColumnTypes(Expandida, {
        {"Jugador", type text}, {"Equipo", type text}, {"Posicion", Int64.Type}, {"Precio", Int64.Type},
        {"Media", type number}, {"Partidos", Int64.Type}, {"PtsPrevistos", Int64.Type}, {"Titularidad", Int64.Type},
        {"CambioPrecio", type number}, {"MaxPagar", Int64.Type}, {"Nota", type number}}),
    Puesto = Table.AddColumn(Tipos, "Puesto", each
        if [Posicion] = 1 then "Portero" else if [Posicion] = 2 then "Defensa"
        else if [Posicion] = 3 then "Centrocampista" else "Delantero", type text),
    PrecioM = Table.AddColumn(Puesto, "Precio (M€)", each [Precio] / 1000000, type number)
in
    PrecioM

Llama a la consulta Chollos. Fíjate en tres detalles que caen en el examen:

Paso 3: medidas DAX

Con una sola tabla no hay relaciones que crear, así que el trabajo de modelado está en las medidas. Crea una tabla de medidas y añade estas cinco:

Media de puntos = AVERAGE ( Chollos[Media] )

Puntos por millón =
DIVIDE ( SUM ( Chollos[PtsPrevistos] ), SUM ( Chollos[Precio (M€)] ) )

Ranking por rentabilidad =
RANKX ( ALL ( Chollos[Jugador] ), [Puntos por millón], , DESC, DENSE )

Jugadores subiendo de precio =
CALCULATE ( COUNTROWS ( Chollos ), Chollos[CambioPrecio] > 0 )

Mejor chollo =
VAR Mejor = TOPN ( 1, Chollos, Chollos[Nota], DESC )
RETURN CONCATENATEX ( Mejor, Chollos[Jugador], ", " )

Puntos clave para el examen:

Paso 4: el informe

Una página basta para cubrir lo importante:

  1. Segmentación por Puesto arriba.
  2. Tres tarjetas: Mejor chollo, Media de puntos y Jugadores subiendo de precio.
  3. Gráfico de dispersión: eje X Precio (M€), eje Y PtsPrevistos, tamaño Titularidad y detalle Jugador. Los mejores chollos aparecen arriba a la izquierda: muchos puntos por poco dinero.
  4. Tabla con Jugador, Equipo, Precio (M€), Media, PtsPrevistos y Ranking por rentabilidad, con formato condicional (escala de colores) en PtsPrevistos.

Comprueba que la segmentación filtra las tarjetas y que Ranking por rentabilidad se recalcula dentro de cada puesto. Si no lo hace, revisa el ALL del paso anterior.

Paso 5: publicar y actualizar

Publica en un área de trabajo del servicio de Power BI y, en la configuración del modelo semántico, activa la actualización programada (por ejemplo, una vez al día). Este origen es una URL pública con acceso anónimo, así que no necesita puerta de enlace; la puerta de enlace solo hace falta para orígenes locales o en una red privada, y esa diferencia es pregunta típica del examen.

Al día siguiente verás valores distintos: los precios y las predicciones cambian según los resultados reales. Si quieres entender de dónde salen esos puntos previstos, la web explica cómo mide la precisión de su modelo de predicción.

Retos para seguir practicando

Practica el PL-300 con tests gratis →

Preguntas frecuentes

¿Sirve un proyecto con datos de fútbol para preparar el PL-300?
Sí. El examen evalúa preparar datos, modelarlos, visualizarlos y publicarlos, no el sector del que vengan. Un conjunto pequeño, real y que cambia cada semana obliga a practicar exactamente esas cuatro áreas.
¿Necesito una puerta de enlace para actualizar el informe en el servicio?
No para este origen: es una URL pública en la nube con acceso anónimo, así que el servicio la actualiza directamente. La puerta de enlace solo hace falta para orígenes locales o en una red privada.
¿Puedo usar los datos para otros ejercicios?
Sí, para practicar. Se actualizan a diario, así que cada actualización trae valores distintos, algo útil para entender la actualización programada y los errores de tipos de datos.

Otras guias del blog