Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

We've captured the moments from FabCon & SQLCon that everyone is talking about, and we are bringing them to the community, live and on-demand. Starts on April 14th. Register now

Reply
Syndicate_Admin
Administrator
Administrator

Cómo usar el filtro basado en las últimas transacciones x

Hola a todos

Estoy tratando de escribir la lógica en PowerBI para devolver un resultado basado en las últimas transacciones x(5) de todos los proveedores. este resultado debería decirme si los proveedores me han estado contabilizando el mismo precio o no. Sé cómo usar un filtro de fecha para el mes actual o x días anteriores. Pero en este caso, no sé cómo filtrar mi medida para comprobar las últimas 5 transacciones. Esto tiene que hacerse para todos los proveedores (en mi conjunto de datos tengo cientos).

Este es mi conjunto de datos de ejemplo. Debajo mostraré mi resultado esperado:

SupplierNameInvoiceIDSamePrice True/FalsePaymentDate
AmazonA-10Verdad31-12-2020
AmazonAA-10Verdad1-1-2021
Amazon A-23Verdad2-1-2021
AmazonA-11Verdad4-1-2021
AmazonA-13Verdad5-1-2021
AmazonAA-290Verdad7-1-2021
AmazonA-5Verdad7-1-2021
EbayE-1Verdad4-1-2021
EbayE-2Falso5-1-2021
EbayEE-1Verdad6-1-2021
EbayE-31Verdad8-1-2021
EbayE-9Verdad12-1-2021
EbayE-111Verdad13-1-2021
WallmartW-4Verdad5-1-2021
WallmartW-5Verdad5-1-2021
WallmartW-6Verdad6-1-2021
WallmartW-9Verdad9-1-2021

Resultado esperado

ProveedoresTotal de TransaccionesSamePriceLast(5)Transacciones
Amazon7Verdad
Ebay6Falso
Wallmart4False (porque es necesario realizar 5 transacciones)

Gracias amablemente por su tiempo.

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

No @DeBIe,

Puede utilizar el siguiente método para satisfacer sus necesidades:

Paso 1: Agregue una columna de índice:

v-xulin-mstf_0-1610704523944.png

Paso 2: Cree tres medidas como:

Total Transactions =

CALCULATE(

    COUNTROWS('Table'),

    FILTER(

        'Table',

        'Table'[SupplierName]='Table'[SupplierName]

    ))
measure 1 =

var _rank=RANKX(

FILTER(

    ALL('Table'),

    'Table'[SamePrice True/False]=TRUE()&& 'Table'[SupplierName]=MAX('Table'[SupplierName])

),

CALCULATE(MAX('Table'[PaymentDate])),,DESC

)

Return

IF(SELECTEDVALUE('Table'[SamePrice True/False])=FALSE(),BLANK(),IF(_rank<=5,1,0)



)
SamePriceLast(5)Transactions =

var _index=CALCULATE(MIN('Table'[Index]),FILTER(ALLSELECTED('Table'),'Table'[measure 1]&&'Table'[SupplierName]=MAX('Table'[SupplierName])))

var _indexmax=CALCULATE(MAX('Table'[Index]),FILTER(ALLSELECTED('Table'),'Table'[measure 1]&&'Table'[SupplierName]=MAX('Table'[SupplierName])))

Return

IF(_indexmax-_index<>4,FALSE(),TRUE())

Paso 3: Aquí está la salida:

v-xulin-mstf_1-1610704523949.png

Aquí está la demostración, por favor pruébelo: Cómo usar el filtro basado en las últimas transacciones x

Saludos

Enlace

View solution in original post

2 REPLIES 2
Syndicate_Admin
Administrator
Administrator

No @DeBIe,

Puede utilizar el siguiente método para satisfacer sus necesidades:

Paso 1: Agregue una columna de índice:

v-xulin-mstf_0-1610704523944.png

Paso 2: Cree tres medidas como:

Total Transactions =

CALCULATE(

    COUNTROWS('Table'),

    FILTER(

        'Table',

        'Table'[SupplierName]='Table'[SupplierName]

    ))
measure 1 =

var _rank=RANKX(

FILTER(

    ALL('Table'),

    'Table'[SamePrice True/False]=TRUE()&& 'Table'[SupplierName]=MAX('Table'[SupplierName])

),

CALCULATE(MAX('Table'[PaymentDate])),,DESC

)

Return

IF(SELECTEDVALUE('Table'[SamePrice True/False])=FALSE(),BLANK(),IF(_rank<=5,1,0)



)
SamePriceLast(5)Transactions =

var _index=CALCULATE(MIN('Table'[Index]),FILTER(ALLSELECTED('Table'),'Table'[measure 1]&&'Table'[SupplierName]=MAX('Table'[SupplierName])))

var _indexmax=CALCULATE(MAX('Table'[Index]),FILTER(ALLSELECTED('Table'),'Table'[measure 1]&&'Table'[SupplierName]=MAX('Table'[SupplierName])))

Return

IF(_indexmax-_index<>4,FALSE(),TRUE())

Paso 3: Aquí está la salida:

v-xulin-mstf_1-1610704523949.png

Aquí está la demostración, por favor pruébelo: Cómo usar el filtro basado en las últimas transacciones x

Saludos

Enlace

Syndicate_Admin
Administrator
Administrator

Algo como lo siguiente debería funcionar

SamePriceLast(5)Transactions = IF (HASONEFILTER(Transactions[SupplierName]),
    var maxDate = MAX(Transactions[PaymentDate].[Date])
    var last5dates = TOPN(5, CALCULATETABLE(Transactions, Transactions[PaymentDate].[Date] <= maxDate), Transactions[PaymentDate])
    return countrows( FILTER( last5dates, [SamePrice True/False] = TRUE())) = 5
,"N/A")

Primero compruebo si somos filtrados por el proveedor (es decir, si el proveedor está en las filas o si se selecciona un solo proveedor en un filtro)

Luego tomaré la fecha máxima (en caso de que se filtre la fecha, así que si filtra para enero de 2021 esta medida solo considerará las transacciones en o antes del 31 de enero de 2021) y luego obtendrá las 5 transacciones principales antes de la fecha máxima. A partir de ahí cuento las filas donde el mismo precio es verdadero y comprobar si eso es igual a 5.

Helpful resources

Announcements
New to Fabric survey Carousel

New to Fabric Survey

If you have recently started exploring Fabric, we'd love to hear how it's going. Your feedback can help with product improvements.

Power BI DataViz World Championships carousel

Power BI DataViz World Championships - June 2026

A new Power BI DataViz World Championship is coming this June! Don't miss out on submitting your entry.

Join our Fabric User Panel

Join our Fabric User Panel

Share feedback directly with Fabric product managers, participate in targeted research studies and influence the Fabric roadmap.

March Power BI Update Carousel

Power BI Community Update - March 2026

Check out the March 2026 Power BI update to learn about new features.

Top Kudoed Authors