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

Dificultades de medida

Hola Equipo,

Tengo una tabla simple con 3 columnas.

Me han encargado crear una medida. El cliente desea ver el Promedio de ventas por cliente donde SalesDate se encuentra entre el período entre el inicio del mes actual y los 12 meses anteriores.

Este es mi intento:

Ventas de 12 meses ?

VAR __startcurrentmonth á Fecha(Año(Hoy()), Mes(Hoy()),1)

VAR __previous12 - EDATE(__startcurrentmonth,-12)

if(and(SalesDate<-VAR __startcurrentmonth, SalesDate>-VAR __previous12), average(Sales ($)), "")

Cust NameVentas ($)SalesDate
West Ham325,03101/02/2020
West Ham170,35301/01/2019
West Ham844,28001/01/2019
West Ham298,36101/03/2020
West Ham371,47401/01/2020
West Ham599,90301/02/2019
West Ham364,40201/12/2019
West Ham574,70501/11/2019
West Ham796,91101/10/2019

Estoy corriendo en terrible problemas, aunque. ¿Alguien puede ayudarme?

Gracias

1 ACCEPTED SOLUTION

Hola @water_hydration ,

Esto está relacionado con el contexto de filtro debe ser después de la AVERAGEX y no dentro de AVERAGEX:

12 Month Sales =
VAR __startcurrentmonth =
    DATE ( YEAR ( TODAY () ), MONTH ( TODAY () ), 1 )
VAR __previous12 =
    EDATE ( __startcurrentmonth, -12 )
RETURN
    CALCULATE (
        AVERAGEX ( SalesTable, AVERAGE ( SalesTable[Sales ($)] ) ),
        FILTER (
            ALL ( SalesTable ),
            SalesTable[SalesDate] <= __startcurrentmonth
                && SalesTable[SalesDate] >= __previous12
        )
    )


Regards

Miguel Félix


Did I answer your question? Mark my post as a solution!

Proud to be a Super User!

Check out my blog: Power BI em Português



View solution in original post

8 REPLIES 8
amitchandak
Super User
Super User

Puedes intentar como

Rolling 12 - CALCULATE(Average(Sales[Sales[Sales Amount]),DATESINPERIOD('Date'[Date],startofmonth(Sales[Sales Date]),-12,MONTH))

Anonymous
Not applicable

Hola @amitchandak

Muchas gracias por su respuesta.

No tengo una mesa de "Fecha".

FECHASINPERIOD('Fecha'[Fecha]

Así que lo cambié a DATESINPERIOD('Sales'[Fecha]

Sin embargo, la fórmula general solo devuelve el valor de la primera fecha.

MFelix
Super User
Super User

Hola @water_hydration ,

Las medidas se basan en el contexto, por lo que no puede utilizar las columnas como parte del cálculo que necesita para usar la agregación.

En su caso, cree que necesita tener el AVERAGEX que realiza un cálculo de una tabla fila por fila en función de los valores individuales. Prueba algo similar a esto:

12 Month Sales =
VAR __startcurrentmonth =
    DATE ( YEAR ( TODAY () ), MONTH ( TODAY () ), 1 )
VAR __previous12 =
    EDATE ( __startcurrentmonth, -12 )
RETURN
    AVERAGEX (
        FILTER (
            ALL ( SalesTable ),
            SalesTable[SalesDate] <= __startcurrentmonth
                && SalesTable[SalesDate] >= __previous12
        ),
        SUM ( SalesTable[Sales ($)] )
    )

Regards

Miguel Félix


Did I answer your question? Mark my post as a solution!

Proud to be a Super User!

Check out my blog: Power BI em Português



Hola @water_hydration ,

Esto está relacionado con el contexto de filtro debe ser después de la AVERAGEX y no dentro de AVERAGEX:

12 Month Sales =
VAR __startcurrentmonth =
    DATE ( YEAR ( TODAY () ), MONTH ( TODAY () ), 1 )
VAR __previous12 =
    EDATE ( __startcurrentmonth, -12 )
RETURN
    CALCULATE (
        AVERAGEX ( SalesTable, AVERAGE ( SalesTable[Sales ($)] ) ),
        FILTER (
            ALL ( SalesTable ),
            SalesTable[SalesDate] <= __startcurrentmonth
                && SalesTable[SalesDate] >= __previous12
        )
    )


Regards

Miguel Félix


Did I answer your question? Mark my post as a solution!

Proud to be a Super User!

Check out my blog: Power BI em Português



Anonymous
Not applicable

Muchas @MFelix !

¿Puede explicar el último bit de la devolución?

Estoy un poco confundido en cuanto a cómo funciona. El único bit que tuve que eliminar fue el 'All' de la función, ya que seguía devolviendo el mismo número por cliente.

    RETURN CALCULATE (
        AVERAGEX ( SalesTable, AVERAGE ( SalesTable[Sales ($)] ) ),
        FILTER ( ALL (
            SalesTable ),
            SalesTable[SalesDate] <- __startcurrentmonth
                && SalesTable[SalesDate] > __previous12
        )
    )

Hola @water_hydration ,

Cuando se utiliza la variable es necesario iniciar el cálculo con una devolución, básicamente lo que esta medida está calculando es el valor PROMEDIO para cada fila de datos dentro de la tabla de ventas, pero al cálculo (CALCULATE) se aplica un filtro que es la segunda parte del CALCULATE por lo que sólo ejecuta el AVERAGEX para todos los valores contenidos dentro de las fechas consideradas en las fechas que defina en las variables.

La parte ALL de la solución fue un error de mi parte ya que he sacado el filtro al calcular si coloca el TODO quitará todo el contexto de filtro y devolverá el mismo valor para todas las líneas en su cliente de caso. El ALL se utiliza cuando se desea hacer porcentaje sobre total, por ejemplo.


Regards

Miguel Félix


Did I answer your question? Mark my post as a solution!

Proud to be a Super User!

Check out my blog: Power BI em Português



Anonymous
Not applicable

Muchas gracias @MFelix

Anonymous
Not applicable

Hola @MFelix

¡Wow! Esa fue una respuesta súper rápida - gracias.

Desafortunadamente la fórmula no funciona. Está cerca. He cambiado la suma a la media al final que ayudó, pero el problema principal es que es ignorar los filtros de fecha. Devuelve el promedio del conjunto de datos completo en lugar de solo los meses que queremos incluir.

Cualquier experiencia o ayuda que pueda ofrecer sería muy apreciada.

Gracias

W

12 Month Sales =
VAR __startcurrentmonth =
    DATE ( YEAR ( TODAY () ), MONTH ( TODAY () ), 1 )
VAR __previous12 =
    EDATE ( __startcurrentmonth, -12 )
RETURN
    AVERAGEX (
        FILTER (
            ALL ( SalesTable ),
            SalesTable[SalesDate] <= __startcurrentmonth
                && SalesTable[SalesDate] >= __previous12
        ),
        Average ( SalesTable[Sales ($)] )
    )

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.