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

Enhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends August 31st. Request your voucher.

Reply
KiranGupta15
Frequent Visitor

Valores de par de valores clave

Hola a todos.

Soy nuevo en BI.

Tengo texto debajo en una columna de una tabla, quiero extraer el nombre, ID, ciudad en diferentes columnas

Los valores duplicados también están ahí en mi cadena.

tx:StudentID:24tgfg, tx:Name:Chetan, tx:City:Austin, tx:state:TX:Tx:Sub:jggjgjgj,tx:Org:hjjhgjjgjgjjjjjj,BU:ewrwrrwrwrwrwr,tx:StudentID:249340, tx:Name:Kiran, tx:City:Austin, TX:tx:, TX:, TX:,

¿Puede alguien ayudar

Agradecemos su apoyo aquí

1 ACCEPTED SOLUTION
edhans
Super User
Super User

Hola @KiranGupta15 ,

Puedo llevarte hasta aquí, pero necesito más información de ti. Me di la vuelta a esto:

edhans_0-1598650469803.png

en esto:

edhans_1-1598650496019.png

utilizando este código:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WKqmwCi4pTUnNK/F0sTIyKUlPS9dRAAr6JeamWjlnpJYk5oH5zpkllVaOpcUlmRB+cUliSapVSIQOyIDSJKus9PQsEATx/YvSrTKysjLSs4ACGRAxp1Cr1PKi8qKicjDUQbPX0tjEAGGvd2YRIWuVYmMB", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Column1 = _t]),
    #"Split Column by Delimiter" = Table.SplitColumn(Source, "Column1", Splitter.SplitTextByDelimiter("tx:", QuoteStyle.Csv), {"Column1.1", "Column1.2", "Column1.3", "Column1.4", "Column1.5", "Column1.6", "Column1.7", "Column1.8", "Column1.9", "Column1.10", "Column1.11", "Column1.12"}),
    #"Transposed Table" = Table.Transpose(#"Split Column by Delimiter"),
    #"Split Column by Delimiter1" = Table.SplitColumn(#"Transposed Table", "Column1", Splitter.SplitTextByDelimiter(":", QuoteStyle.Csv), {"Column1.1", "Column1.2"}),
    #"Filtered Rows" = Table.SelectRows(#"Split Column by Delimiter1", each ([Column1.2] <> null)),
    #"Extracted Text Before Delimiter" = Table.TransformColumns(#"Filtered Rows", {{"Column1.2", each Text.BeforeDelimiter(_, ","), type text}}),
    #"Capitalized Each Word" = Table.TransformColumns(#"Extracted Text Before Delimiter",{{"Column1.1", Text.Proper, type text}}),
    #"Filtered Rows1" = Table.SelectRows(#"Capitalized Each Word", each ([Column1.1] = "City" or [Column1.1] = "Name" or [Column1.1] = "Studentid"))
in
    #"Filtered Rows1"

Sin embargo, no puedo obtener el nombre, el ID y la ciudad en las columnas porque no hay nada que me diga qué estudiante, ID y ciudad están asociados entre sí, a menos que asuma que está en orden secuencial, en cuyo caso puedo obtener esto:

edhans_2-1598650974840.png

utilizando este código:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WKqmwCi4pTUnNK/F0sTIyKUlPS9dRAAr6JeamWjlnpJYk5oH5zpkllVaOpcUlmRB+cUliSapVSIQOyIDSJKus9PQsEATx/YvSrTKysjLSs4ACGRAxp1Cr1PKi8qKicjDUQbPX0tjEAGGvd2YRIWuVYmMB", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Column1 = _t]),
    #"Split Column by Delimiter" = Table.SplitColumn(Source, "Column1", Splitter.SplitTextByDelimiter("tx:StudentID", QuoteStyle.Csv), {"Column1.1", "Column1.2", "Column1.3"}),
    #"Removed Other Columns" = Table.SelectColumns(#"Split Column by Delimiter",{"Column1.2", "Column1.3"}),
    #"Transposed Table" = Table.Transpose(#"Removed Other Columns"),
    #"Added Index" = Table.AddIndexColumn(#"Transposed Table", "Index", 0, 1, Int64.Type),
    #"Split Column by Delimiter1" = Table.SplitColumn(#"Added Index", "Column1", Splitter.SplitTextByDelimiter("tx:", QuoteStyle.Csv), {"Column1.1", "Column1.2", "Column1.3", "Column1.4", "Column1.5", "Column1.6", "Column1.7"}),
    #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Split Column by Delimiter1", {"Index"}, "Attribute", "Value"),
    #"Split Column by Delimiter2" = Table.SplitColumn(#"Unpivoted Other Columns", "Value", Splitter.SplitTextByDelimiter(":", QuoteStyle.Csv), {"Value.1", "Value.2"}),
    #"Replaced Value" = Table.ReplaceValue(#"Split Column by Delimiter2","","StudentID",Replacer.ReplaceValue,{"Value.1"}),
    #"Extracted Text Before Delimiter" = Table.TransformColumns(#"Replaced Value", {{"Value.2", each Text.BeforeDelimiter(_, ","), type text}}),
    #"Filtered Rows" = Table.SelectRows(#"Extracted Text Before Delimiter", each ([Value.1] = "City" or [Value.1] = "Name" or [Value.1] = "StudentID")),
    #"Removed Other Columns1" = Table.SelectColumns(#"Filtered Rows",{"Index", "Value.1", "Value.2"}),
    #"Pivoted Column" = Table.Pivot(#"Removed Other Columns1", List.Distinct(#"Removed Other Columns1"[Value.1]), "Value.1", "Value.2"),
    #"Removed Columns" = Table.RemoveColumns(#"Pivoted Column",{"Index"})
in
    #"Removed Columns"

Si eso no es lo que necesita, por favor sea un poco más específico sobre los resultados esperados, y explique cómo debo leer el registro de muestra que publicó.

Cómo utilizar el código M proporcionado en una consulta en blanco:
1) En Power Query, seleccione Nueva fuente y, a continuación, Consulta en blanco
2) En la cinta de opciones Inicio, seleccione el botón "Editor avanzado"
3) Retire todo lo que ve, luego pegue el código M que le he dado en esa caja.
4) Pulse Hecho
5) Consulte este artículo si necesita ayuda para usar este código M en su modelo.

Si necesita publicar más datos para hacerlo más claro, consulte los enlaces a continuación sobre cómo colocar tablas en los mensajes.

Cómo obtener una buena ayuda rápidamente. Ayúdanos a ayudarte.
Cómo obtener respuestas a su pregunta rápidamente
Cómo proporcionar datos de ejemplo en el foro de Power BI



Did I answer your question? Mark my post as a solution!
Did my answers help arrive at a solution? Give it a kudos by clicking the Thumbs Up!

DAX is for Analysis. Power Query is for Data Modeling


Proud to be a Super User!

MCSA: BI Reporting

View solution in original post

4 REPLIES 4
mahoneypat
Microsoft Employee
Microsoft Employee

Este es un enfoque diferente en el editor de consultas. Como @edhans sugiere, depende de la coherencia de los datos. Si los valores son todos secuenciales y hay un patrón de repetición de 7 valores, esto debería funcionar para que usted obtenga el resultado que se muestra a continuación.

mahoneypat_0-1598661145289.png

Para ver cómo funciona, simplemente cree una consulta en blanco, vaya a Editor avanzado y reemplace el texto allí con el código M a continuación.

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WKqmwCi4pTUnNK/F0sTIyKUlPS9dRAAr6JeamWjlnpJYk5oH5zpkllVaOpcUlmRB+cUliSapVSIQOyIDSJKus9PQsEATx/YvSrTKysjLSs4ACGRAxp1Cr1PKi8qKicjDUQbPX0tjEAGGvd2YRIWuVYmMB", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Column1 = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", type text}}),
    #"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each Text.Split([Column1], ",")),
    #"Removed Other Columns" = Table.SelectColumns(#"Added Custom",{"Custom"}),
    #"Expanded Custom" = Table.ExpandListColumn(#"Removed Other Columns", "Custom"),
    #"Split Column by Delimiter" = Table.SplitColumn(#"Expanded Custom", "Custom", Splitter.SplitTextByDelimiter(":", QuoteStyle.Csv), {"Custom.1", "Custom.2", "Custom.3"}),
    #"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Custom.1", type text}, {"Custom.2", type text}, {"Custom.3", type text}}),
    #"Filtered Rows" = Table.SelectRows(#"Changed Type1", each ([Custom.3] <> null)),
    #"Removed Columns" = Table.RemoveColumns(#"Filtered Rows",{"Custom.1"}),
    #"Trimmed Text" = Table.TransformColumns(#"Removed Columns",{{"Custom.2", Text.Trim, type text}, {"Custom.3", Text.Trim, type text}}),
    #"Added Index" = Table.AddIndexColumn(#"Trimmed Text", "Index", 1, 1, Int64.Type),
    #"Added Custom1" = Table.AddColumn(#"Added Index", "Custom", each Number.RoundUp([Index]/7)),
    #"Removed Columns1" = Table.RemoveColumns(#"Added Custom1",{"Index"}),
    #"Pivoted Column" = Table.Pivot(#"Removed Columns1", List.Distinct(#"Removed Columns1"[Custom.2]), "Custom.2", "Custom.3"),
    #"Removed Columns2" = Table.RemoveColumns(#"Pivoted Column",{"Custom"})
in
    #"Removed Columns2"




Did I answer your question? Mark my post as a solution! Kudos are also appreciated!

To learn more about Power BI, follow me on Twitter or subscribe on YouTube.


@mahoneypa HoosierBI on YouTube


edhans
Super User
Super User

Hola @KiranGupta15 ,

Puedo llevarte hasta aquí, pero necesito más información de ti. Me di la vuelta a esto:

edhans_0-1598650469803.png

en esto:

edhans_1-1598650496019.png

utilizando este código:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WKqmwCi4pTUnNK/F0sTIyKUlPS9dRAAr6JeamWjlnpJYk5oH5zpkllVaOpcUlmRB+cUliSapVSIQOyIDSJKus9PQsEATx/YvSrTKysjLSs4ACGRAxp1Cr1PKi8qKicjDUQbPX0tjEAGGvd2YRIWuVYmMB", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Column1 = _t]),
    #"Split Column by Delimiter" = Table.SplitColumn(Source, "Column1", Splitter.SplitTextByDelimiter("tx:", QuoteStyle.Csv), {"Column1.1", "Column1.2", "Column1.3", "Column1.4", "Column1.5", "Column1.6", "Column1.7", "Column1.8", "Column1.9", "Column1.10", "Column1.11", "Column1.12"}),
    #"Transposed Table" = Table.Transpose(#"Split Column by Delimiter"),
    #"Split Column by Delimiter1" = Table.SplitColumn(#"Transposed Table", "Column1", Splitter.SplitTextByDelimiter(":", QuoteStyle.Csv), {"Column1.1", "Column1.2"}),
    #"Filtered Rows" = Table.SelectRows(#"Split Column by Delimiter1", each ([Column1.2] <> null)),
    #"Extracted Text Before Delimiter" = Table.TransformColumns(#"Filtered Rows", {{"Column1.2", each Text.BeforeDelimiter(_, ","), type text}}),
    #"Capitalized Each Word" = Table.TransformColumns(#"Extracted Text Before Delimiter",{{"Column1.1", Text.Proper, type text}}),
    #"Filtered Rows1" = Table.SelectRows(#"Capitalized Each Word", each ([Column1.1] = "City" or [Column1.1] = "Name" or [Column1.1] = "Studentid"))
in
    #"Filtered Rows1"

Sin embargo, no puedo obtener el nombre, el ID y la ciudad en las columnas porque no hay nada que me diga qué estudiante, ID y ciudad están asociados entre sí, a menos que asuma que está en orden secuencial, en cuyo caso puedo obtener esto:

edhans_2-1598650974840.png

