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
Syndicate_Admin
Administrator
Administrator

Divida la cadena con delimitadores en dos columnas y alinéelos en función de su secuencia

hi Expertos,

Mis datos son así:

IDENTIFICACIÓNNombreCorreo electrónico
1234['Johny Washer', 'Polly Dryer', 'Molly Windows']['JohnyW@abc.com', 'DryerP@xyz.com', 'MollyW@yahoo.com']
6453['Mickey Mouse']['MouseM@Disney.com']
5678['Star Trekky', 'War Starry']['Trek@gmail.com', 'Starry@junk.com']

El resultado esperado es el siguiente:

IDENTIFICACIÓNNombreCorreo electrónico
1234Johny WasherJohnyW@abc.com
1234Secadora PollyDryerP@xyz.com
1234Molly WindowsMollyW@yahoo.com
6453Mickey MouseMouseM@Disney.com
5678Star TrekkyTrek@gmail.com
5678Estrella de guerraStarry@junk.com

Si utilizo la columna dividida con el delimitador de comas en cada una de las columnas Nombre y Correo electrónico, se divide correctamente en filas, pero crea filas redundantes para todas las combinaciones. Por ejemplo, Johny Washer se alinea con JohnyW@abc.com , así como con DryperP@xyz.com y MollyW@yahoo.com en 3 filas distintas. Lo que necesito es una división por delimitador y luego alinear la primera entrada en la columna Nombre con la primera entrada en la columna Correo electrónico y así sucesivamente. La columna ID debe repetirse como se muestra en el resultado esperado.

También necesito hacer esto cada vez que actualizo datos. Por lo tanto, hacer clic con el botón derecho del ratón manualmente para dividir la columna no funcionará. ¿Hay alguna manera de escribir un DAX para esto, de modo que la solución sea automatizada y escalable?

¡Gracias!

4 REPLIES 4
Syndicate_Admin
Administrator
Administrator

No podía entender qué era esa larga prueba y no estaba seguro de con qué reemplazarla o cómo se vería un código limpio. No he usado la lógica "let" antes. @amitchandak si pudieras adjuntar el libro de trabajo, sería increíble.

Solo como una solución intermin, esto es lo que hice.

En primer lugar, divida las cadenas concatenadas utilizando una coma como sustituto delimitado y utilícelo para eliminar [ y las comillas. Usaba Pathitem(Función de sustitución y tenía 8 columnas distintas para nombres y correos electrónicos cada una. Los concatenó de nuevo para que coincidan 1:1 con el nombre y el correo electrónico. Por lo tanto, obtuve 8 columnas distintas para Nombre-Correo electrónico1, Nombre-Correo electrónico2, etc.

A continuación, creó una nueva tabla y utilizó UNION(SUMMARIZE para tener ID en la primera columna y Nombre-Correo electrónico en la segunda columna. A continuación, divida el nombre y el correo electrónico en 2 columnas distintas. Probé con valores cambiantes en el archivo CSV subyacente y funciona bien. El problema es que crea filas en blanco en el medio. tal vez pueda configurar un filtro para eliminar los espacios en blanco.

Sin embargo, aún preferiría usar el método de @amitchandak , ya que se deshará de varios pasos. ¡Gracias!

Syndicate_Admin
Administrator
Administrator

Hola @PBI_User_2023

Esa cadena larga es la forma en que se guardan los datos de "Ingresar datos". Simplemente ignóralo.

Syndicate_Admin
Administrator
Administrator

Gracias.. Probaré esto, pero ¿cuál es la cadena de texto larga en ese código (binary.fromtext ?)

¡Agradezco la ayuda!

Syndicate_Admin
Administrator
Administrator

@PBI_User_2023 , pruebe este código en una consulta en blanco en Power Query (Transformar datos)

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("ZY+9CsIwFEZfJWQuUu2fY4ZOQqCgkCFmiDXYmDaBxKLXp9e2Q2k7Bb5z7/luOMf7Q5LiCPNrH8eH4uQaC4jJ0Cg/JRGa3sq1LaDSwxrQETBt7+4dpkishIzIW72rXbfcHGUV+cB3y0YrIyAb52YqsIg4ztMsmRuoro0CRF0f1KZ+TCkpdbAK1p4sL47z6PklPbp4ZQwsT2H/fIAeNvphnDw6qdvtD6YV8uytWRSLHw==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [ID = _t, Name = _t, Email = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"ID", Int64.Type}, {"Name", type text}, {"Email", type text}}),
    #"Replaced Value" = Table.ReplaceValue(#"Changed Type","[","",Replacer.ReplaceText,{"Name", "Email"}),
    #"Replaced Value1" = Table.ReplaceValue(#"Replaced Value","]","",Replacer.ReplaceText,{"Name", "Email"}),
    #"Added Custom" = Table.AddColumn(#"Replaced Value1", "Custom", each List.Zip({Text.Split([Name], ","), Text.Split([Email], ",")})),
    #"Expanded Custom" = Table.ExpandListColumn(#"Added Custom", "Custom"),
    #"Extracted Values" = Table.TransformColumns(#"Expanded Custom", {"Custom", each Text.Combine(List.Transform(_, Text.From), ","), type text}),
    #"Split Column by Delimiter" = Table.SplitColumn(#"Extracted Values", "Custom", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), {"Custom.1", "Custom.2"}),
    #"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Custom.1", type text}, {"Custom.2", type text}}),
    #"Removed Columns" = Table.RemoveColumns(#"Changed Type1",{"Name", "Email"})
in
    #"Removed Columns"



amitchandak_0-1701316943652.png

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.