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

The ultimate Microsoft Fabric, Power BI, Azure AI & SQL learning event! Join us in Las Vegas from March 26-28, 2024. Use code MSCUST for a $100 discount. Register Now

Reply
Syndicate_Admin
Administrator
Administrator

Contar filas filtradas por RANK para el mes anterior

Tengo dificultades para crear una medida para contar registros filtrados por el registro más reciente por el año/mes ANTERIOR elegido por una segmentación de datos de fecha. Parece que lo tengo funcionando para el año / mes ACTUAL, pero no para el mes anterior.

La medida _CountDistinct mesactualparece estar funcionando.

La medida _CountDistinct mesanterior no funciona. Devuelve CERO para todo.

Mi conjunto de registros tiene una entrada para cada día de cada mes para cada identificación. Necesito obtener la entrada más reciente para cada ID dependiendo del mes seleccionado en la segmentación de datos de año/mes. Si elijo septiembre, debe devolver el registro de fecha 30 de septiembre. Si elige octubre, y hoy es el 4 de octubre, entonces debe devolver el registro de fecha 4 de octubre.

Para asegurarme de obtener el registro más reciente por identificación, creé una medida llamada __Rank. Esto parece funcionar correctamente por lo que puedo ver, y marca el registro más reciente con un "1" y cambiará dependiendo del año / mes que seleccione en la segmentación de datos de año / mes.

__Rank = 
RANKX (
    FILTER (
        ALL ( 'Work Items' ),
        'Work Items'[Work Item Id] = MAX ( 'Work Items'[Work Item Id] )
            && 'Work Items'[__YearMonth] = MAX ( 'Work Items'[__YearMonth] )
    ),
    CALCULATE ( MAX ( ( 'Work Items'[Date] ) ) ),
    ,
    DESC
)

La medida _CountDistinct Mesactualparece funcionar, dándome el resultado correcto basado en el año / mes que elijo de la segmentación de datos de año / mes en la página.

_CountDistinctCurrentMonth = 
CALCULATE(
    COUNTROWS( DISTINCT('Work Items'[Work Item Id]) ),
    FILTER('Work Items',[__Rank] = 1)
)+ 0

La medida _CountDistinct mesanteriorno funciona y es esta medida con la que quiero ayuda.

_CountDistinctPreviousMonth = 
CALCULATE(
    COUNTROWS( DISTINCT('Work Items'[Work Item Id]) ),
    FILTER('Work Items',[__Rank] = 1),
    PREVIOUSMONTH('Date'[Date])
)+ 0

Supongo que la forma en que tengo la lógica de filtrado es cancelarse a sí misma y no devolver nada en absoluto.

Si yo el siguiente país de registros:
Agosto = 5 registros
Septiembre = 10 registros
Octubre = 15 registros
Luego, si elijo octubre en la segmentación de datos de año/mes, entonces quiero CurrentMonth = 15 y PreviousMonth = 10.
Luego, si elijo septiembre en la segmentación de datos de año/mes, entonces quiero CurrentMonth = 10 y PreviousMonth = 5.
¿Puede ayudar a proporcionar asesoramiento sobre cómo corregir la medida _CountDistinctPreviousMonth filtrar por __Rank = 1 Y solo hacerlo para los registros del mes anterior?
2 REPLIES 2
Syndicate_Admin
Administrator
Administrator

Gracias por su sugerencia. Desafortunadamente eso presentó un error en la tabla visual.

David_Morris_0-1696418274790.png

Su sugerencia me hizo pensar, y es posible que lo haya resuelto. Decidí deshacerme del campo RANKXX y creé un campo para marcar si la última fecha de cada mes, o si el último registro por completo.

__IsLastTransactionDateOfMonth = 
// If the date of the record is the last date of the month (such as 30th Sept)
// OR
// If the date is the latest record alltogether (such as the 15th with no other records after the 15th)
// Then return 1, else return 0

var _EOM = EOMONTH('Work Items'[Date],0)

return if( max('Work Items'[Date]) = 'Work Items'[Date] || 'Work Items'[Date] = _EOM, 1, 0)

Luego cambié mis dos medidas a la siguiente.

_CountDistinct = 
CALCULATE(
    COUNTROWS( DISTINCT('Work Items'[Work Item Id]) ),
    'Work Items'[__IsLastTransactionDateOfMonth] = 1
)+ 0

_CountDistinctPreviousMonth = 
CALCULATE(
    COUNTROWS( DISTINCT('Work Items'[Work Item Id]) ),
    'Work Items'[__IsLastTransactionDateOfMonth] = 1,
    PREVIOUSMONTH('Date'[Date])
)+ 0

Ahora parece estar funcionando.

Syndicate_Admin
Administrator
Administrator

@David_Morris ,

Por favor, pruebe la medida a continuación, gracias.

_CountDistinctPreviousMonth = 
CALCULATE(
    COUNTROWS( DISTINCT('Work Items'[Work Item Id]) ),
    FILTER(ALL('Work Items'),[__Rank] = 1),
    PREVIOUSMONTH('Date'[Date])
)+ 0

isjoycewang_0-1696412344573.png

Helpful resources

Announcements
Fabric Community Conference

Microsoft Fabric Community Conference

Join us at our first-ever Microsoft Fabric Community Conference, March 26-28, 2024 in Las Vegas with 100+ sessions by community experts and Microsoft engineering.

February 2024 Update Carousel

Power BI Monthly Update - February 2024

Check out the February 2024 Power BI update to learn about new features.

Fabric Career Hub

Microsoft Fabric Career Hub

Explore career paths and learn resources in Fabric.

Fabric Partner Community

Microsoft Fabric Partner Community

Engage with the Fabric engineering team, hear of product updates, business opportunities, and resources in the Fabric Partner Community.

Top Solution Authors