utilizando este código:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WKqmwCi4pTUnNK/F0sTIyKUlPS9dRAAr6JeamWjlnpJYk5oH5zpkllVaOpcUlmRB+cUliSapVSIQOyIDSJKus9PQsEATx/YvSrTKysjLSs4ACGRAxp1Cr1PKi8qKicjDUQbPX0tjEAGGvd2YRIWuVYmMB", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Column1 = _t]),
    #"Split Column by Delimiter" = Table.SplitColumn(Source, "Column1", Splitter.SplitTextByDelimiter("tx:StudentID", QuoteStyle.Csv), {"Column1.1", "Column1.2", "Column1.3"}),
    #"Removed Other Columns" = Table.SelectColumns(#"Split Column by Delimiter",{"Column1.2", "Column1.3"}),
    #"Transposed Table" = Table.Transpose(#"Removed Other Columns"),
    #"Added Index" = Table.AddIndexColumn(#"Transposed Table", "Index", 0, 1, Int64.Type),
    #"Split Column by Delimiter1" = Table.SplitColumn(#"Added Index", "Column1", Splitter.SplitTextByDelimiter("tx:", QuoteStyle.Csv), {"Column1.1", "Column1.2", "Column1.3", "Column1.4", "Column1.5", "Column1.6", "Column1.7"}),
    #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Split Column by Delimiter1", {"Index"}, "Attribute", "Value"),
    #"Split Column by Delimiter2" = Table.SplitColumn(#"Unpivoted Other Columns", "Value", Splitter.SplitTextByDelimiter(":", QuoteStyle.Csv), {"Value.1", "Value.2"}),
    #"Replaced Value" = Table.ReplaceValue(#"Split Column by Delimiter2","","StudentID",Replacer.ReplaceValue,{"Value.1"}),
    #"Extracted Text Before Delimiter" = Table.TransformColumns(#"Replaced Value", {{"Value.2", each Text.BeforeDelimiter(_, ","), type text}}),
    #"Filtered Rows" = Table.SelectRows(#"Extracted Text Before Delimiter", each ([Value.1] = "City" or [Value.1] = "Name" or [Value.1] = "StudentID")),
    #"Removed Other Columns1" = Table.SelectColumns(#"Filtered Rows",{"Index", "Value.1", "Value.2"}),
    #"Pivoted Column" = Table.Pivot(#"Removed Other Columns1", List.Distinct(#"Removed Other Columns1"[Value.1]), "Value.1", "Value.2"),
    #"Removed Columns" = Table.RemoveColumns(#"Pivoted Column",{"Index"})
in
    #"Removed Columns"

Si eso no es lo que necesita, por favor sea un poco más específico sobre los resultados esperados, y explique cómo debo leer el registro de muestra que publicó.

Cómo utilizar el código M proporcionado en una consulta en blanco:
1) En Power Query, seleccione Nueva fuente y, a continuación, Consulta en blanco
2) En la cinta de opciones Inicio, seleccione el botón "Editor avanzado"
3) Retire todo lo que ve, luego pegue el código M que le he dado en esa caja.
4) Pulse Hecho
5) Consulte este artículo si necesita ayuda para usar este código M en su modelo.

Si necesita publicar más datos para hacerlo más claro, consulte los enlaces a continuación sobre cómo colocar tablas en los mensajes.

Cómo obtener una buena ayuda rápidamente. Ayúdanos a ayudarte.
Cómo obtener respuestas a su pregunta rápidamente
Cómo proporcionar datos de ejemplo en el foro de Power BI



Did I answer your question? Mark my post as a solution!
Did my answers help arrive at a solution? Give it a kudos by clicking the Thumbs Up!

DAX is for Analysis. Power Query is for Data Modeling


Proud to be a Super User!

MCSA: BI Reporting
Greg_Deckler
Community Champion
Community Champion

@KiranGupta15 - No estoy seguro, no se ve divertido en absoluto. ¿Cuál es el resultado esperado de eso? Esto es algo que es probable que desee hacer en Power Query. @ImkeF , @edhans tienes algo de magia para esta pobre alma?



Follow on LinkedIn
@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
DAX For Humans

DAX is easy, CALCULATE makes DAX hard...

Hola Greg, yo también tengo la misma situación en la que tengo una columna en Excel que es una salida de un script de PowerShell que tiene muchos valores separados por comas. Necesito obtener el nombre del espacio de trabajo. Aquí una cosa importante a tener en cuenta, no tengo el mismo conjunto de pares de valores clave en todas las columnas, ¿podría sugerir cómo extraer solo un par de valores clave usando Power BI?

Helpful resources

Announcements
July 2025 community update carousel

Fabric Community Update - July 2025

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

July PBI25 Carousel

Power BI Monthly Update - July 2025

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

Top Solution Authors
Top Kudoed Authors