Combinar las cifras de inscripción del año actual y del año anterior con diferentes códigos de curso

Un usuario Pregunto ✅

Tyron

¿Puedo pedir ayuda con un problema? Necesito combinar las cifras de inscripción para un curso con códigos diferentes durante los últimos 4 años, además de agregar el código anterior a la fila. Cada fila contiene 1 inscripción. A continuación se muestra una tabla de muestra:

Código Curso Año 1 Año 2 año 3 año 4
ABC123 Curso de Negocios 1 0 0 0
ABC123 Curso de Negocios 0 1 0 0
ABC123 Curso de Negocios 1 0 0 0
ABC123 Curso de Negocios 1 0 0 0
ABC123 Curso de Negocios 0 1 0 0
ABC123 Curso de Negocios 0 0 1 0
ABC456 Curso de Negocios 0 0 0 1
ABC456 Curso de Negocios 0 0 0 1

El resultado esperado de la tabla debería verse así:

Código Código reemplazado Curso Año 1 Año 2 año 3 año 4
ABC456 ABC123 Curso de Negocios 3 2 1 2

Cualquier ayuda sería muy apreciada ya que tengo miles de filas con cientos de cursos diferentes, gracias.

Hola @Tyron

Cree una nueva consulta en blanco, abra el Editor avanzado y pegue los códigos debajo para reemplazar su código original allí. O descargue el pbix como referencia.

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WcnRyNjQyVtJROrTAqbQ4My+1uFjBOb+0qDgVLGYIJA3gOFaHoAaQQkNSNJBsA+2dBDPdEFmDiakZQQ0QTaRriAUA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Code = _t, Course = _t, #"Year 1" = _t, #"Year 2" = _t, #"Year 3" = _t, #"Year 4" = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Code", type text}, {"Course", type text}, {"Year 1", Int64.Type}, {"Year 2", Int64.Type}, {"Year 3", Int64.Type}, {"Year 4", Int64.Type}}),
    #"Grouped Rows" = Table.Group(#"Changed Type", {"Course"}, {{"GroupTable", each _, type table [Code=nullable text, Course=nullable text, Year 1=nullable number, Year 2=nullable number, Year 3=nullable number, Year 4=nullable number]}, {"Year 1", each List.Sum([Year 1]), type nullable number}, {"Year 2", each List.Sum([Year 2]), type nullable number}, {"Year 3", each List.Sum([Year 3]), type nullable number}, {"Year 4", each List.Sum([Year 4]), type nullable number}}),
    #"Added Custom" = Table.AddColumn(#"Grouped Rows", "Custom", each Record.FromList(List.Distinct([GroupTable][Code]),{"old code", "new code"})),
    #"Expanded Custom" = Table.ExpandRecordColumn(#"Added Custom", "Custom", {"old code", "new code"}, {"old code", "new code"}),
    #"Removed Columns" = Table.RemoveColumns(#"Expanded Custom",{"GroupTable"}),
    #"Reordered Columns" = Table.ReorderColumns(#"Removed Columns",{"new code", "old code", "Course", "Year 1", "Year 2", "Year 3", "Year 4"})
in
    #"Reordered Columns"

21090203.jpg

Los pasos principales son «Filas agrupadas» y «Personalizado agregado». Usar Transformar > Agrupar por y Añadir columna > Columna personalizada.

Hazme saber si tienes alguna pregunta.

Saludos,
Equipo de apoyo comunitario _ Jing
Si esta publicación ayuda, acéptela como solución para ayudar a otros miembros a encontrarla.

Hola @Tyron

Cree una nueva consulta en blanco, abra el Editor avanzado y pegue los códigos debajo para reemplazar su código original allí. O descargue el pbix como referencia.

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WcnRyNjQyVtJROrTAqbQ4My+1uFjBOb+0qDgVLGYIJA3gOFaHoAaQQkNSNJBsA+2dBDPdEFmDiakZQQ0QTaRriAUA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Code = _t, Course = _t, #"Year 1" = _t, #"Year 2" = _t, #"Year 3" = _t, #"Year 4" = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Code", type text}, {"Course", type text}, {"Year 1", Int64.Type}, {"Year 2", Int64.Type}, {"Year 3", Int64.Type}, {"Year 4", Int64.Type}}),
    #"Grouped Rows" = Table.Group(#"Changed Type", {"Course"}, {{"GroupTable", each _, type table [Code=nullable text, Course=nullable text, Year 1=nullable number, Year 2=nullable number, Year 3=nullable number, Year 4=nullable number]}, {"Year 1", each List.Sum([Year 1]), type nullable number}, {"Year 2", each List.Sum([Year 2]), type nullable number}, {"Year 3", each List.Sum([Year 3]), type nullable number}, {"Year 4", each List.Sum([Year 4]), type nullable number}}),
    #"Added Custom" = Table.AddColumn(#"Grouped Rows", "Custom", each Record.FromList(List.Distinct([GroupTable][Code]),{"old code", "new code"})),
    #"Expanded Custom" = Table.ExpandRecordColumn(#"Added Custom", "Custom", {"old code", "new code"}, {"old code", "new code"}),
    #"Removed Columns" = Table.RemoveColumns(#"Expanded Custom",{"GroupTable"}),
    #"Reordered Columns" = Table.ReorderColumns(#"Removed Columns",{"new code", "old code", "Course", "Year 1", "Year 2", "Year 3", "Year 4"})
in
    #"Reordered Columns"

21090203.jpg

Los pasos principales son «Filas agrupadas» y «Personalizado agregado». Usar Transformar > Agrupar por y Añadir columna > Columna personalizada.

Hazme saber si tienes alguna pregunta.

Saludos,
Equipo de apoyo comunitario _ Jing
Si esta publicación ayuda, acéptela como solución para ayudar a otros miembros a encontrarla.

Tyron

En respuesta a v-jingzhang

Hola @v-jingzhang

Gracias por esto, apreciado. Todavía estoy aprendiendo Powery Query y si tengo que agregar otras columnas, como Región (estado) y ubicación (ciudad), ¿es esto posible simplemente agregando los nombres de las columnas en la línea?

 #"Grouped Rows" = Table.Group(#"Changed Type", {"Course"},

agregando {«Región»}, {«Ubicación»} después de {«Curso»}, ¿o hay otra línea para agregar esto también?

Gracias de nuevo.

En respuesta a Tyron

Hola @Tyron

si, seria algo asi Table.Group(#»Tipo cambiado», {«Curso», «Ubicación»}, …………)

Le sugiero que puede modificar este paso utilizando la interfaz de usuario. yo también uso Agrupar por en la pestaña Transformar para hacerlo. Para modificar un paso, puede hacer clic en el ícono de ajustes en Pasos aplicados, luego en la ventana Agrupar por, haga clic en Agregar agrupación para agregar más columnas para agrupar. Después de hacer clic en Aceptar para aplicar el cambio, encontrará el código actualizado en la barra de fórmulas anterior.

21091002.jpg

Referencia: Agrupación o resumen de filas | Documentos de Microsoft

Atentamente,

jing

Tyron

Hola Greg

Gracias por su sugerencia, he descentrado las columnas de Año, pero el resultado esperado no es lo que necesito hacer.

Intenté anular el pivote y luego pivotar con «No agregar» también, pero ese tampoco era el resultado esperado requerido.

¿Tiene alguna otra sugerencia además de revisar manualmente la columna reemplazada?

greg_deckler

@Tyron Si es posible, anule el pivote de las columnas de Año y luego esto se vuelve trivial.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *