Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more. Get started
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 Name | Ventas ($) | SalesDate |
West Ham | 325,031 | 01/02/2020 |
West Ham | 170,353 | 01/01/2019 |
West Ham | 844,280 | 01/01/2019 |
West Ham | 298,361 | 01/03/2020 |
West Ham | 371,474 | 01/01/2020 |
West Ham | 599,903 | 01/02/2019 |
West Ham | 364,402 | 01/12/2019 |
West Ham | 574,705 | 01/11/2019 |
West Ham | 796,911 | 01/10/2019 |
Estoy corriendo en terrible problemas, aunque. ¿Alguien puede ayudarme?
Gracias
Solved! Go to 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
Proud to be a Super User!
Check out my blog: Power BI em PortuguêsPuedes intentar como
Rolling 12 - CALCULATE(Average(Sales[Sales[Sales Amount]),DATESINPERIOD('Date'[Date],startofmonth(Sales[Sales Date]),-12,MONTH))
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.
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
Proud to be a Super User!
Check out my blog: Power BI em PortuguêsHola @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
Proud to be a Super User!
Check out my blog: Power BI em PortuguêsMuchas @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
Proud to be a Super User!
Check out my blog: Power BI em PortuguêsHola @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 ($)] )
)
Check out the September 2024 Power BI update to learn about new features.
Learn from experts, get hands-on experience, and win awesome prizes.
User | Count |
---|---|
2 | |
2 | |
1 | |
1 | |
1 |