Starting December 3, join live sessions with database experts and the Microsoft product team to learn just how easy it is to get started
Learn moreGet certified in Microsoft Fabric—for free! For a limited time, get a free DP-600 exam voucher to use by the end of 2024. Register now
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)
Prefiero no usar una medida, sino una fórmula real en una nueva columna. ¿Alguien puede ayudar, por favor?
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.
Los datos de la tabla se muestran a continuación:(El tipo de datos de la columna 'Fecha' es Texto)
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])
Resultado final 0,425 = (0,4375 + 0,4375 + 0,4125 + 0,4125 +0,4125 + 0,4375 ) / 6
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.
Hola @yaya1974 ,
Los datos de la tabla se muestran a continuación:
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
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é?
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])
Si he entendido mal, proporcione datos simples y muestre los resultados esperados como una imagen.
Saludos
Wenbin Zhou
Perdón por seguir molestando. La fórmula funciona, simplemente no puede hacer que los resultados de los 4 trimestres coincidan. ¿Todavía puedes ayudarme? Aquí está la foto que pediste.
¡Agradezco tu ayuda!
Ah, y esto es lo que cambié para obtener resultados, funciona pero le falta una cuarta parte.............. hmmmm
Sus Q2 y Q1 faltantes son incorrectos. Sé que probablemente sea un cambio simple y seguiré tratando de hacerlo bien. ¡Cualquier ayuda es genial! ¡Gracias!
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?
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?
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!
Starting December 3, join live sessions with database experts and the Fabric product team to learn just how easy it is to get started.
March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount! Early Bird pricing ends December 9th.