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

Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.

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
RTI Forums Carousel3

New forum boards available in Real-Time Intelligence.

Ask questions in Eventhouse and KQL, Eventstream, and Reflex.

MayPowerBICarousel

Power BI Monthly Update - May 2024

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

LearnSurvey

Fabric certifications survey

Certification feedback opportunity for the community.