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.
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,
Proveedor | No de referencia | Importe de la factura | Fecha |
Abc | 123 | 100 | 01/23/2020 |
Xyz | 111 | 590 | 02/01/2020 |
Abc | 123 | 230 | 01/01/2020 |
Xyz | 191 | 590 | 02/01/2020 |
Abc | 123 | 100 | 12/01/2019 |
Resultado:
Proveedor | No de referencia | Importe de la factura | Fecha |
Abc | 123 | 100 | 01/23/2020 |
Abc | 123 | 100 | 12/01/2019 |
Agradecería mucho la ayuda.
Solved! Go to Solution.
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:
Si obtienes el 1 devuelto, simplemente ve al panel de filtro, elige la medida 1, entonces obtendrás lo que solicitas.
@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
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:
Si obtienes el 1 devuelto, simplemente ve al panel de filtro, elige la medida 1, entonces obtendrás lo que solicitas.
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
To learn more about Power BI, follow me on Twitter or subscribe on YouTube.
@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.
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
To learn more about Power BI, follow me on Twitter or subscribe on YouTube.
¡Hola! Sí, las filas xyz en los datos de mysample tienen diferentes referencias, por lo que deben filtrarse de la salida deseada de ejemplo.
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
2 | |
2 | |
2 | |
2 | |
1 |