Identifique duplicados en función de múltiples condiciones/columnas

Un usuario Pregunto ✅

v_marca

Tengo un conjunto de datos completo que tiene múltiples entradas que tienen duplicados.

rvalenz2_0-1608247469575.png

Hasta ahora, así es como se ve. La segunda fila tiene 8 caracteres duplicados en la parte superior
Necesito identificar en cualquier caso que estos comportamientos ocurran como duplicados. AIT

Hola, @v_mark

Según su descripción, creé datos para reproducir su escenario. El archivo pbix se adjunta al final.

Tabla:

b1.png

Puede crear una columna personalizada con los siguientes códigos m.

let 
device=[Device],
status=[Status],
state=[State],
sn=[SN],
tab = Table.SelectRows(#"Renamed Columns",each 
[Device]=device and 
[Status]=status and 
[State]=state and (
Text.EndsWith([SN],sn) or Text.EndsWith(sn,[SN])) ),
re = Table.RowCount(tab)
in 
if re>=2 
then 
"duplicate"
else null

Resultado:

b2.png

Atentamente

Alano

Si esta publicación le ayuda, considere aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

Hola, @v_mark

Según su descripción, creé datos para reproducir su escenario. El archivo pbix se adjunta al final.

Tabla:

b1.png

Puede crear una columna personalizada con los siguientes códigos m.

let 
device=[Device],
status=[Status],
state=[State],
sn=[SN],
tab = Table.SelectRows(#"Renamed Columns",each 
[Device]=device and 
[Status]=status and 
[State]=state and (
Text.EndsWith([SN],sn) or Text.EndsWith(sn,[SN])) ),
re = Table.RowCount(tab)
in 
if re>=2 
then 
"duplicate"
else null

Resultado:

b2.png

Atentamente

Alano

Si esta publicación le ayuda, considere aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

jimmy801

Hola @v_mark

Para este tipo de solicitud, Table. Distinct no funciona porque no acepta un comparador personalizado. Sin embargo, hay una solución al usar Table.Group donde puede usar el quinto parámetro para crear su propio comparador personalizado, pero debe implementarlo para cada columna en su tabla (así como en el segundo parámetro). Aquí un ejemplo

código que hace la comparación de su SN. Comprueba si el valor a es un final del valor b o al revés (no olvide que debe implementar todas sus columnas para que también necesite el valor diferenciado)

Text.EndsWith(o[C], n[C]) or Text.EndsWith(n[C], o[C])

Jimmy801_0-1608366985223.png

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WclTSUXICYkMj48SkZKVYHYQQmB8LAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [A = _t, B = _t, C = _t]),
    #"Grouped Rows" = Table.Group(Source, {"A", "B", "C"}, {{"AllRows", each _, type table [A=text, B=text, C=text]}}, GroupKind.Global, (o,n)=> if o[A]=n[A] and o[B]=n[B] and (Text.EndsWith(o[C], n[C]) or Text.EndsWith(n[C], o[C])) then 0 else -1)
in
    #"Grouped Rows"

Salir

Jimmy801_1-1608367039235.png

Copie y pegue este código en el editor avanzado en una nueva consulta en blanco para ver cómo funciona la solución.

Si esta publicación ayuda o resuelve su problema, márquelo como solución (para ayudar a otros usuarios a encontrar contenido útil y reconocer el trabajo de los usuarios que lo ayudaron)
Los saludos también son buenos

Divertirse

Palanqueta

edhans

¿Son siempre los últimos 8 caracteres, o son longitudes aleatorias, posiciones aleatorias? Además, no podemos trabajar con imágenes. Las imágenes son excelentes para el resultado esperado, pero no para proporcionar datos.

Cómo obtener buena ayuda rápidamente. Ayúdanos a ayudarte.
Cómo obtener una respuesta rápida a su pregunta: dénos una explicación buena y concisa
Cómo proporcionar datos de muestra en el foro de Power BI: proporcione datos en un formato de tabla según el enlace. Proporcione el resultado esperado usando una captura de pantalla de Excel u otra imagen. No proporcione una captura de pantalla de los datos de origen. No puedo pegar una imagen en las tablas de Power BI.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *