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
Mis datos son aproximados de la siguiente manera:
Dataset Obs Time Obs Value
name of station dtg mcgm/m3
Necesito crear un promedio móvil de 24 horas de Obs Value donde el conjunto de datos permanece igual, es decir, para cada estación de monitoreo (estos son datos de contaminación). Mi lógica es así:
Promedio de todos los valores obs para un único conjunto de datos en las 24 horas anteriores al tiempo de Obs (para crear una columna calculada adicional)
Hasta ahora, he probado varios enfoques, pero no puedo obtener mi sintaxis correcta. Las variantes DATEDIFF/DATEBETWEEN no parecen funcionar. He creado una cuarta columna llamada Obs Time-1 que resta 24 horas de Obs Time; por lo tanto lo que quiero es el promedio de:
- ObsValues
- Todo el conjunto de datos coincidente
- Todo dentro de Obs Time-1 to Obs Time.
Mi DAX actual (nota, he probado docenas de variantes) es el siguiente:
=CALCULATE(
AVERAGE(DATA_AIR_QUALITY[Value (Micrograms per Cubic Metres)]),
FILTER(DATA_AIR_QUALITY,
DATA_AIR_QUALITY[DataSet]=EARLIEST(DataSet]) // match the obs station
&& DATA_AIR_QUALITY[ObsTime]>EARLIEST(DATA_AIR_QUALITY[ObsTime-1]) // later than 24 hours previous
&& DATA_AIR_QUALITY[ObsTime]<EARLIEST(DATA_AIR_QUALITY[ObsTime]) // earlier than current stamp, but might be <=
)
)
@zhivana, intenta como
Nueva Columna (New Column)
AVERAGEX(FILTER(DATA_AIR_QUALITY,
DATA_AIR_QUALITY[DataSet]-earlier(DataSet]) // coinciden con la estación obs
&& DATA_AIR_QUALITY[ObsTime]>earlier(DATA_AIR_QUALITY[ObsTime])-1 // más tarde de 24 horas anteriores
&& DATA_AIR_QUALITY[ObsTime]<earlier(DATA_AIR_QUALITY[ObsTime]) // anterior al sello actual, pero podría ser <-
),DATA_AIR_QUALITY[Valor (microgramos por metro cúbico)])
nueva medida
•CALCULATE(
PROMEDIO(DATA_AIR_QUALITY[Valor (microgramos por metro cúbico)]),
FILTRO(DATA_AIR_QUALITY,
DATA_AIR_QUALITY[DataSet]-max(DataSet]) // coinciden con la estación obs
&& DATA_AIR_QUALITY[ObsTime]>-max(DATA_AIR_QUALITY[ObsTime])-1 // más tarde que 24 horas anteriores
&& DATA_AIR_QUALITY[ObsTime]<max(DATA_AIR_QUALITY[ObsTime]) // anterior al sello actual, pero podría ser <-
)
)
Hola
La solución sugerida no funcionó. Sin embargo, un compañero de trabajo se le ocurrió uno que hizo (no muy elegante, pero hizo el trabajo!) Aquí está:
= (CALCULATE(
SUM(DATA_AIR_QUALITY[Value (Micrograms per Cubic Metres)]),
FILTER(DATA_AIR_QUALITY,DATA_AIR_QUALITY[Date]=(EARLIEST(DATA_AIR_QUALITY[Date])-1)),
FILTER(DATA_AIR_QUALITY,DATA_AIR_QUALITY[DataSet]=EARLIEST(DATA_AIR_QUALITY[DataSet])),
FILTER(DATA_AIR_QUALITY,DATA_AIR_QUALITY[Time]>=EARLIEST(DATA_AIR_QUALITY[Time])))
+ CALCULATE(SUM(DATA_AIR_QUALITY[Value (Micrograms per Cubic Metres)]),
FILTER(DATA_AIR_QUALITY,DATA_AIR_QUALITY[Date]=EARLIEST(DATA_AIR_QUALITY[Date])),
FILTER(DATA_AIR_QUALITY,DATA_AIR_QUALITY[DataSet]=EARLIEST(DATA_AIR_QUALITY[DataSet])),
FILTER(DATA_AIR_QUALITY,DATA_AIR_QUALITY[Time]<EARLIEST(DATA_AIR_QUALITY[Time]))))/
(CALCULATE(COUNTROWS(DATA_AIR_QUALITY),
FILTER(DATA_AIR_QUALITY,DATA_AIR_QUALITY[Date]=(EARLIEST(DATA_AIR_QUALITY[Date])-1)),
FILTER(DATA_AIR_QUALITY,DATA_AIR_QUALITY[DataSet]=EARLIEST(DATA_AIR_QUALITY[DataSet])),
FILTER(DATA_AIR_QUALITY,DATA_AIR_QUALITY[Time]>=EARLIEST(DATA_AIR_QUALITY[Time])))
+ CALCULATE(COUNTROWS(DATA_AIR_QUALITY),
FILTER(DATA_AIR_QUALITY,DATA_AIR_QUALITY[Date]=EARLIEST(DATA_AIR_QUALITY[Date])),
FILTER(DATA_AIR_QUALITY,DATA_AIR_QUALITY[DataSet]=EARLIEST(DATA_AIR_QUALITY[DataSet])),
FILTER(DATA_AIR_QUALITY,DATA_AIR_QUALITY[Time]<EARLIEST(DATA_AIR_QUALITY[Time]))))
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 |
---|---|
2 | |
1 | |
1 | |
1 | |
1 |
User | Count |
---|---|
2 | |
2 | |
2 | |
2 | |
1 |