Calcular el promedio desde x mes antes de una fecha determinada

Un usuario Pregunto ✅

rginny_

Hola a todos

Tengo dos imágenes de tarjetas y un ajuste de salida «después» en mi informe. Cuando establece la segmentación de fecha en un día determinado, una de las tarjetas muestra el promedio mensual de los usuarios totales antes de la fecha seleccionada y la otra tarjeta muestra el promedio mensual de los usuarios totales desde la fecha seleccionada.

La medida «desde» tiene este aspecto:

TUAmed ?
PROMEDIOX(
RESUMEN(fechas,fechas[Month]),
[Usuarios totales])
La medida «antes» tiene este aspecto:
TUAvg Antes de la estación de
CALCULAR(
PROMEDIOX(
RESUMEN(fechas,fechas[Month]),
[Usuarios totales]),
FILTRO(TODO(fechas),
fechas[date]

Ahora estoy tratando de cambiar la medida «antes» para que solo tome la media de la misma cantidad de tiempo que lo haría la medida «después». Así, por ejemplo, si mi segmentación de fecha se establece en 10 de septiembre de 2020, entonces mi segmentación ‘después’ promediará el total de usuarios de 3 meses hasta la fecha de hoy (septiembre <10 septiembre en adelante>, octubre, noviembre – 68 días). En este caso, me gustaría que mi cortadora antes sólo promediar el total de usuarios de 3 meses antes del 10 de septiembre (septiembre , agosto, julio <4 julios en adelante> – 68 dias) en lugar de promediar todos los meses anteriores al 10 de septiembre.

Esencialmente, me gustaría que el promedio ‘antes’ siempre se basa en la misma cantidad de tiempo que el promedio posterior, que es Fecha de hoy – Fecha filtrada.

Espero que lo haya explicado bien – No creo que sea demasiado complejo, pero no puedo averiguar cómo hacerlo. ¡Muchas gracias por cualquier ayuda de antemano!

Hola, @rginny_

Según su descripción, cree datos para reproducir su escenario. El archivo pbix se adjunta al final.

Colina baja:

e1.png

Calendario (una tabla calculada):

Calendar = CALENDAR(DATE(2019,1,1),DATE(2020,12,31))

No hay ninguna relación entre tablas. Puede crear dos medidas como se indica a continuación.

Before Measure= 
var selecteddate = SELECTEDVALUE('Calendar'[Date])
var diff = TODAY()-selecteddate
var beforedate = selecteddate-diff
return
AVERAGEX(
    FILTER(
        ALL('Table'),
        [Date]>=beforedate&&
        [Date]<=selecteddate
    ),
    [Value]
)
Since Measure = 
var selecteddate = SELECTEDVALUE('Calendar'[Date])
return
AVERAGEX(
    FILTER(
        ALL('Table'),
        [Date]>=selecteddate&&
        [Date]<=TODAY()
    ),
    [Value]
)

Resultado:

e2.png

Saludos

Alano

Si esta publicación ayuda,entonces considera Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

Hola, @rginny_

Según su descripción, cree datos para reproducir su escenario. El archivo pbix se adjunta al final.

Colina baja:

e1.png

Calendario (una tabla calculada):

Calendar = CALENDAR(DATE(2019,1,1),DATE(2020,12,31))

No hay ninguna relación entre tablas. Puede crear dos medidas como se indica a continuación.

Before Measure= 
var selecteddate = SELECTEDVALUE('Calendar'[Date])
var diff = TODAY()-selecteddate
var beforedate = selecteddate-diff
return
AVERAGEX(
    FILTER(
        ALL('Table'),
        [Date]>=beforedate&&
        [Date]<=selecteddate
    ),
    [Value]
)
Since Measure = 
var selecteddate = SELECTEDVALUE('Calendar'[Date])
return
AVERAGEX(
    FILTER(
        ALL('Table'),
        [Date]>=selecteddate&&
        [Date]<=TODAY()
    ),
    [Value]
)

Resultado:

e2.png

Saludos

Alano

Si esta publicación ayuda,entonces considera Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

CNENFRNL

Hola, @rginny_ , se deduce su descripción de Fechas[Date] se extiende desde 2020/7/4 hasta hoy (2020/11/17), ¿no? Es posible que desee probar una medida aprovechando alguna función de inteligencia de tiempo en DAX,

TUAvg Before =
VAR __period =
    DATESBETWEEN (
        Dates[Date],
        STARTOFMONTH ( DATEADD ( Dates[Date], -2, MONTH ) ),
        MAX ( Dates[Date] ) - 1
    )
RETURN
    AVERAGEX ( [total users], __period )

y en consecuencia,

TUAvg Since =
VAR __period =
    DATESBETWEEN (
        Dates[Date],
        MAX ( Dates[Date] ) + 1,
        ENDOFMONTH ( DATEADD ( Dates[Date], 2, MONTH ) )
    )
RETURN
    AVERAGEX ( [total users], __period )

Captura de pantalla 2020-11-17 214434.png

NamishB

Hola @rginny_ – ¿Puedes publicar algunos datos para explicar más?

y tambien cual es su resultado esperado?

También pruebe una semana menor en su medida y compare los resultados:

TUAvg Before =
CALCULATE (
    AVERAGEX ( SUMMARIZE ( dates, dates[Month] ), [Total Users] ),
    FILTER (dates, dates[date] < MIN ( dates[date] ) )
)

Si esto no resuelve el propósito, por favor publique datos.

salud

Namish B

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *