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
Agreenwood
Helper I
Helper I

COUNTROWS en el último registro que coincide con un estado anterior a la segmentación de fecha

Hola

Tenga en cuenta la siguiente tabla de hechos:

user_idFechaEstado
101 de enero de 2020A
101 de febrero de 2020B
101 de marzo de 2020A
201 de enero de 2020B
201 de febrero de 2020A
201 de marzo de 2020C
201 de abril de 2020B
301 de enero de 2020D
301 de febrero de 2020B
301 de marzo de 2020C
301 de abril de 2020A
401 de enero de 2020B
401 de febrero de 2020A
401 de marzo de 2020B
401 de abril de 2020B

Ahora considere una segmentación de fecha en un informe establecido en "Marzo 2020".

Me gustaría crear una medida que devuelve el número de registros donde el último registro para cada user_id antes de la fecha de segmentación coincide con el estado "A". En el ejemplo anterior, con la fecha establecida en marzo de 2020, la medida devolvería 2 ya que user_id 2 y 4 coinciden con las condiciones.

En mis intentos de conseguir que esto funcione he utilizado GROUPBY junto con MAXX dentro de una medida VAR RETURN para obtener la última fecha para cada user_id antes de la segmentación de fecha, aunque ahora no puedo devolver el estado del último registro encontrado.

Cualquier ayuda es muy apreciada, y espero haber explicado mi pregunta claramente.

Editar: ejemplo de enlace de archivo PBIX aquí: Ejemplo de archivo PBIX

1 ACCEPTED SOLUTION
Anonymous
Not applicable

// Assumptions:
// You have a Dates table that should be disconnected
// from your fact table (let's call it T). For each
// user_id the combinations of (date, status) must
// be unique.

// Once you've made a selection in the
// slicer (Dates[Date])...

[# Records] =
var __lastVisibleDate = MAX( Dates[Date] )
return
    SUMX(
        VALUES( T[user_id] ),
        var __lastStatus =
            MAXX(
                TOPN(1,
                    CALCULATETABLE(
                        T,
                        // You may want to use <
                        // instead of <=
                        T[date] <= __lastVisibleDate
                    ),
                    T[Date],
                    DESC
                ),
                T[status]
            )
        return
            if( __lastStatus = "A", 1 )
    )
    
// Bear in mind that this measure is
// responding to slicing, so you should
// carefully examine why the result is
// what it is.

View solution in original post

3 REPLIES 3
Anonymous
Not applicable

// Assumptions:
// You have a Dates table that should be disconnected
// from your fact table (let's call it T). For each
// user_id the combinations of (date, status) must
// be unique.

// Once you've made a selection in the
// slicer (Dates[Date])...

[# Records] =
var __lastVisibleDate = MAX( Dates[Date] )
return
    SUMX(
        VALUES( T[user_id] ),
        var __lastStatus =
            MAXX(
                TOPN(1,
                    CALCULATETABLE(
                        T,
                        // You may want to use <
                        // instead of <=
                        T[date] <= __lastVisibleDate
                    ),
                    T[Date],
                    DESC
                ),
                T[status]
            )
        return
            if( __lastStatus = "A", 1 )
    )
    
// Bear in mind that this measure is
// responding to slicing, so you should
// carefully examine why the result is
// what it is.
amitchandak
Super User
Super User

@Agreenwood , se supone que tiene tabla de fechas unida a su fecha

tener esta medida con user_id en visual

medida :
var _max á eomonth(maxx(allselected(Date),Date[Date]),-1)
devolución
countx(filter(summarize(Table, table[user_id] ,"_1", calculate(lastnonblankvalue(Table[date],maxx(Table[status])), filter(all(Date),Date[Date]<_max))),[_1]-"A"),[user_id])

También puedes probar con la fecha de tu mesa

Gracias @amitchandak, esto parece que está muy cerca, aunque creo que está excluyendo user_id que no tienen un registro en el mes seleccionado.

Por ejemplo, utilizando la medida y la misma tabla de datos que antes con la fecha establecida en "Abril 2020", la medida devuelve BLANK. Me gustaría que regresara 1, ya que user_id el último estatus de 1 antes de abril es A a pesar de que no tiene un récord en abril.

¿Hay alguna manera de adaptar la medida para adaptarse a esto?

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.