Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
rogerdea
Helper IV
Helper IV

Promedio de 3 años rodantes

Hola

Estoy tratando de averiguar cómo calcular esto a partir de mis datos y luchando con esto. Necesito el promedio de 3 años de la suma de unidades, teniendo en cuenta que para el primer año comienzan los datos (2010) el promedio debe ser de 1 año promedio, y para los dos primeros años (2010, 2011) será un promedio de 2 años y luego se moverá a los promedios requeridos de 3 años a partir de entonces.

Estoy conectando mis datos a una tabla de fechas realizada mediante la función CALENDAR.

A continuación se muestran algunos datos de ejemplo, que incluyen los resultados esperados posteriores a eso. ¡Cualquier ayuda apreciada!

Datos:

IdFechaUnidad
102/03/20101
205/05/20102
309/06/20101
401/06/20113
502/10/20111
615/12/20114
714/10/20111
830/04/20112
901/01/20121
1006/07/20123
1103/09/20122
1224/12/20128
1318/05/20122
1419/05/20121
1501/03/20131
1602/03/20133
1708/10/20136
1821/08/20132
1902/02/20143
2014/02/20141
2113/05/20141
2216/09/20152
2317/05/20152
2431/07/20151
2501/09/20164
2603/05/20161
2701/02/20162
2830/10/20162
2924/11/20163
3005/04/20176
3106/05/20175
3201/09/20172
3324/12/201710
3431/12/20175
3506/06/20182
3607/08/20184
3709/09/20181
3801/02/20186
3904/10/201915
4020/01/201910
4114/03/20198

Resultados esperados

añoSuma de la unidad3 años promedio
201044
2011117.5
20121710.6
20131213.3
2014511.3
201557.3
2016127.3
20172815
20181317.6
20193324.6
12 REPLIES 12
v-xuding-msft
Community Support
Community Support

Hola @rogerdea ,

Por favor, intente así:

  • Cree una tabla de calendario.

Date =
VAR _calendar =
    CALENDAR ( MIN ( 'Table'[Date] ), MAX ( 'Table'[Date] ) )
RETURN
    ADDCOLUMNS ( _calendar, "Year", YEAR ( [Date] ) )

  • Cree una medida.

Measure =
DIVIDE (
    CALCULATE (
        SUM ( 'Table'[Unit] ),
        DATESINPERIOD ( 'Date'[Date], MAX ( 'Date'[Date] ), -3, YEAR )
    ),
    CALCULATE (
        DISTINCTCOUNT ( 'Date'[Year] ),
        DATESINPERIOD ( 'Date'[Date], MAX ( 'Date'[Date] ), -3, YEAR )
    )
)

4.PNG

Para obtener más información, consulte el archivo adjunto.

Saludos

Xue Ding

Si este post Ayuda, entonces por favor considereAcéptelo como la soluciónpara ayudar a los otros miembros a encontrarlo más rápidamente.

Best Regards,
Xue Ding
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

Gracias @v-xuding-msft

Estoy recibiendo un error a mitad de la segunda parte que publicó: (desenfumó mis nombres de tabla para la privacidad)

Captureerror.JPG

¿He hecho algo malo?

Hola @rogerdea ,

Hay un paréntesis extra en su fórmula. Lo señalo con bolígrafo rojo. Por favor, quítelo para intentarlo.

6.PNG

Puede descargar el archivo pbix de mi respuesta anterior. Puede ayudarte un poco.

Best Regards,
Xue Ding
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

@v-xuding-msft

increíble esto funciona en mi archivo pbx principal ahora. Sin embargo, una cosa que no se ve bien en su pbx adjunta es el promedio 2019 es incorrecto. Todos los demás tienen razón. Sin embargo, el uso del mismo DAX funciona en mi archivo.

Hola @rogerdea ,

Me alegra que funcione bien en tu muestra. 😊

