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

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
Anonymous
Not applicable

Cambiar automáticamente el nombre solo los valores duplicados en una tabla

Tengo una tabla que se construye mediante entradas de los usuarios. El problema al que me enfrento es el resultado de varias entradas del mismo usuario (un usuario envía varias veces). Básicamente, necesito conservar todas las entradas para el filtrado y los cálculos posteriores, pero tener nombres repetidos inhibirá la relación de uno a varios y otro filtrado.

Por ejemplo, si recibo esta tabla sin procesar:

UsuarioCorreo electrónicoValor

John Smith

john@gmail.com45
Mickeal Jacksonmichael@gmail.com56
Andrew deandrew@gmail.com56
John Smithjohn@gmail.com32
John Smithjohn@gmail.com19
Mickeal Jacksonmichael@gmail.com78
Helen Ravadihelen@gmail.com10
Ann Hongann@gmail.com00

Una solución es cambiarlo a la siguiente tabla para resolver el problema de los nombres de usuario repetidos:

UsuarioCorreo electrónicoValor

John Smith 1

john@gmail.com45
Mickeal Jackson 1michael@gmail.com56
Andrew deandrew@gmail.com56
John Smith 2john@gmail.com32
John Smith 3john@gmail.com19
Mickeal Jackson 2michael@gmail.com78
Helen Ravadihelen@gmail.com10
Ann Hongann@gmail.com00

¿Puede alguien ayudarme cómo puedo automatizar este proceso? Hay muchos usuarios en la lista.

Por cierto, si tiene alguna sugerencia mejor para hacer frente a este problema, por favor hágamelo saber. Gracias.

1 ACCEPTED SOLUTION
Anonymous
Not applicable

Gracias por todas sus respuestas.

Desarrollé este código Python para modificar solo valores duplicados. Es más simple 🙂

dataset.loc[dataset.duplicated('FullName', keep-False),"FullName"] á dataset.loc[dataset.duplicated('FullName', keep-False),"FullName"] + " " + (dataset[dataset.duplicated('FullName', keep-False)].groupby("FullName").cumcount() + 1).astype(str)

Sin embargo, Python tiene problemas para trabajar en app.powerbi en línea! ¡Realmente frustrante!

View solution in original post

8 REPLIES 8
Ashish_Mathur
Super User
Super User

Hola

Este código M funciona

