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

Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more. Get started

Reply
Syndicate_Admin
Administrator
Administrator

¿Necesita ayuda con la fórmula?

Necesito promediar 6 meses de datos para un rango de datos específicos en una nueva columna.

Por ejemplo, aunque sea junio, necesito promediar 6 meses de datos de noviembre '23 - abril de 2024

Enero - Junio será el mismo promedio de los últimos 6 meses, luego julio - Diciembre 2024 comenzará el promedio de los próximos 6 meses (mayo - octubre)

yaya1974_1-1719247642858.png

Prefiero no usar una medida, sino una fórmula real en una nueva columna. ¿Alguien puede ayudar, por favor?

11 REPLIES 11
Syndicate_Admin
Administrator
Administrator

Hola @Ankur04 , gracias por su rápida respuesta, agregaré más.

Hola @yaya1974 ,

Si he entendido bien, de enero a junio de 2024 se calculan como el promedio de noviembre de 2023 a abril de 2024.

vzhouwenmsft_0-1719295923403.png

Los datos de la tabla se muestran a continuación:(El tipo de datos de la columna 'Fecha' es Texto)

vzhouwenmsft_1-1719300421039.png

Use la siguiente expresión DAX para crear una columna.

Avarage = 
VAR _a = [Date]
VAR _table1 = 
ADDCOLUMNS('Table',
"MonthNumber",SWITCH(TRUE(),
LEFT([Date],3) = "Jan",1,
LEFT([Date],3) = "Feb",2,
LEFT([Date],3) = "Mar",3,
LEFT([Date],3) = "Apr",4,
LEFT([Date],3) = "May",5,
LEFT([Date],3) = "Jun",6,
LEFT([Date],3) = "Jul",7,
LEFT([Date],3) = "Aug",8,
LEFT([Date],3) = "Sep",9,
LEFT([Date],3) = "Oct",10,
LEFT([Date],3) = "Nov",11,
LEFT([Date],3) = "Dec",12
)
)
VAR _table2 = ADDCOLUMNS(_table1,
"Rank",RIGHT([Date],2) * 100 + [MonthNumber])
VAR _table3 = ADDCOLUMNS(_table2,
"Begin",IF( [MonthNumber] >=1 && [MonthNumber] <=6,
(RIGHT([Date],2) - 1) * 100 + 11,
RIGHT([Date],2) * 100 + 5),
"End",IF( [MonthNumber] >=1 && [MonthNumber] <=6,
RIGHT([Date],2) * 100 + 4,
RIGHT([Date],2) * 100 + 10)
)
VAR _table4 = ADDCOLUMNS(_table3,"Average",AVERAGEX(FILTER(_table3,[Rank] >= EARLIER([Begin]) && [Rank] <= EARLIER([End])),[Value]))
RETURN MAXX(FILTER(_table4,[Date] = _a),[Average])

vzhouwenmsft_3-1719300560821.png

Resultado final 0,425 = (0,4375 + 0,4375 + 0,4125 + 0,4125 +0,4125 + 0,4375 ) / 6

vzhouwenmsft_4-1719300589473.png

Saludos
Wenbin Zhou
Si esta publicación ayuda, considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

Hola Wenbin, ¡Gracias! ¡Casi lo consigues! La fórmula funciona, pero solo se trata de promediar los datos incorrectos para llegar a la respuesta. por ejemplo:

Del 24 de enero al 24 de junio = 0,4543

para llegar a esa respuesta, el promedio proviene del 23 de mayo al 23 de octubre

Entonces, los datos son de seis meses en el pasado (retrocediendo dos meses para empezar) ¿espero que tenga sentido?

¿Hay alguna manera de editar la fórmula para que eso pueda suceder?

He aquí un ejemplo.

Screenshot 2024-06-25 114002.png

Hola @yaya1974 ,

Los datos de la tabla se muestran a continuación:

vzhouwenmsft_0-1719397160981.png

Pruebe esto.

Avarage = 
VAR _a = [Date]
VAR _table1 = 
ADDCOLUMNS('Table',
"MonthNumber",SWITCH(TRUE(),
LEFT([Date],3) = "Jan",1,
LEFT([Date],3) = "Feb",2,
LEFT([Date],3) = "Mar",3,
LEFT([Date],3) = "Apr",4,
LEFT([Date],3) = "May",5,
LEFT([Date],3) = "Jun",6,
LEFT([Date],3) = "Jul",7,
LEFT([Date],3) = "Aug",8,
LEFT([Date],3) = "Sep",9,
LEFT([Date],3) = "Oct",10,
LEFT([Date],3) = "Nov",11,
LEFT([Date],3) = "Dec",12
)
)
VAR _table2 = ADDCOLUMNS(_table1,
"Rank",RIGHT([Date],2) * 100 + [MonthNumber])
VAR _table3 = ADDCOLUMNS(_table2,
"Begin",IF( [MonthNumber] >=1 && [MonthNumber] <=6,
(RIGHT([Date],2) - 1) * 100 + 5,
(RIGHT([Date],2) - 1) * 100 + 11),
"End",IF( [MonthNumber] >=1 && [MonthNumber] <=6,
(RIGHT([Date],2) - 1) * 100 + 10,
RIGHT([Date],2) * 100 + 4)
)
VAR _table4 = ADDCOLUMNS(_table3,"Average",AVERAGEX(FILTER(_table3,[Rank] >= EARLIER([Begin]) && [Rank] <= EARLIER([End])),[Input]))
RETURN MAXX(FILTER(_table4,[Date] = _a),[Average])

