Identificar filas con valores duplicados

Un usuario Pregunto ✅

jonasoeste

Soy nuevo con Power BI y DAX, y espero que la comunidad pueda ayudar con este problema específico.

El propósito es identificar posibles facturas duplicadas, que se registran con un número de factura diferente (por ejemplo, Inv123 escaneado nuevamente como Inv 123 o Inv.123).

Como esto es parte de un análisis más amplio, preferiría que pudiera ser como una columna, en lugar de usar Power Query. El «Número de proveedor», la «Fecha de contabilización» y el «Importe» serían todos iguales. ¿Alguien tiene una idea de cómo marcar estas filas con un «Sí» y todas las demás con un «No» o algo similar?

Saludos

jonas

Anónimo

En respuesta a jonasoeste

Mirar:

Power Query - marcar duplicados en una tabla.PNG

Aquí está el código M:

let
    Source = Invoices,

#"Merged Queries" = Table.NestedJoin(Source, {"Vendor", "Posting Date", "Amount"}, #"Invoices - Duplicate Invoice Marker", {"Vendor", "Posting Date", "Amount"}, "Invoices - Duplicate Invoice Marker", JoinKind.LeftOuter), #"Expanded Invoices - Duplicate Invoice Marker" = Table.ExpandTableColumn(#"Merged Queries", "Invoices - Duplicate Invoice Marker", {"Inv No"}, {"Inv No.1"}), #"Removed Columns" = Table.RemoveColumns(#"Expanded Invoices - Duplicate Invoice Marker",{"Inv No.1"}), #"Grouped Rows" = Table.Group(#"Removed Columns", {"Inv No", "Vendor", "Posting Date", "Amount"}, {{"Count", each Table.RowCount(_), type number}}), #"Added Custom" = Table.AddColumn(#"Grouped Rows", "Has Dups", each if [Count] > 1 then "Yes" else "No"), #"Removed Columns2" = Table.RemoveColumns(#"Added Custom",{"Count"}) in #"Removed Columns2"

Aquí están las dependencias de la tabla:

Power Query - dependencias de la tabla.PNG

Mejor

Darek

Anónimo

¿Por qué no haces esto en Power Query donde realmente debería hacerse? Dichos cálculos pertenecen a Power Query, no a DAX, aunque, por supuesto, es posible hacerlo en DAX.

Mejor

Darek

jonasoeste

En respuesta a Anónimo

¡Gracias por tomarse su tiempo para revisar mi problema!

No me importa usar Power Query, pero sería muy preferible tener marcadas las filas específicas y conservar todos los datos. Tengo un modelo de datos con muchas tablas de dimensiones y medidas, por lo que, si es posible, sería beneficioso simplemente agregar una nueva columna con «sí» y «no», donde «sí» marca las filas que se sospecha que están duplicadas.

Probé una declaración If en una columna personalizada en Power Query, pero todos los resultados son positivos:

Si [Vendornumber] = [Vendornumber] y
[Amount] = [Amount] y
[Date] = [Date]
entonces sí»
más «No»

¿Cómo marcaría solo las filas donde los tres criterios son verdaderos?

Saludos
jonas

Anónimo

En respuesta a jonasoeste

Bueno, amigo, si piensas detenidamente en lo que has hecho en la declaración IF, no te sorprenderá que solo obtuviste «SÍ». ES 1 = 1? ES a = a? ¿Es oaesuthtteasouhe = oaesuthtteasouhe?

Hagas lo que hagas, PIENSA.

Para hacer lo que quiere en PQ, requiere pensar en M, no en DAX.

Mejor

Darek

jonasoeste

En respuesta a Anónimo

Mi problema principal es cómo marcar filas idénticas según tres criterios.

Entiendo por qué la declaración If devuelve todos los positivos, pero pensé que ayudaría a aclarar mi acertijo con el mejor ejemplo que pude evocar.

Después de horas de búsqueda, no encontré ningún problema/solución publicado. Decidí describir mi problema aquí lo mejor posible, aunque es algo simple para usuarios avanzados.

Entiendo lo que dices amigo, pero cuando golpeas ese muro de conocimiento y Google no funciona, necesitas ayuda, tal vez incluso para formular tu problema.

Anónimo

En respuesta a jonasoeste

Mirar:

Power Query - marcar duplicados en una tabla.PNG

Aquí está el código M:

let
    Source = Invoices,

#"Merged Queries" = Table.NestedJoin(Source, {"Vendor", "Posting Date", "Amount"}, #"Invoices - Duplicate Invoice Marker", {"Vendor", "Posting Date", "Amount"}, "Invoices - Duplicate Invoice Marker", JoinKind.LeftOuter), #"Expanded Invoices - Duplicate Invoice Marker" = Table.ExpandTableColumn(#"Merged Queries", "Invoices - Duplicate Invoice Marker", {"Inv No"}, {"Inv No.1"}), #"Removed Columns" = Table.RemoveColumns(#"Expanded Invoices - Duplicate Invoice Marker",{"Inv No.1"}), #"Grouped Rows" = Table.Group(#"Removed Columns", {"Inv No", "Vendor", "Posting Date", "Amount"}, {{"Count", each Table.RowCount(_), type number}}), #"Added Custom" = Table.AddColumn(#"Grouped Rows", "Has Dups", each if [Count] > 1 then "Yes" else "No"), #"Removed Columns2" = Table.RemoveColumns(#"Added Custom",{"Count"}) in #"Removed Columns2"

Aquí están las dependencias de la tabla:

Power Query - dependencias de la tabla.PNG

Mejor

Darek

jonasoeste

En respuesta a Anónimo

hola darek

Sus soluciones son elegantes y brillantes. ¡La tabla final muestra claramente cuáles tienen duplicados y son candidatos como las mismas facturas escaneadas dos veces!

¡Gracias por la descripción detallada, incluida la creación de su propio conjunto de datos de ejemplo! ¡Fue fácil de seguir y me permitió un gran salto en el conocimiento de los fundamentos de PQ y M!

Muy apreciado

jonas

Anónimo

En respuesta a jonasoeste

Bueno, en PQ tienes algo como Merge Queries. Por lo tanto, podría combinar la tabla con una copia de sí misma (debe ser una copia, una referencia no funcionará) y la combinación sería LEFT OUTER JOIN en las tres columnas que desee. Para todas las filas en la tabla de la izquierda, obtendrá coincidencias (en forma de una Tabla almacenada en la celda; debe expandirla). Entonces, lo que sucede es que algunas filas en la tabla de la izquierda se duplicarán al menos 2 veces y algunas se dejarán solas (donde solo hay una coincidencia: la fila misma). Teniendo esto, puede eliminar la (s) columna (s) de la tabla derecha y hacer un grupo en las filas que quedaron. El groupby debe usar Count

función. Si lo hace, cada fila tendrá un recuento de duplicados. Ahora puede agregar una columna y decir: si cuenta> 1, entonces «sí», de lo contrario, «no».

¿Fácil? ¿Puedes seguirte a ti mismo o debo crear un archivo ficticio con todos los pasos dentro y publicar un enlace? Pero recuerda que estoy en el trabajo, por lo que podría ser más rápido si intentas implementarlo tú mismo.

🙂

Mejor

Darek

Deja un comentario

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