let
    Source = Excel.CurrentWorkbook(){[Name="Data"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"User", type text}, {"Email", type text}, {"Value", Int64.Type}}),
    Partition = Table.Group(#"Changed Type", {"User"}, {{"Partition", each Table.AddIndexColumn(_, "Index",1,1), type table}}),
    #"Expanded Partition" = Table.ExpandTableColumn(Partition, "Partition", {"Email", "Value", "Index"}, {"Email", "Value", "Index"}),
    #"Merged Columns" = Table.CombineColumns(Table.TransformColumnTypes(#"Expanded Partition", {{"Index", type text}}, "en-IN"),{"User", "Index"},Combiner.CombineTextByDelimiter(" ", QuoteStyle.None),"Merged")
in
    #"Merged Columns"

Espero que esto ayude.

Untitled.png


Regards,
Ashish Mathur
http://www.ashishmathur.com
https://www.linkedin.com/in/excelenthusiasts/
Anonymous
Not applicable

@Ashish_Mathur

Gracias.

¿Puede hacer que la solución funcione solo en valores duplicados? Los nombres de usuario no repetidos no deben cambiar.

Hola

Este código M funciona

let
    Source = Excel.CurrentWorkbook(){[Name="Data"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"User", type text}, {"Email", type text}, {"Value", Int64.Type}}),
    Partition = Table.Group(#"Changed Type", {"User"}, {{"Partition", each Table.AddIndexColumn(_, "Index",1,1), type table}}),
    #"Expanded Partition" = Table.ExpandTableColumn(Partition, "Partition", {"Email", "Value", "Index"}, {"Email", "Value", "Index"}),
    #"Grouped Rows" = Table.Group(#"Expanded Partition", {"User"}, {{"GroupTables", each _, type table [User=text, Email=text, Value=number, Index=number]}}),
    #"Added Custom" = Table.AddColumn(#"Grouped Rows", "CountRows", each Table.RowCount([GroupTables])),
    #"Expanded GroupTables" = Table.ExpandTableColumn(#"Added Custom", "GroupTables", {"Email", "Value", "Index"}, {"Email", "Value", "Index"}),
    #"Added Custom1" = Table.AddColumn(#"Expanded GroupTables", "Custom", each if [CountRows]=1 then [User] else [User] & Number.ToText([Index])),
    #"Removed Columns" = Table.RemoveColumns(#"Added Custom1",{"User", "Index", "CountRows"})
in
    #"Removed Columns"

Espero que esto ayude.

Untitled.png


Regards,
Ashish Mathur
http://www.ashishmathur.com
https://www.linkedin.com/in/excelenthusiasts/
Anonymous
Not applicable

Gracias por todas sus respuestas.

Desarrollé este código Python para modificar solo valores duplicados. Es más simple 🙂

dataset.loc[dataset.duplicated('FullName', keep-False),"FullName"] á dataset.loc[dataset.duplicated('FullName', keep-False),"FullName"] + " " + (dataset[dataset.duplicated('FullName', keep-False)].groupby("FullName").cumcount() + 1).astype(str)

Sin embargo, Python tiene problemas para trabajar en app.powerbi en línea! ¡Realmente frustrante!

MFelix
Super User
Super User

Hola @mah65 ,

Cree que la mejor opción es crear un modelo de esquema de estrella y crear una tabla para usar en un lado de la relación solo con el usuario y el correo electrónico, de esa manera puede hacer que las relaciones funcionen correctamente.

Creo que es más fácil que hacer cambios en los datos de esa manera perderá que John Smith como 3 entradas y obtendrá John Smith 1, 2, 3.


Regards

Miguel Félix


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

Proud to be a Super User!

Check out my blog: Power BI em Português



Anonymous
Not applicable

Tengo esta tabla de usuario que tiene todos los nombres y correos electrónicos y todos los demás valores (mostrados arriba). Lo estoy usando como una tabla de dimensiones. Pero con los usuarios repetidos, debe haber muchos a muchos relaciones que hace dificultad en la visualización. Especialmente, no todos los usuarios repetidos se muestran en una visualización de tabla.

Si construyo la tabla con solo nombres y correos electrónicos, ¿qué debo hacer con las columnas de valor? También tengo otra tabla de hechos que esta tabla de usuario está conectado a eso.

También probé el modelo de copo de nieve. Es decir, construí una tabla con solo nombres únicos y la puse encima de la tabla de información de usuario. No resolvió el problema.

Hacer otra tabla que haga referencia a la tabla de ejemplo en el editor de consultas es el camino a seguir. A continuación se muestra una consulta de ejemplo que muestra los pasos para hacerlo con los datos de ejemplo. Una vez que cargue esta tabla también, puede establecer relaciones con la tabla original y las otras tablas del modelo desde la columna de correo electrónico (o nombre). 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 = OriginalTable,
    #"Removed Other Columns" = Table.SelectColumns(Source,{"User", "Email"}),
    Custom1 = Table.Distinct(#"Removed Other Columns")
in
    Custom1

Si esto funciona para usted, márquelo como la solución. Los elogios también son apreciados. Por favor, avísame si no.

saludos

palmadita





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


Anonymous
Not applicable

Gracias por tu sugerencia. Como mencioné anteriormente, ya construí dicha tabla. Mira la figura.

Pero.todavía no está cumpliendo mi propósito. No hay ningún problema en contar usuarios (solicitantes), pero cuando quiero mostrar información de usuarios repetidos en una visualización de 'tabla', sólo muestra la primera, no las tres repeticiones, por ejemplo.

¿Qué debo hacer con eso?

Relationships.jpg

Por cierto, también tengo algunos cálculos que se deben hacer por cada aplicación (no por usuario). Por lo tanto, si hay usuarios con el mismo nombre / correo electrónico, estos cálculos cubrirán todo! Tampoco podré elegir al usuario como un sector de filtro, porque cubrirá todas sus aplicaciones. Si tengo John Smith 1, John Smith 2, etc, entonces la selección y los cálculos serán mucho más fáciles en todos los campos!

¿Alguna idea de cómo cambiar el nombre automáticamente?

Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

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

Top Solution Authors