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
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.
Gracias por su sugerencia. Desafortunadamente eso presentó un error en la tabla visual.
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.
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
Check out the October 2024 Power BI update to learn about new features.
Learn from experts, get hands-on experience, and win awesome prizes.