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

Get certified in Microsoft Fabric—for free! For a limited time, the Microsoft Fabric Community team will be offering free DP-600 exam vouchers. Prepare 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
OCT PBI Update Carousel

Power BI Monthly Update - October 2024

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

September Hackathon Carousel

Microsoft Fabric & AI Learning Hackathon

Learn from experts, get hands-on experience, and win awesome prizes.

October NL Carousel

Fabric Community Update - October 2024

Find out what's new and trending in the Fabric Community.

Top Solution Authors