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

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
EllieSim
Helper II
Helper II

Combine varias columnas en varias columnas basadas en valores delimitados

Hola

Estoy intentando combinar un número de columnas divididas (mediante un delimitador) en varias columnas (basadas en sus encabezados originales) en el Editor de consultas.

Así es como se ve la tabla original antes de dividir:

ArtículoNombre del problemaDistribución de problemasMotivo de la cuestiónCompletado
Artículo 1CON; CON; HW1; Propiedad HW2Nombre1; Nombre2; Nombre 3; Nombre4Para información; Para comentarios; Para comentarios; Para la validación31.08.2020; Ninguno; Ninguno; Ninguno
Tema 2NullNullNullNull

Esta es la tabla una vez dividida por delimitador:

ArtículoNombre del problema.1Nombre del problema.2Nombre del problema.3Nombre del problema.4Distribución de la emisión.1Distribución del problema.2Distribución de la emisión.3Distribución de la emisión.4Motivo del problema.1Motivo del problema.2Motivo del problema.3Motivo del problema.4Completado.1Completado.2Completado.3Completado.4
Artículo 1ConConHW1HW2Name.1Name.2Name.3Name.4Para obtener informaciónPara comentariosPara comentariosPara la validación31.08.2020NingunoNingunoNinguno
Tema 2NullNullNullNullNullNullNullNullNullNullNullNullNullNullNullNull

Aquí está la tabla que espero lograr en el Editor de consultas:

ArtículoNombre del problemaDistribución de problemasMotivo de la cuestiónCompletado
Tema 1ConNombre1Para obtener información2008.2020
Tema 1ConNombre2Para comentariosNinguno
Artículo 1HW1Nombre3Para comentariosNinguno
Artículo 1HW2Nombre4Para la validaciónNinguno
Tema 2NullNullNullNull
Tema 2etcetera...

Como alternativa, ¿hay una expresión DAX que pueda usar para devolver varias filas en una salida de tabla como se ha indicado anteriormente?

Muchas gracias por su ayuda.

1 ACCEPTED SOLUTION

@EllieSim

Desafortunadamente, no puedo añadir un archivo directamente al foro. Sólo puedo mediante el uso de algún alojamiento de archivos.

Con el conjunto de datos, aplique este código en Power Query.

let
    Source = [your source],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Item", type text}, {"Issue Name", type text}, {"Issue Distribution", type text}, {"Reason for Issue", type text}, {"Completed", type text}}),
    #"Added Custom" = Table.AddColumn(#"Changed Type", "Issue Name Split", each Text.Split([Issue Name],";")),
    #"Added Custom1" = Table.AddColumn(#"Added Custom", "Issue Distribution Split", each Text.Split([Issue Distribution],";")),
    #"Added Custom2" = Table.AddColumn(#"Added Custom1", "Reason Split", each Text.Split([Reason for Issue],";")),
    #"Added Custom3" = Table.AddColumn(#"Added Custom2", "Completed Split", each Text.Split([Completed],";")),
    #"Added Custom4" = Table.AddColumn(#"Added Custom3", "New Table", each Table.FromColumns({[Issue Name Split],[Issue Distribution Split],[Reason Split],[Completed Split]})),
    #"Expanded New Table" = Table.ExpandTableColumn(#"Added Custom4", "New Table", {"Column1", "Column2", "Column3", "Column4"}, {"New Table.Column1", "New Table.Column2", "New Table.Column3", "New Table.Column4"}),
    #"Removed Columns" = Table.RemoveColumns(#"Expanded New Table",{"Issue Name", "Issue Distribution", "Reason for Issue", "Completed", "Issue Name Split", "Issue Distribution Split", "Reason Split", "Completed Split"}),
    #"Renamed Columns" = Table.RenameColumns(#"Removed Columns",{{"New Table.Column1", "Issue Name"}, {"New Table.Column2", "Issue Distribution"}, {"New Table.Column3", "Reason for Issue"}, {"New Table.Column4", "Completed"}})
in
    #"Renamed Columns"

O, si lo desea, puedo agregar este archivo a alguna unidad. hágamelo saber.



_______________
Si ayudé, por favor acepte la solución y dar felicitaciones! 😀

View solution in original post

10 REPLIES 10
Alexander76877
Helper II
Helper II

Hola, algunos han señalado que usted necesita para despivot todos los demás que "artículo".

Eso es correcto, pero no la solución completa. Después de eso, debe dividir el atributo por "." a y otra vez pivotar por este índice. Entonces obtienes tu resultado.

2020-08-31 13_17_50-Untitled - Power Query Editor.png

Por favor, encuentre el código a continuación.

Por favor, marque como solución si esa es la respuesta correcta a su pregunta.

Alexander

------------

