Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more. Get started

Reply
Syndicate_Admin
Administrator
Administrator

Manipulación de datos entre tablas en Power Query

Hola a todos

Tener dolor de cabeza con algo, solo buscar un consejo. Tengo un modelo de datos y hay dos tablas relevantes para este problema. La tabla STUDENTS enumera todos los estudiantes de una escuela, y la tabla YEARS tiene los detalles de los grupos de año en los que se encuentran en cada período del año académico.

STUDENTS tiene StudentID y un montón de otras columnas irrelevantes. Tiene datos que se remontan a 20 años atrás (lo sé, hay un problema de protección/retención de datos que también estoy tratando por separado, pero eso no va a ser una solución rápida)

La tabla YEARS tiene StudentID, YearGroup y AcademicYear. Actualmente tengo un paso en Power Query que lo filtra para que no contenga datos de más de 5 años.

Quiero aplicar ese mismo filtro a la tabla STUDENTS para que no contenga datos de más de 5 años de antigüedad, pero no hay datos de tipo StartDate/EndDate en el feed sin procesar de esa tabla. La única forma que se me ocurre de incluirlo en la tabla de estudiantes es hacer algún tipo de búsqueda en el StudentID en la tabla YEARS y eliminar los que no devuelvan un resultado.

Soy reacio a combinar las tablas, ya que la tabla STUDENTS ya es bastante ancha, y duplicar filas allí para dar cabida a las instancias de grupos de varios años a lo largo de los años se volverá bastante difícil de manejar para mis creadores de informes.

He intentado ordenar la tabla YEARS a la más reciente en la parte superior y hacer una fórmula List.PositionOf entre las tablas en Power Query para obtener el AcademicYear más reciente registrado para ese estudiante, pero es increíblemente lento y no estoy seguro de que sea adecuado para el propósito de la estructura de mis datos, o tal vez simplemente lo estoy haciendo mal.

Si esto fuera Excel, solo haría un tipo de fórmula IF(COUNTIF(YEARS, StudentID=StudentID, AcademicYear>2018)>0,"Don't Filter","Filter") - parece que esto no debería ser tan complicado en Power Query, pero todo lo que intento ralentiza tanto que ...

¿Alguien tiene alguna pista, consejo o solución para este tipo de situación?

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

En caso de que alguien más se tropiece con esto, resolví esto fusionando las tablas en una nueva tabla, haciendo mi filtrado basado en el año y luego eliminando la columna de años nuevamente y deduplicando la tabla para volver a una línea por estudiante en una nueva tabla ESTUDIANTES que solo contiene estudiantes de los últimos 5 años.

No tengo idea de si esta es la mejor práctica, pero al menos empuja la carga de trabajo a los servidores de Microsoft en lugar de a las máquinas locales y logra el resultado que quería, así que ...

View solution in original post

3 REPLIES 3
Syndicate_Admin
Administrator
Administrator

En caso de que alguien más se tropiece con esto, resolví esto fusionando las tablas en una nueva tabla, haciendo mi filtrado basado en el año y luego eliminando la columna de años nuevamente y deduplicando la tabla para volver a una línea por estudiante en una nueva tabla ESTUDIANTES que solo contiene estudiantes de los últimos 5 años.

No tengo idea de si esta es la mejor práctica, pero al menos empuja la carga de trabajo a los servidores de Microsoft en lugar de a las máquinas locales y logra el resultado que quería, así que ...

Syndicate_Admin
Administrator
Administrator

No puedo ver una opción para cargar un archivo, así que no estoy seguro de qué tan detallado puedo ser, pero aquí va:

Aquí hay un ejemplo de ESTUDIANTES (el mío tiene MUCHAS más columnas allí, de ahí la renuencia a fusionar tablas):

Identificación del estudianteNombreEdadGéneroCpIdiomaOrigen étnico
1Adán6/1/2014M12345InglésWBR
2Canasta18/2/2017M23456InglésWBR
3Charles9/3/2009M34567InglésBBR
4Margarita23/4/2012F45678InglésWBR
5Emily22/5/2019F34245EspañolABR
6Franco18/6/2008M54634InglésBAJO
7Georgia2/7/2004F34678InglésBOT

A continuación, se muestra un ejemplo de la tabla YEARS:

Identificación del estudianteGrupo de AñoAño Académico
1Y22023
1Y12022
2Y32019
2Y22018
2Y12017
3Y42023
3Y32022
4Y42017
4Y32016
4Y22015
5Y62020
5Y52019
5Y42018
5Y32017
5Y22016
6Y52012
6Y42011
6Y32010
6Y22009
6Y12008
7Y32019
7Y22018
7Y12017

Quiero una columna adicional en la tabla STUDENT incorporada en la consulta de poder que devolverá "SÍ" si hay algún año académico a partir de 2018 para ese estudiante y "NO" si no lo hay:

(He resaltado los años que activarán el rojo "SÍ" en la tabla anterior)

Identificación del estudianteResultado deseado
1
2
3
4NO
5
6NO
7NO

Syndicate_Admin
Administrator
Administrator

@crispybits77 ,

En lugar de hacernos imaginar lo que desea lograr, publique un dato de muestra utilizable (no una imagen) que cubra su caso de uso y el resultado esperado utilizando esos datos de muestra.

Helpful resources

Announcements
Sept PBI Carousel

Power BI Monthly Update - September 2024

Check out the September 2024 Power BI update to learn about new features.

September Hackathon Carousel

Microsoft Fabric & AI Learning Hackathon

Learn from experts, get hands-on experience, and win awesome prizes.

Sept NL Carousel

Fabric Community Update - September 2024

Find out what's new and trending in the Fabric Community.

Top Solution Authors