Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.
Hola
Tenga en cuenta la siguiente tabla de hechos:
user_id | Fecha | Estado |
1 | 01 de enero de 2020 | A |
1 | 01 de febrero de 2020 | B |
1 | 01 de marzo de 2020 | A |
2 | 01 de enero de 2020 | B |
2 | 01 de febrero de 2020 | A |
2 | 01 de marzo de 2020 | C |
2 | 01 de abril de 2020 | B |
3 | 01 de enero de 2020 | D |
3 | 01 de febrero de 2020 | B |
3 | 01 de marzo de 2020 | C |
3 | 01 de abril de 2020 | A |
4 | 01 de enero de 2020 | B |
4 | 01 de febrero de 2020 | A |
4 | 01 de marzo de 2020 | B |
4 | 01 de abril de 2020 | B |
Ahora considere una segmentación de fecha en un informe establecido en "Marzo 2020".
Me gustaría crear una medida que devuelve el número de registros donde el último registro para cada user_id antes de la fecha de segmentación coincide con el estado "A". En el ejemplo anterior, con la fecha establecida en marzo de 2020, la medida devolvería 2 ya que user_id 2 y 4 coinciden con las condiciones.
En mis intentos de conseguir que esto funcione he utilizado GROUPBY junto con MAXX dentro de una medida VAR RETURN para obtener la última fecha para cada user_id antes de la segmentación de fecha, aunque ahora no puedo devolver el estado del último registro encontrado.
Cualquier ayuda es muy apreciada, y espero haber explicado mi pregunta claramente.
Editar: ejemplo de enlace de archivo PBIX aquí: Ejemplo de archivo PBIX
Solved! Go to Solution.
// Assumptions:
// You have a Dates table that should be disconnected
// from your fact table (let's call it T). For each
// user_id the combinations of (date, status) must
// be unique.
// Once you've made a selection in the
// slicer (Dates[Date])...
[# Records] =
var __lastVisibleDate = MAX( Dates[Date] )
return
SUMX(
VALUES( T[user_id] ),
var __lastStatus =
MAXX(
TOPN(1,
CALCULATETABLE(
T,
// You may want to use <
// instead of <=
T[date] <= __lastVisibleDate
),
T[Date],
DESC
),
T[status]
)
return
if( __lastStatus = "A", 1 )
)
// Bear in mind that this measure is
// responding to slicing, so you should
// carefully examine why the result is
// what it is.
// Assumptions:
// You have a Dates table that should be disconnected
// from your fact table (let's call it T). For each
// user_id the combinations of (date, status) must
// be unique.
// Once you've made a selection in the
// slicer (Dates[Date])...
[# Records] =
var __lastVisibleDate = MAX( Dates[Date] )
return
SUMX(
VALUES( T[user_id] ),
var __lastStatus =
MAXX(
TOPN(1,
CALCULATETABLE(
T,
// You may want to use <
// instead of <=
T[date] <= __lastVisibleDate
),
T[Date],
DESC
),
T[status]
)
return
if( __lastStatus = "A", 1 )
)
// Bear in mind that this measure is
// responding to slicing, so you should
// carefully examine why the result is
// what it is.
@Agreenwood , se supone que tiene tabla de fechas unida a su fecha
tener esta medida con user_id en visual
medida :
var _max á eomonth(maxx(allselected(Date),Date[Date]),-1)
devolución
countx(filter(summarize(Table, table[user_id] ,"_1", calculate(lastnonblankvalue(Table[date],maxx(Table[status])), filter(all(Date),Date[Date]<_max))),[_1]-"A"),[user_id])
También puedes probar con la fecha de tu mesa
Gracias @amitchandak, esto parece que está muy cerca, aunque creo que está excluyendo user_id que no tienen un registro en el mes seleccionado.
Por ejemplo, utilizando la medida y la misma tabla de datos que antes con la fecha establecida en "Abril 2020", la medida devuelve BLANK. Me gustaría que regresara 1, ya que user_id el último estatus de 1 antes de abril es A a pesar de que no tiene un récord en abril.
¿Hay alguna manera de adaptar la medida para adaptarse a esto?
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
2 | |
2 | |
2 | |
2 | |
1 |