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

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.

Reply
Anonymous
Not applicable

Diferencia de fecha promedio entre dos fechas en la misma columna

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_IDFecha
11-10-2018
11-11-2018
11-12-2018
11-1-2019
11-2-2019
21-2-2020
31-5-2020
31-6-2020
41-1-2018
41-2-2018
41-3-2018
41-4-2018
41-5-2018
41-6-2018
41-1-2019
41-2-2019
41-3-2019
41-4-2019
41-5-2019
41-6-2019
41-7-2019

1 ACCEPTED SOLUTION

Hola @Johan94

Perdón por responder tarde.

Por favor, cree medidas

Capture2.JPG

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.

View solution in original post

11 REPLIES 11
v-juanli-msft
Community Support
Community Support

Hola @Johan94

Obtengo resultados como se muestra a continuación:

Capture8.JPG

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

Anonymous
Not applicable

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

Capture2.JPG

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.

Anonymous
Not applicable

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:

cada days_total de cada days_total
IF(HASONEVALUE('Table'[CustomerID]);[cada día];
AVERAGEX(
RESUMIR(
'Tabla';
[CustomerID];
"Medida"; [cada día]);
[Medida] ) )
Anonymous
Not applicable

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:

Medida de España en días á var days1 - CALCULATE(SUM('date'[days_m]);' Tabla'[País] - "España";
VALUES('fecha'[año-mes]); FILTRO(ALLSELECTED('Tabla');' Tabla'[CustomerID]-MAX('Table'[CustomerID]))) devuelve IF([lastmonth]-MAX('date'[año-mes])&&[lastmonth]<>BLANK(); MAX('date'[days_m])/2;días1)
Y en segundo lugar, alterar la siguiente medida:
España cada día- SUMX(FILTER(ALLSELECTED('Table');' Tabla'[CustomerID]'MAX('Table'[CustomerID])); [Medida de España en días])

Pero eso no hace ninguna diferencia en comparación con la medida 'cada día'... ¿Hay alguna manera de crear esta medida?

Country.png

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]
    )
)

Capture4.JPG

Saludos

Maggie

Anonymous
Not applicable

@v-juanli-msft

¡Muchas gracias!

v-juanli-msft
Community Support
Community Support

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

Anonymous
Not applicable

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.

Greg_Deckler
Super User
Super User

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


@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...
Greg_Deckler
Super User
Super User

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...


@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

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

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.