cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Highlighted
Helper II
Helper II

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
Highlighted
Super User IX
Super User IX

Re: Promedio de 3 años rodante

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/



Did I answer your question? Mark my post as a solution! Appreciate your Kudos!!
My Recent Blog -Week is not so Weak Connect on Linkedin

Proud to be a Super User!

Highlighted
Helper II
Helper II

Re: Promedio de 3 años rodante

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?

Highlighted
Helper II
Helper II

Re: Promedio de 3 años rodante

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.

Highlighted
Super User IX
Super User IX

Re: Promedio de 3 años rodante

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])


Did I answer your question? Mark my post as a solution! Appreciate your Kudos!!
My Recent Blog -Week is not so Weak Connect on Linkedin

Proud to be a Super User!

Highlighted
Helper II
Helper II

Re: Promedio de 3 años rodante

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.

Highlighted
Super User IX
Super User IX

Re: Promedio de 3 años rodante

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

Compruebe si hay unidad avg



Did I answer your question? Mark my post as a solution! Appreciate your Kudos!!
My Recent Blog -Week is not so Weak Connect on Linkedin

Proud to be a Super User!

Highlighted
Community Support
Community Support

Re: Promedio de 3 años rodante

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.
Highlighted
Helper II
Helper II

Re: Promedio de 3 años rodante

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?

Highlighted
Helper II
Helper II

Re: Promedio de 3 años rodante

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.

Helpful resources

Announcements
Meet the 2020 Season 2 Power BI Super Users!

Meet the 2020 Season 2 Power BI Super Users!

Find out who's part of the program this season, and welcome the new Super Users.

August 2020 Community Challenge: Can You Solve These?

August 2020 Community Challenge: Can You Solve These?

We're excited to announce our first cross-community 'Can You Solve These?' challenge!

July 2020 Community Highlights

July 2020 Community Highlights

Learn about the exciting things that happened in July.

Featured Data Story of The Month

Featured Data Story of The Month

All Data Stories Gallery contributions are reviewed for each month. We select a contribution and feature the community member the following month.

Power BI Dev Camp - Developing with .NET Core

Power BI Dev Camp - Developing with .NET Core

Learn how to develop custom web applications for Power BI using .NET Core 3.1 and .NET 5.

Top Solution Authors