Resultado final

vzhouwenmsft_1-1719397198089.png

Otra pregunta. Usando la misma fórmula, ¿qué cambio para obtener el promedio de 3 meses?

¡Gracias!

Hola @yaya1974 ,

Pido disculpas por no haber visto tu mensaje hasta ahora, ¿estás tratando de calcular un promedio de tres meses de la forma en que lo marqué?

vzhouwenmsft_0-1721639293137.png

Pruebe esto

Column = 
VAR _a = [Date]
VAR _table1 = 
ADDCOLUMNS('Table',
"MonthNumber",SWITCH(TRUE(),
LEFT([Date],3) = "Jan",1,
LEFT([Date],3) = "Feb",2,
LEFT([Date],3) = "Mar",3,
LEFT([Date],3) = "Apr",4,
LEFT([Date],3) = "May",5,
LEFT([Date],3) = "Jun",6,
LEFT([Date],3) = "Jul",7,
LEFT([Date],3) = "Aug",8,
LEFT([Date],3) = "Sep",9,
LEFT([Date],3) = "Oct",10,
LEFT([Date],3) = "Nov",11,
LEFT([Date],3) = "Dec",12
)
)
VAR _table2 = ADDCOLUMNS(_table1,
"Rank",RIGHT([Date],2) * 100 + [MonthNumber])
VAR _table3 = ADDCOLUMNS(_table2,
"Begin",
SWITCH(TRUE(),
[MonthNumber] >= 1 && [MonthNumber] <= 3,(RIGHT([Date],2) - 1) * 100 + 5 ,
[MonthNumber] >= 4 && [MonthNumber] <= 6,(RIGHT([Date],2) - 1) * 100 + 8 ,
[MonthNumber] >= 7 && [MonthNumber] <= 9,(RIGHT([Date],2) - 1) * 100 + 11 ,
RIGHT([Date],2) * 100 + 2
)
,
"End",
SWITCH(TRUE(),
[MonthNumber] >= 1 && [MonthNumber] <= 3,(RIGHT([Date],2) - 1) * 100 + 7 ,
[MonthNumber] >= 4 && [MonthNumber] <= 6,(RIGHT([Date],2) - 1) * 100 + 10 ,
[MonthNumber] >= 7 && [MonthNumber] <= 9,RIGHT([Date],2) * 100 + 1 ,
RIGHT([Date],2) * 100 + 4
)
)
VAR _table4 = ADDCOLUMNS(_table3,"Average",AVERAGEX(FILTER(_table3,[Rank] >= EARLIER([Begin]) && [Rank] <= EARLIER([End])),[Value]))
RETURN MAXX(FILTER(_table4,[Date] = _a),[Average])

vzhouwenmsft_1-1721641239615.png

Si he entendido mal, proporcione datos simples y muestre los resultados esperados como una imagen.

Saludos
Wenbin Zhou

Sí, eso es lo que estoy buscando. Así que solo cambio los números para que coincidan con los meses que necesito calcular, ¿correcto? Like comienza en 3, termina en 5, comienza en 6, termina en 8, comienza en 9, termina en 11, comienza en 12, termina en 2.

¡Agradezco sinceramente su ayuda! Muchas gracias

Ahora necesito una nueva columna con un ajuste basado en la columna de salida con un umbral del 3%. ¿Es esto posible?

yaya1974_0-1719416318838.png

Probé algunas funciones de calcs pero no lo conseguí. No restará, solo obtendrá un número que existe en la columna de salida.

Seguiré intentándolo. Por favor, ayúdanos si puedes.

¡Gracias!

¡Gracias! ¡Agradezco toda su ayuda! Este es un proyecto muy importante en el que estoy trabajando, es posible que necesite más ayuda. ¿Si no te importa?

Syndicate_Admin
Administrator
Administrator

Hola

¿Puede proporcionar algunos datos de entrada y resultados esperados?

Gracias

Sí. Los datos de entrada son el primer conjunto de números. Si toma de noviembre a abril de 2023, a partir de enero obtiene el promedio que ve en el segundo conjunto de números y se mantiene igual hasta junio, luego, a partir de julio, obtiene el promedio de los próximos 6 meses de mayo a octubre y así sucesivamente. ¿Tiene esto sentido?

¡Gracias!

Helpful resources

Announcements
July 2024 Power BI Update

Power BI Monthly Update - July 2024

Check out the July 2024 Power BI update to learn about new features.

July Newsletter

Fabric Community Update - July 2024

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