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
Anonymous
Not applicable

Identificar duplicados antes y después de 30 días de un registro

Hola a todos,

Necesito identificar duplicados en un gráfico de pestañas. El criterio para los duplicados es:

-Mismo proveedor

-Mismo no de referencia

-Mismo importe de la factura

-Dentro de los 30 días de un registro (antes y después)

Por ejemplo,

ProveedorNo de referenciaImporte de la facturaFecha
Abc12310001/23/2020
Xyz11159002/01/2020
Abc12323001/01/2020
Xyz19159002/01/2020
Abc12310012/01/2019

Resultado:

ProveedorNo de referenciaImporte de la facturaFecha
Abc12310001/23/2020
Abc12310012/01/2019

Agradecería mucho la ayuda.

1 ACCEPTED SOLUTION
v-kelly-msft
Community Support
Community Support

Hola @nataliengarces ,

Cree una medida como se muestra a continuación:

Measure = 
var _previousdate=CALCULATE(MAX('Table'[Date]),FILTER(ALL('Table'),'Table'[Vendor]=MAX('Table'[Vendor])&&'Table'[Reference No]=MAX('Table'[Reference No])&&'Table'[Invoice Amount]=MAX('Table'[Invoice Amount])&&'Table'[Date]<MAX('Table'[Date])))
var _afterdate=CALCULATE(MAX('Table'[Date]),FILTER(ALL('Table'),'Table'[Vendor]=MAX('Table'[Vendor])&&'Table'[Reference No]=MAX('Table'[Reference No])&&'Table'[Invoice Amount]=MAX('Table'[Invoice Amount])&&'Table'[Date]>MAX('Table'[Date])))
var _datediff1=DATEDIFF(_previousdate,MAX('Table'[Date]),DAY)
var _datediff2=DATEDIFF(MAX('Table'[Date]),_afterdate,DAY)
Return
IF(_previousdate=BLANK()||_afterdate=BLANK(),0,IF(_datediff1<30||_datediff2<30,1,0))

Como el datediff entre "01/23/2020" y "12/01/2019" es 53,not dentro de 30,por lo que mi resultado devuelve como abajo:

Annotation 2020-08-05 102741.png

Si obtienes el 1 devuelto, simplemente ve al panel de filtro, elige la medida 1, entonces obtendrás lo que solicitas.

Saludos
Kelly
¿He respondido a tu pregunta? ¡Marca mi puesto como una solución!

View solution in original post

7 REPLIES 7
amitchandak
Super User
Super User

@nataliengarces , Crear una nueva columna como

if(countx(filter(Table,[Vendor] á earlier([Vendor]) && [Reference No] ?earlier([Reference No]) && [Invoice Amount ] ?earlier([Invoice Amount])
&& [fecha] >-earlier([Fecha])-30 && [fecha] <-earlier([Date])+30 ),[Reference No])+0>-2, "Duplicate", "Not Duplicate")

y filtrar Duplicar

v-kelly-msft
Community Support
Community Support

Hola @nataliengarces ,

Cree una medida como se muestra a continuación:

Measure = 
var _previousdate=CALCULATE(MAX('Table'[Date]),FILTER(ALL('Table'),'Table'[Vendor]=MAX('Table'[Vendor])&&'Table'[Reference No]=MAX('Table'[Reference No])&&'Table'[Invoice Amount]=MAX('Table'[Invoice Amount])&&'Table'[Date]<MAX('Table'[Date])))
var _afterdate=CALCULATE(MAX('Table'[Date]),FILTER(ALL('Table'),'Table'[Vendor]=MAX('Table'[Vendor])&&'Table'[Reference No]=MAX('Table'[Reference No])&&'Table'[Invoice Amount]=MAX('Table'[Invoice Amount])&&'Table'[Date]>MAX('Table'[Date])))
var _datediff1=DATEDIFF(_previousdate,MAX('Table'[Date]),DAY)
var _datediff2=DATEDIFF(MAX('Table'[Date]),_afterdate,DAY)
Return
IF(_previousdate=BLANK()||_afterdate=BLANK(),0,IF(_datediff1<30||_datediff2<30,1,0))

Como el datediff entre "01/23/2020" y "12/01/2019" es 53,not dentro de 30,por lo que mi resultado devuelve como abajo:

Annotation 2020-08-05 102741.png

Si obtienes el 1 devuelto, simplemente ve al panel de filtro, elige la medida 1, entonces obtendrás lo que solicitas.

Saludos
Kelly
¿He respondido a tu pregunta? ¡Marca mi puesto como una solución!
mahoneypat
Employee
Employee

Puede probar esta expresión de medida, en un objeto visual de tabla con las columnas Proveedor, No de referencia y Fecha. Volverá en blanco para las filas que tienen un duplicado dentro de los 30 días (y las filtrará del objeto visual). Tenga en cuenta que las filas xyz de los datos de ejemplo tienen una referencia diferente. ¿Deberían haberse filtrado de la salida deseada del ejemplo?

Invoice Amount if No Duplicates =
VAR thisamount =
    SUM ( Invoices[Invoice Amount] )
VAR thisdate =
    MIN ( Invoices[Date] )
VAR dupecount =
    CALCULATE (
        COUNTROWS ( Invoices ),
        ALL ( Invoices[Date] ),
        Invoices[Date] >= thisdate,
        Invoices[Date] <= thisdate + 30
    )
RETURN
    IF ( dupecount = 1, thisamount )

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

@mahoneypat ¡Hola! Sí, las filas xyz en los datos de mysample tienen diferentes referencias, por lo que deben filtrarse de la salida deseada de ejemplo.

Hola @nataliengarces ,

¿Has comprobado mi respuesta? ¿Es mi solución lo que necesitas? Si no, pls corrígeme.

Saludos
Kelly
¿He respondido a tu pregunta? ¡Marca mi puesto como una solución!

Pensé que intentabas quedarte con los que no eran duplicados. Por favor, pruebe esta expresión en su lugar. Sin embargo, noté en su ejemplo que las dos filas retenidas estaban separadas por >30 días (por lo que no satisfaría los criterios). Así que adapté esto para que se viera +/-60 días para duplicados. Si lo tengo al revés, puede reemplazar con 30 y ajustar el > y < a la lógica deseada.

Invoice Amount Duplicates =
VAR thisamount =
    SUM ( Invoices[Invoice Amount] )
VAR thisdate =
    MIN ( Invoices[Date] )
VAR dupecount =
    CALCULATE (
        COUNTROWS ( Invoices ),
        ALLEXCEPT ( Invoices, Invoices[Vendor], Invoices[Reference No] ),
        Invoices[Invoice Amount] = thisamount,
        Invoices[Date] >= thisdate - 60,
        Invoices[Date] <= thisdate + 60
    )
RETURN
    IF ( dupecount > 1, thisamount )

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

¡Hola! Sí, las filas xyz en los datos de mysample tienen diferentes referencias, por lo que deben filtrarse de la salida deseada de ejemplo.

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.