Reply
Syndicate_Admin
Administrator
Administrator
Syndicated - Inbound

Duplicados inexactos en una columna

Source Community: Power BI | Source Author Name: kellyylx

Hola, tengo una columna llamada nombres con duplicados difusos y espero poder agruparlos. Estoy al tanto de la coincidencia aproximada en Power BI, pero no tengo una lista de nombres correctos para fusionar las tablas.

Por ejemplo:

nombreNúmero de grupo
Cascada de la empresa 1
Empresa Waterfll1
Empresa Cascadas1
Hola Centro0
Empresa A. R.2
Empresa AR 2

Idealmente, a esas empresas similares se les puede asignar un número de grupo arbitrario o simplemente cualquier forma de indicación que separe a cada grupo.

kellyylx_0-1725269972760.png

Vi esta posible solución en: https://www.mrexcel.com/board/threads/identify-fuzzy-matches-in-one-column.1211554/

¡Pero no estoy seguro de cómo puedo hacerlo en Power BI! Agradezco cualquier ayuda posible 🙂 Gracias

8 REPLIES 8
Syndicate_Admin
Administrator
Administrator

Source Community: Power BI | Source Author Name: kellyylx
Syndicated - Inbound

Hola, muchas gracias por su ayuda, pero ¿es posible hacer algo como si la fila no tiene otros duplicados, la fila está en el grupo 0? Entonces, ¿el grupo 0 son las filas únicas y el grupo 1 en adelante son filas con duplicados?

Source Community: Power BI | Source Author Name: lbendlin
Syndicated - Inbound

Puede verificar el recuento de elementos en cada grupo y luego agrupar todos los elementos individuales en un grupo de "Otros", pero eso de alguna manera frustraría el propósito de la coincidencia difusa, ¿no?

Source Community: Power BI | Source Author Name: kellyylx
Syndicated - Inbound

Hola, ¿cómo puedo contar los elementos de cada grupo? Usé group by index para contar el número de filas de cada índice en otra tabla, pero no puedo fusionar las 2 tablas.

Este sería mi resultado ideal:

nombreNúmero de grupo contar
Cascada de la empresa 13
Empresa Waterfll13
Empresa Cascadas13
Hola Centro01
Empresa A. R.22
Empresa AR 22

Source Community: Power BI | Source Author Name: v-cgao-msft
Syndicated - Inbound

Hola @kellyylx ,

¿Está resuelta la pregunta? Pruebe los siguientes pasos:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45Wcs7PLUjMq1QITyxJLUpLzMlRUIrVQRfOycEiCFRbDBb2SM3JyVdwTs0rKUoFCzjqKQTpKUBVQ0SCYFyg8bEA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [name = _t]),
    #"Added Custom1" = Table.AddColumn(Source, "name2", each Text.Replace(Text.Replace([name],".","")," ",""),type text),
    #"Merged Queries" = Table.FuzzyNestedJoin(#"Added Custom1", {"name2"}, #"Added Custom1", {"name2"}, "Source", JoinKind.LeftOuter, [IgnoreCase=true, IgnoreSpace=true, Threshold=0.5]),
    #"Removed Other Columns" = Table.Distinct(Table.ReplaceValue(Table.SelectColumns(#"Merged Queries",{"Source"}),each [Source], each Table.Sort([Source],{{"name", Order.Ascending}}),Replacer.ReplaceValue,{"Source"})),
    #"Added Custom" = Table.AddColumn(#"Removed Other Columns", "count", each Table.RowCount([Source])),
    #"Sorted Rows" = Table.Sort(#"Added Custom",{{"count", Order.Ascending}}),
    #"Added Custom2" = Table.AddColumn(#"Sorted Rows", "number", each if [count] = 1 then 0 else 1),
    #"Added Index" = Table.AddIndexColumn(#"Added Custom2", "Index", 1, 1, Int64.Type),
    #"Added Custom3" = Table.AddColumn(#"Added Index", "group number", each List.Sum(List.FirstN(#"Added Custom2"[number],[Index]))),
    #"Expanded Source" = Table.ExpandTableColumn(#"Added Custom3", "Source", {"name"}, {"name"}),
    #"Removed Columns" = Table.RemoveColumns(#"Expanded Source",{"number", "Index"})
in
    #"Removed Columns"

vcgaomsft_0-1725864539539.png

Saludos
Gao

Equipo de apoyo a la comunidad

Si hay alguna publicación que ayude, considere Acéptala como la solución para ayudar a los demás miembros a encontrarla más rápidamente.
Si no entiendo sus necesidades o todavía tiene problemas con él, no dude en hacérnoslo saber. ¡Muchas gracias!

Cómo obtener respuestas rápidas a sus preguntas : cómo proporcionar datos de ejemplo en el foro de Power BI

Source Community: Power BI | Source Author Name: kellyylx
Syndicated - Inbound
#"Removed Other Columns" = Table.Distinct(Table.ReplaceValue(Table.SelectColumns(#"Merged Queries",{"Source"}),each [Source], each Table.Sort([Source],{{"name", Order.Ascending}}),Replacer.ReplaceValue,{"Source"})),

Hola, ¿me puedes explicar qué hace esta línea y por qué necesitamos tenerla?

Source Community: Power BI | Source Author Name: kellyylx
Syndicated - Inbound

Tengo que filtrar los posibles duplicados, por eso quería tener todos los valores únicos en el mismo grupo.

Syndicate_Admin
Administrator
Administrator

Source Community: Power BI | Source Author Name: lbendlin
Syndicated - Inbound
let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45Wcs7PLUjMq1QITyxJLUpLzMlRUIrVQRfOycEiCFRbDBb2SM3JyVdwTs0rKUoFCzjqKQTpKUBVQ0SCYFyg8bEA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [name = _t]),
    #"Merged Queries" = Table.FuzzyNestedJoin(Source, {"name"}, Source, {"name"}, "Source", JoinKind.LeftOuter, [IgnoreCase=true, IgnoreSpace=true, Threshold=0.5]),
    #"Removed Other Columns" = Table.Distinct(Table.ReplaceValue(Table.SelectColumns(#"Merged Queries",{"Source"}),each [Source], each Table.Sort([Source],{{"name", Order.Ascending}}),Replacer.ReplaceValue,{"Source"})),
    #"Added Index" = Table.AddIndexColumn(#"Removed Other Columns", "Index", 0, 1, Int64.Type),
    #"Expanded Source" = Table.ExpandTableColumn(#"Added Index", "Source", {"name"}, {"name"})
in
    #"Expanded Source"

Cómo usar este código: Cree una nueva consulta en blanco. Haga clic en "Editor avanzado". Reemplace el código en la ventana con el código proporcionado aquí. Haga clic en "Listo". Una vez que haya examinado el código, reemplace el paso Source por su propio código fuente.

lbendlin_0-1725273208914.png

Tendrás que jugar con el umbral para conseguir una mejor coincidencia.

Source Community: Power BI | Source Author Name: kellyylx
Syndicated - Inbound
#"Removed Other Columns" = Table.Distinct(Table.ReplaceValue(Table.SelectColumns(#"Merged Queries",{"Source"}),each [Source], each Table.Sort([Source],{{"name", Order.Ascending}}),Replacer.ReplaceValue,{"Source"})),

Hola, ¿me puedes explicar qué hace esta línea y por qué necesitamos tenerla?

avatar user

Helpful resources

Announcements
Las Vegas 2025

Join us at the Microsoft Fabric Community Conference

March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!

Jan25PBI_Carousel

Power BI Monthly Update - January 2025

Check out the January 2025 Power BI update to learn about new features in Reporting, Modeling, and Data Connectivity.

December 2024

A Year in Review - December 2024

Find out what content was popular in the Fabric community during 2024.

Top Solution Authors (Last Month)
Top Kudoed Authors (Last Month)