Join us at FabCon Atlanta from March 16 - 20, 2026, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.
Register now!The Power BI Data Visualization World Championships is back! It's time to submit your entry. Live now!
Hola a todos, quiero crear una nueva columna calculada que iterará a través de mis filas y devolverá un valor promedio para los valores actuales y pasados 2 para cada nombre único teniendo en cuenta Tiempo
| Nombre | hora | Cantidad | VALOR DEVUELTO ESPERADO |
| A | 10:00 | 4 | (puede ser nulo o 4) |
| B | 10:00 | 5 | (puede ser nulo o 5) |
| A | 11:00 | 3 | (puede ser nulo o 3.5) |
| B | 11:00 | 1 | (puede ser nulo o 6) |
| A | 12:00 | 1 | 8 (4+3+1) / 3 a 8/3 |
| B | 12:00 | 5 | 11(5+1+5) / 3 a 11/3 |
| A | 13:00 | 6 | 10 (3+1+6) / 3 a 10/3 |
| B | 13:00 | 3 | 9 (1+5+3) / 3 á 3 |
| A | 14:00 | 5 | 12 (1+6+5) / 3 á 4 |
¿Por qué necesito esto? Porque quiero crear un gráfico de líneas que usará Tiempo como eje X y para cada hora mostrará un valor promedio para esta hora y dos horas pasadas. Como se puede ver encima de la función para Nombre a y Hora a 14:00 devuelve la base media en Importe de 12:00, 13:00 y 14:00 donde Nombre a A. También es importante tener en cuenta que hay más de una fecha en mis datos, así que tenga en cuenta que el nombre a A, la hora a las 10:00 puede ocurrir varias veces, pero con una fecha diferente. Entonces, supongo que el desafío es crear e indexar que tendrá en cuenta tanto la fecha, la hora y el nombre y luego usar este índice para interatar sobre la cantidad?
@Termigez
Primero debe crear un índice para el [Tiempo], por lo que puede mirar hacia atrás para un rango, porque el tipo de tiempo no es compatible
Index = RANKX('Table',[Time],,ASC,Dense)
Result = CALCULATE(AVERAGE('Table'[Amount]),FILTER('Table',[Name]=EARLIER('Table'[Name])),FILTER('Table','Table'[Index]<=EARLIER('Table'[Index])&&'Table'[Index]>EARLIER('Table'[Index])-3))
Paul Zheng
Si este post ayuda, por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Pruebe uno de los dos como columnas
Avg = avergageX(filter(table,table[Name] =earlier(table[Name]) && table[time] <=earlier(table[time])),table[Amount])
Avg = avergageX(filter(table,table[Name] =earlier(table[Name]) && table[time] <earlier(table[time])),table[Amount])
Desafortunadamente esas fórmulas no funcionan. Agradecería cualquier otra idea.