Starting December 3, join live sessions with database experts and the Microsoft product team to learn just how easy it is to get started
Learn moreGet certified in Microsoft Fabric—for free! For a limited time, get a free DP-600 exam voucher to use by the end of 2024. Register 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
Starting December 3, join live sessions with database experts and the Fabric product team to learn just how easy it is to get started.
March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount! Early Bird pricing ends December 9th.