let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45W8ixJzTVU0lFy9veEkx7hhmDSCEj6Jeam6hnCGHARYxjDBMhwyy9S8MxLyy/KTSzJzM+Dijjn5+am5pVg5YUl5mSmwBQbG+oZWOgZGRgZgAzNz0tFo2J1IM4EWZ5XmpNDAYUFxcYCAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Item = _t, #"Issue Name.1" = _t, #"Issue Name.2" = _t, #"Issue Name.3" = _t, #"Issue Name.4" = _t, #"Issue Distribution.1" = _t, #"Issue Distribution.2" = _t, #"Issue Distribution.3" = _t, #"Issue Distribution.4" = _t, #"Reason For Issue.1" = _t, #"Reason For Issue.2" = _t, #"Reason For Issue.3" = _t, #"Reason For Issue.4" = _t, Completed.1 = _t, Completed.2 = _t, Completed.3 = _t, Completed.4 = _t]), #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(Source, {"Item"}, "Attribute", "Value"), #"Split Column by Delimiter" = Table.SplitColumn(#"Unpivoted Other Columns", "Attribute", Splitter.SplitTextByDelimiter(".", QuoteStyle.Csv), {"Header", "Index"}), #"Pivoted Column" = Table.Pivot(#"Split Column by Delimiter", List.Distinct(#"Split Column by Delimiter"[Header]), "Header", "Value"), #"Removed Columns" = Table.RemoveColumns(#"Pivoted Column",{"Index"}) in #"Removed Columns"

Hola

Gracias por su respuesta.

Unpivitong las columnas quitan todo el valor NULL (Elementos sin valor), cuando pivoto las columnas Attribute esto produce errores. ¿Hay alguna manera de evitar esto?

Muchas gracias

Eso es correcto. Debe reemplazar los valores nulos por "" valores vacíos antes de dividir las columnas.

Por favor, marque como solución si esa es la respuesta correcta a su pregunta.

Alexander

@EllieSim,por favor revise mi archivo. Se conservaron los valores nulos.
FarhanAhmed
Community Champion
Community Champion

Esta es la tabla una vez dividida por delimitador:

ArtículoNombre del problema.1Nombre del problema.2Nombre del problema.3Nombre del problema.4Distribución de la emisión.1Distribución del problema.2Distribución de la emisión.3Distribución de la emisión.4Motivo del problema.1Motivo del problema.2Motivo del problema.3Motivo del problema.4Completado.1Completado.2Completado.3Completado.4
Artículo 1ConConHW1HW2Name.1Name.2Name.3Name.4Para obtener informaciónPara comentariosPara comentariosPara la validación31.08.2020NingunoNingunoNinguno
Tema 2NullNullNullNullNullNullNullNullNullNullNullNullNullNull

Después del paso anterior . Haga clic derecho en"Elementos" y haga clic en"Despivot Otras Columnas" y obtendrá los resultados deseados.







Did I answer your question? Mark my post as a solution! Appreciate your Kudos!!

Proud to be a Super User!




lkalawski
Memorable Member
Memorable Member

Hola @EllieSim ,

Puede utilizar la función Table.Split en Power Query. Preparé el archivo para usted con la solución:

https://gofile.io/d/kT1VOZ

lkalawski_0-1598868402711.png



_______________
Si ayudé, por favor acepte la solución y dar felicitaciones! 😀

Hola

No puedo descargar el archivo por alguna razón. ¿Es posible subirlo aquí en su lugar?

Muchas gracias 🙂

@EllieSim

Desafortunadamente, no puedo añadir un archivo directamente al foro. Sólo puedo mediante el uso de algún alojamiento de archivos.

Con el conjunto de datos, aplique este código en Power Query.

let
    Source = [your source],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Item", type text}, {"Issue Name", type text}, {"Issue Distribution", type text}, {"Reason for Issue", type text}, {"Completed", type text}}),
    #"Added Custom" = Table.AddColumn(#"Changed Type", "Issue Name Split", each Text.Split([Issue Name],";")),
    #"Added Custom1" = Table.AddColumn(#"Added Custom", "Issue Distribution Split", each Text.Split([Issue Distribution],";")),
    #"Added Custom2" = Table.AddColumn(#"Added Custom1", "Reason Split", each Text.Split([Reason for Issue],";")),
    #"Added Custom3" = Table.AddColumn(#"Added Custom2", "Completed Split", each Text.Split([Completed],";")),
    #"Added Custom4" = Table.AddColumn(#"Added Custom3", "New Table", each Table.FromColumns({[Issue Name Split],[Issue Distribution Split],[Reason Split],[Completed Split]})),
    #"Expanded New Table" = Table.ExpandTableColumn(#"Added Custom4", "New Table", {"Column1", "Column2", "Column3", "Column4"}, {"New Table.Column1", "New Table.Column2", "New Table.Column3", "New Table.Column4"}),
    #"Removed Columns" = Table.RemoveColumns(#"Expanded New Table",{"Issue Name", "Issue Distribution", "Reason for Issue", "Completed", "Issue Name Split", "Issue Distribution Split", "Reason Split", "Completed Split"}),
    #"Renamed Columns" = Table.RenameColumns(#"Removed Columns",{{"New Table.Column1", "Issue Name"}, {"New Table.Column2", "Issue Distribution"}, {"New Table.Column3", "Reason for Issue"}, {"New Table.Column4", "Completed"}})
in
    #"Renamed Columns"

O, si lo desea, puedo agregar este archivo a alguna unidad. hágamelo saber.



_______________
Si ayudé, por favor acepte la solución y dar felicitaciones! 😀

FarhanAhmed
Community Champion
Community Champion

¿Sus datos son coherentes? Quiero decir que el número de valores delimados son fijos & hasta 4 ? ¿Correcto?







Did I answer your question? Mark my post as a solution! Appreciate your Kudos!!

Proud to be a Super User!




amitchandak
Super User
Super User

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

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

April Fabric Community Update

Fabric Community Update - April 2024

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