Para obtener un resultado incorrecto, puede deberse a la fecha. El formato de fecha es mm/dd/aaaa en lugar de dd/mm/aaaa en mi muestra. No lo cambio para que coincida con tu fecha de muestra por completo. Simplemente lo importo y el escritorio lo cambio de su formato a mm / dd / aaaa automáticamente.

Saludos

Xue Ding

Si este post Ayuda, entonces por favor considereAcéptelo como la soluciónpara ayudar a los otros miembros a encontrarlo más rápidamente.

Best Regards,
Xue Ding
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
amitchandak
Super User
Super User

Normalmente, esta forma en que lo hacemos rodando con un calendario de fechas. Ejemplo

Rolling 3 = CALCULATE(sum(Sales[Sales Amount]),DATESINPERIOD('Date'[Date],ENDOFMONTH(Sales[Sales Date]),-3,Year)) 
Or
Rolling 3 = CALCULATE(sum(Sales[Sales Amount]),DATESINPERIOD('Date'[Date Filer],MAX(Sales[Sales Date]),-3,Year))  

Rolling 3 = CALCULATE(Average(Sales[Sales Amount]),DATESINPERIOD('Date'[Date],ENDOFMONTH(Sales[Sales Date]),-3,Year)) 
Or
Rolling 3 = CALCULATE(Average(Sales[Sales Amount]),DATESINPERIOD('Date'[Date Filer],MAX(Sales[Sales Date]),-3,Year))  

Para obtener lo mejor de la función de inteligencia de tiempo. Asegúrese de que tiene un calendario de fechas y se ha marcado como la fecha en la vista de modelo. Además, únase a él con la columna de fecha de su hecho/s. Consulte:
https://radacad.com/creating-calendar-table-in-power-bi-using-dax-functions
https://www.archerpoint.com/blog/Posts/creating-date-table-power-bi
https://www.sqlbi.com/articles/creating-a-simple-date-table-in-dax/

Rolling 3 = CALCULATE(Average(Sales[Sales Amount]),DATESINPERIOD('Date'[Date],ENDOFMONTH(Sales[Sales Date]),-3,Year)) 

@amitchandak He intentado el método anterior y no tengo errores, pero mi salida es:

rolling.JPG

Cada fila tiene una columna con el amoun de unidades (que son todas 1). ¿Necesita haber una SUMA en algún lugar del DAX para obtener la suma anual?

Trate como

rolling 3 = CALCULATE(Average(Sales[Sales Amount]),DATESINPERIOD('Date'[Date],ENDOFMONTH(Sales[Sales Date]),-3,Year)) 

Avg rolling = Averagex(summarize(table,Date[year],"_1",[rolling 3 ]),[_1])

No he sido capaz de conseguir que funciona, la primera parte sólo devuelve un "1" para cada año. Pero cambié eso a lo siguiente que funciona excepto durante los dos primeros años, donde no hay suficientes datos de años para dividir por 3:

Se ha cambiado el promedio a una suma y, a continuación, se divide por 3.

Rolling 3 = CALCULATE(SUM('FACT DATA'[data_table]),DATESINPERIOD('Date Table'[Date],ENDOFMONTH('FACT DATA'[Date]),-3,YEAR)) /3

El problema es que los dos primeros años no son el promedio correcto porque no hay tres años de datos.

@rogerdea , Encuentre la solución adjunta después de la firma

Compruebe si hay unidad avg

Gracias @amitchandak

Eso casi funciona, pero no del todo. El campo de la unidad media para los años 2010, 2011 y 2012 es correcto, pero 2013 en adelante no lo son. Para 2013 esperaría que el resultado de la "unidad media" fuera 13,3 (y no 10,00). Este debe ser el promedio de los valores 11, 17 y 12.

Para tener claro que es el año calendario promedio que necesito, por ejemplo 1 de enero a 31 dic cada año, sumado y luego estos promediados.

Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

Find out what's new and trending in the Fabric Community.

Top Solution Authors