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

Preparing for a certification exam? Ask exam experts all your questions on May 15th. Register now.

Reply
Syndicate_Admin
Administrator
Administrator

Cómo combinar 2 filas en 1 en Power Query

Esta es una pequeña muestra de mis datos. Estoy trabajando en las últimas 2 visitas. Así es como están los datos actualmente en la tabla.

lennox25_0-1718290871563.png

Lo que me gustaría hacer (ya que necesito hacer más trabajo) es fusionar estas 2 filas en una fila como se muestra a continuación.

lennox25_1-1718290924901.png

¿Alguien puede ayudar por favor?

2 REPLIES 2
Syndicate_Admin
Administrator
Administrator

Hola @lennox25 -Ingrese los datos de las visitas individuales en una sola fila combinada para cada tienda con las dos últimas visitas.

Utilice el siguiente script del editor de Power Query.

Transformaciones utilizadas, Ordenar, Agrupar por, si no, AgregarColumnas, Funciones de columna de tabla

Instantánea también adjunta FYR

dejar
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjQyMTVT0lEyMTYzB1JGhvoGlvpGBkbGQE5wYklmcVpickl+USWQa2wAlTMBcgyVYnWAug1NDC0Qui31wfJGQKZ7fn4Ksh6QeUZKsbEA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [ID = _t, #"Store No" = _t, Date = _t, Result = _t, #"Next Visit Deb" = _t, #"Visit Order" = _t]),
#"Tipo cambiado" = Table.TransformColumnTypes(Source,{{"ID", Int64.Type}, {"Nº de tienda", Int64.Type}, {"Fecha", escriba texto}, {"Resultado", escriba texto}, {"Próxima visita vencida", escriba texto}, {"Orden de visita", Int64.Type}}),
SortedRows = Table.Sort(Source, {{"Store No", Order.Ascending}, {"Visit Order", Order.Ascending}}),
#"Filas agrupadas" = Table.Group(SortedRows, {"Store No"}, {{"AllData", cada _, escriba table [ID=texto que acepta valores NULL, Store No= texto que acepta valores NULL, Date= texto que acepta valores NULL, Result = texto que acepta NULL, Next Visit Due= texto que acepta valores NULL, Visit Order = texto que acepta valores NULL]}}),
#"Personalizado agregado" = Table.AddColumn(#"Filas agrupadas", "Personalizado", cada Table.Column([AllData],"ID"){0}),
#"Agregado Personalizado1" = Table.AddColumn(#"Personalizado agregado", "Personalizado.1", cada uno si Table.RowCount([AllData])>1 then Table.Column([AllData],"ID"){1} else null),
#"Agregado Personalizado2" = Tabla.AddColumn(#"Agregado Personalizado1", "Personalizado.2", cada Table.Column([AllData], "Date"){0}),
#"Agregado Custom3" = Table.AddColumn(#"Agregado Personalizado2", "Personalizado.3", cada uno si Table.RowCount([AllData]) > 1 then Table.Column([AllData], "Date"){1} else null),
#"Agregado Personalizado4" = Tabla.AddColumn(#"Agregado Personalizado3", "Personalizado.4", cada Table.Column([AllData], "Resultado"){0}),
#"Agregado Custom5" = Table.AddColumn(#"Agregado Personalizado4", "Personalizado.5", cada uno si Table.RowCount([AllData]) > 1 then Table.Column([AllData], "Result"){1} else null),
#"Agregado Custom6" = Table.AddColumn(#"Agregado Custom5", "Personalizado.6", cada Table.Column([AllData], "Próxima visita vencida"){0}),
#"Agregado Custom7" = Table.AddColumn(#"Agregado Custom6", "Personalizado.7", cada uno si Table.RowCount([AllData]) > 1 then Table.Column([AllData], "Next Visit Deb"){1} else null),
#"Agregado Custom8" = Table.AddColumn(#"Agregado Custom7", "Personalizado.8", cada Table.Column([AllData], "Orden de visita"){0}),
#"Agregado Custom9" = Table.AddColumn(#"Agregado Custom8", "Personalizado.9", cada uno si Table.RowCount([AllData]) > 1 then Table.Column([AllData], "Orden de visita"){1} de lo contrario nulo),
#"Columnas eliminadas" = Table.RemoveColumns(#"Added Custom9",{"AllData"}),
#"Columnas reordenadas" = Table.ReorderColumns(#"Columnas eliminadas",{"Personalizado", "Nº de tienda", "Personalizado.1", "Personalizado.2", "Personalizado.3", "Personalizado.4", "Personalizado.5", "Personalizado.6", "Personalizado.7", "Personalizado.8", "Personalizado.9"}),
#"Columnas renombradas" = Table.RenameColumns(#"Columnas reordenadas",{{"Personalizadas", "ID"}}),
#"Columnas reordenadas1" = Table.ReorderColumns(#"Columnas renombradas",{"ID", "Nº de tienda", "Custom.2", "Custom.1", "Custom.3", "Custom.4", "Custom.5", "Custom.6", "Custom.7", "Custom.8", "Custom.9"}),
#"Columnas renombradas1" = Table.RenameColumns(#"Columnas reordenadas1",{{"Custom.2", "Date1"}}),
#"Columnas reordenadas2" = Table.ReorderColumns(#"Columnas renombradas1",{"ID", "Nº de tienda", "Fecha1", "Personalizado.4", "Personalizado.1", "Personalizado.3", "Personalizado.5", "Personalizado.6", "Personalizado.7", "Personalizado.8", "Personalizado.9"}),
#"Columnas renombradas2" = Table.RenameColumns(#"Columnas reordenadas2",{{"Custom.4", "Resultado"}}),
#"Columnas reordenadas3" = Table.ReorderColumns(#"Columnas renombradas2",{"ID", "Nº de tienda", "Fecha1", "Resultado", "Personalizado.6", "Personalizado.1", "Personalizado.3", "Personalizado.5", "Personalizado.7", "Personalizado.8", "Personalizado.9"}),
#"Renamed Columns3" = Table.RenameColumns(#"Reordered Columns3",{{"Custom.6", "Next Visit Due1"}, {"Result", "Result1"}}),
#"Columnas reordenadas4" = Table.ReorderColumns(#"Columnas renombradas3",{"ID", "Nº de tienda", "Fecha1", "Resultado1", "Próxima visita debida1", "Custom.8", "Custom.1", "Custom.3", "Custom.5", "Custom.7", "Custom.9"}),
#"Columnas renombradas4" = Table.RenameColumns(#"Columnas reordenadas4",{{"Custom.8", "Orden de visita1"}, {"Personalizado.1", "ID2"}, {"Personalizado.3", "Fecha2"}, {"Personalizado.5", "Resultado2"}, {"Personalizado.9", "Orden de visita2"}, {"Personalizado.7", "Próxima visita2"}})
en
#"Columnas renombradas4"

Salida según lo esperado:

rajendraongole1_1-1718330328304.png

rajendraongole1_0-1718330293425.png

Por encima de PQ funciona, por favor compruébelo.

¿He respondido a tu pregunta? ¡Marca mi publicación como una solución! ¡Esto ayudará a otros en el foro!
¡Agradezco sus felicitaciones!

Syndicate_Admin
Administrator
Administrator

Hola @lennox25 ,

De acuerdo con su descripción, aquí están mis pasos que puede seguir como solución.

(1) Haga una copia de la tabla original. Agregue una columna de índice en la tabla original ordenada por orden ascendente de id. A continuación, agregue una columna de índice en la tabla copiada ordenada por orden descendente del id.

vtangjiemsft_0-1718329667944.png

vtangjiemsft_1-1718329693664.png

(2) Fusionar las dos tablas.

vtangjiemsft_2-1718329765094.png

(3) Expanda la última columna de la tabla combinada, filtre los valores donde la columna de índice = 1 y, a continuación, elimine ambas columnas de índice. Puede ver los pasos en la columna paso a paso a la derecha para su pbix de referencia a continuación.

let
    Source = Table.NestedJoin(Table, {"Index"}, #"Table (2)", {"Index"}, "Table (2)", JoinKind.LeftOuter),
    #"Expanded Table (2)" = Table.ExpandTableColumn(Source, "Table (2)", {"ID", "Serial No", "Date", "Result", "Next Visit Due", "Visit Code", "Index"}, {"Table (2).ID", "Table (2).Serial No", "Table (2).Date", "Table (2).Result", "Table (2).Next Visit Due", "Table (2).Visit Code", "Table (2).Index"}),
    #"Filtered Rows" = Table.SelectRows(#"Expanded Table (2)", each ([#"Table (2).Index"] = 1)),
    #"Removed Columns" = Table.RemoveColumns(#"Filtered Rows",{"Index", "Table (2).Index"})
in
    #"Removed Columns"

vtangjiemsft_3-1718329923889.png

Saludos

Neeko Tang

Si esta publicación ayuda, considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

Helpful resources

Announcements
PBIApril_Carousel

Power BI Monthly Update - April 2025

Check out the April 2025 Power BI update to learn about new features.

Notebook Gallery Carousel1

NEW! Community Notebooks Gallery

Explore and share Fabric Notebooks to boost Power BI insights in the new community notebooks gallery.

April2025 Carousel

Fabric Community Update - April 2025

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

Top Solution Authors
Top Kudoed Authors