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 a todos,
Quiero calcular el tiempo medio de espera para nuestros clientes. La tabla muestra un pequeño conjunto de muestras (ver más abajo).
Solo tenemos datos una vez al mes. Para ser precisos como sea posible, quiero devolver el número de días para 0,5 meses, porque no sabemos cuál es el tiempo exacto de espera, podría ser 1 día o 31 días.
Observe que el cliente 4 tiene dos períodos de tiempo de espera. ¿Cómo podemos evitar que Power BI no lo vea como un período, del 1 al 1-2018 al 1-7-2019, pero lo ve como dos períodos separados?
El tiempo medio de espera es el siguiente:
tiempo de espera Customer_ID en días
1 107,5
2 14,5
3 46
4 362,5
Tiempo medio de espera: 133
El orden de la fecha es europeo, por lo que 1-10-2018 es el 1 de octubre de 2018. Para el cliente 1, se inicia el período de espera. Termina en 1-2-2019, por lo que 31 + 30 + 31 + 15,5 á 107,5 días.
Customer_ID | Fecha |
1 | 1-10-2018 |
1 | 1-11-2018 |
1 | 1-12-2018 |
1 | 1-1-2019 |
1 | 1-2-2019 |
2 | 1-2-2020 |
3 | 1-5-2020 |
3 | 1-6-2020 |
4 | 1-1-2018 |
4 | 1-2-2018 |
4 | 1-3-2018 |
4 | 1-4-2018 |
4 | 1-5-2018 |
4 | 1-6-2018 |
4 | 1-1-2019 |
4 | 1-2-2019 |
4 | 1-3-2019 |
4 | 1-4-2019 |
4 | 1-5-2019 |
4 | 1-6-2019 |
4 | 1-7-2019 |
Solved! Go to Solution.
Hola @Johan94
Perdón por responder tarde.
Por favor, cree medidas
lastmonth = CALCULATE(MAX('date'[year-month]),FILTER(ALLSELECTED('Table'),'Table'[CustomerID]=MAX('Table'[CustomerID])))
measure in days =
VAR days1 =
CALCULATE (
SUM ( 'date'[days_m] ),
VALUES ( 'date'[year-month] ),
FILTER (
ALLSELECTED ( 'Table' ),
'Table'[CustomerID]
= MAX ( 'Table'[CustomerID] )
)
)
RETURN
IF (
[lastmonth]
= MAX ( 'date'[year-month] )
&& [lastmonth]
<> BLANK (),
MAX ( 'date'[days_m] ) / 2,
days1
)
each days = SUMX(FILTER(ALLSELECTED('Table'),'Table'[CustomerID]=MAX('Table'[CustomerID])),[measure in days])
average dyas = SUMX(ALLSELECTED('Table'),[measure in days])/2
La tabla de fechas utilizada anteriormente
date =
ADDCOLUMNS (
CALENDARAUTO (),
"year", YEAR ( [Date] ),
"month", MONTH ( [Date] ),
"year-month", FORMAT (
[Date],
"yyyy-mm"
)
)
add a column in date table
days_m = CALCULATE(COUNT('date'[Date]),ALLEXCEPT('date','date'[year-month]))
Saludos
Maggie
Equipo de Apoyo Comunitario _ Maggie Li
Si este post ayuda, por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Hola @Johan94
Obtengo resultados como se muestra a continuación:
Trabajará más para obtener el resultado final como esperaba.
Antes de esto, compruebe los resultados de su cliente 1, si i undertsand su regla correctamente, el resultado de su ejemplo es incorrecto.
Por favor, hágamelo saber si yo undertsand correctamente.
Saludos
Maggie
Hola @v-juanli-msft
Gracias por su ayuda, realmente lo agradezco.
Desafortunadamente, ese no es el resultado que estoy buscando. Creé un conjunto de muestra sin los datos reales y con los resultados la medida debe dar. Espero que esto ayude.
https://drive.google.com/file/d/1j0HxxkZddVkAIpJBjwuusiOVzVaeU7cF/view?usp=sharing
Hola @Johan94
Perdón por responder tarde.
Por favor, cree medidas
lastmonth = CALCULATE(MAX('date'[year-month]),FILTER(ALLSELECTED('Table'),'Table'[CustomerID]=MAX('Table'[CustomerID])))
measure in days =
VAR days1 =
CALCULATE (
SUM ( 'date'[days_m] ),
VALUES ( 'date'[year-month] ),
FILTER (
ALLSELECTED ( 'Table' ),
'Table'[CustomerID]
= MAX ( 'Table'[CustomerID] )
)
)
RETURN
IF (
[lastmonth]
= MAX ( 'date'[year-month] )
&& [lastmonth]
<> BLANK (),
MAX ( 'date'[days_m] ) / 2,
days1
)
each days = SUMX(FILTER(ALLSELECTED('Table'),'Table'[CustomerID]=MAX('Table'[CustomerID])),[measure in days])
average dyas = SUMX(ALLSELECTED('Table'),[measure in days])/2
La tabla de fechas utilizada anteriormente
date =
ADDCOLUMNS (
CALENDARAUTO (),
"year", YEAR ( [Date] ),
"month", MONTH ( [Date] ),
"year-month", FORMAT (
[Date],
"yyyy-mm"
)
)
add a column in date table
days_m = CALCULATE(COUNT('date'[Date]),ALLEXCEPT('date','date'[year-month]))
Saludos
Maggie
Equipo de Apoyo Comunitario _ Maggie Li
Si este post ayuda, por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Hola @v-juanli-msft ,
¡No hay problema! Yo también respondo tarde.
Quería hacerle saber que las medidas funcionaron. Así que, muchas gracias por eso. Descubrió que la medida 'cada día' no mostraba el total correcto (mostraba el número de la última fila). Esta medida resuelve que:
Hola @v-juanli-msft ,
Me preguntaba si es posible añadir otra especificación en la medida. Por ejemplo, si agrega una columna para especificar el país para cada cliente, digamos España y Francia (ver imagen). Traté de cambiar la primera medida:
Pero eso no hace ninguna diferencia en comparación con la medida 'cada día'... ¿Hay alguna manera de crear esta medida?
Hola @Johan94
¿Está bien?
lastmonth =
CALCULATE (
MAX ( 'date'[year-month] ),
FILTER (
ALLSELECTED ( 'Table' ),
'Table'[CustomerID]
= MAX ( 'Table'[CustomerID] )
&& 'Table'[country]
= MAX ( 'Table'[country] )
)
)
measure in days =
VAR days1 =
CALCULATE (
SUM ( 'date'[days_m] ),
VALUES ( 'date'[year-month] ),
FILTER (
ALLSELECTED ( 'Table' ),
'Table'[CustomerID]
= MAX ( 'Table'[CustomerID] )
&& 'Table'[country]
= MAX ( 'Table'[country] )
)
)
RETURN
IF (
[lastmonth]
= MAX ( 'date'[year-month] )
&& [lastmonth]
<> BLANK (),
MAX ( 'date'[days_m] ) / 2,
days1
)
each days =
SUMX (
FILTER (
ALLSELECTED ( 'Table' ),
'Table'[CustomerID]
= MAX ( 'Table'[CustomerID] )
&& 'Table'[country]
= MAX ( 'Table'[country] )
),
[measure in days]
)
total eachdays =
IF (
ISINSCOPE ( 'Table'[CustomerID] ),
[each days],
AVERAGEX (
SUMMARIZE (
'Table',
'Table'[CustomerID],
"m", [each days]
),
[m]
)
)
Saludos
Maggie
Hola @Johan94
Para el cliente 2, sólo tiene una fecha 2020/2/1,
para el cliente 3, tiene un período de 2020/5/1-2020/6/1,
por qué el "tiempo de espera en días" para ellos es 14.5, 46,
Para el cliente 4, si decimos que tiene un período de 2018/1/1-2019/7/1, entonces su "tiempo de espera en días" debe ser de más de 500 días.
Por favor, explique la regla de cálculo.
Saludos
Maggie
Hola @v-juanli-msft
Gracias por su respuesta.
El cliente 2 solo tiene una fecha, porque ese cliente ya no estaba en la lista de espera para 2020/3/1. Pero como no sabemos cuándo ese cliente ya no estaba en la lista en febrero, el número de días de espera es de 14,5. Este es nuestro mejor enfoque/estimación que podemos hacer (29 días este año en Febrary, por lo que 0,5 x 14,5 días).
Así que para el cliente 3 es el siguiente: 31 días en mayo, 15 días (0,5 * 30) en junio 46.
El cliente 4 parecía estar dos veces en la lista de espera. 5,5 meses en 2018 y 6,5 meses en 2019. Entre esos dos períodos, el cliente no estaba en la lista de espera, por lo tanto esos meses no deberían incluirse. Por lo tanto, el número de días de espera es 362.5.
Espero que esto ayude.
Es posible que puedas usar una variación de Cthulhu para obtener tu columna de identificación de grupo. https://community.powerbi.com/t5/Quick-Measures-Gallery/Cthulhu/m-p/509739#M211
Necesitará algún tipo de columna de identificador de grupo y luego podría hacer algo como MTBF. Vea mi artículo sobre el tiempo medio entre el error (MTBF) que utiliza EARLIER: http://community.powerbi.com/t5/Community-Blog/Mean-Time-Between-Failure-MTBF-and-Power-BI/ba-p/3395...
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 |
---|---|
1 | |
1 | |
1 | |
1 | |
1 |
User | Count |
---|---|
2 | |
2 | |
1 | |
1 | |
1 |