Hammarberg
Hola,
He estado tratando de entender cómo calcular la precisión de un pronóstico. Así es como suelo configurar una fórmula simple en Excel:
Primero calculo la varianza absoluta entre las ventas y el pronóstico. Hago esto para cada «Material» (producto) individual.
varianza absoluta = ABS (Ventas reales – pronóstico)
Luego resumen la varianza ABS total y el pronóstico total para obtener la Precisión del pronóstico:
Precisión del pronóstico = 1 – (Desviación total de ABS / Pronóstico total)
(en la parte superior puede encontrar una pequeña muestra)
Si alguien tiene una idea, se la agradecería mucho. Esto me está poniendo de los nervios 🙂
Brutus82
Como veo este problema, básicamente está creando un SUMIF () de Excel dentro de DAX. Mi ejemplo es ligeramente diferente, pero espero que ilustre el punto. La clave fue crear un valor dinámico de ‘fecha estática’ en el que se filtró cada fila sumada, así:
Sum_error = VAR staticdate = nepool[date] return abs (sumx (FILTRO (NEPOOL, NEPOOL[Date] = fecha estática), NEPOOL[STF_Error])) / countrows (FILTRO (NEPOOL, NEPOOL[Date] = fecha estática))
Nepool es el nombre de mi conjunto de datos. STF_Error es el error en el pronóstico. Lo dividí por el número de filas para que la agregación funcionara correctamente.
Jaime
Greg_Deckler
Prácticamente lo mismo. Creé datos con sus primeras 3 columnas. Entonces una medida como esta:
Asolute Variance = ABS(SUM(ForecastAccuracy[Sold])-SUM(ForecastAccuracy[Forecast]))
Luego creé otra medida como esta:
Forecast Accuracy = 1 - ( [Asolute Variance] / SUM([Forecast]) )
Pon las primeras 3 columnas y la primera medida en una tabla.
Pon la segunda medida en una visualización de tarjeta. Su precisión de pronóstico funcionará en su tabla también para la precisión de pronóstico de cada material.
Hammarberg
En respuesta a Greg_Deckler
¡Hola y gracias por la rápida respuesta!
Probé esto con la muestra y obtuve el sesgo de pronóstico (95%) en lugar de la precisión (90%). A nivel material sería correcto, pero no puede manejar el hecho de que algunos se hayan vendido por encima del pronóstico y otros por debajo.
En resumen, creo que la fórmula que proporcionó no evalúa cada fila, las resume y luego dice que las cambie a «Absoluto». De alguna manera, primero debe evaluar cada material y luego sumar todas las variaciones individuales.
Sean
En respuesta a Hammarberg
@Hammarberg
convertir la varianza de abs en una columna
ABS Variance COLUMN = ABS ( 'Table'[Forecast] - 'Table'[Sold] ) Bias = DIVIDE ( SUM('Table'[Sold]), SUM('Table'[Forecast]), 0 ) Accuracy = 1 - (SUM('Table'[ABS Variance COLUMN]) / SUM('Table'[Forecast] ) )
Hammarberg
En respuesta a Sean
Hola,
Anteriormente marqué esta publicación como resuelta. En relación con la muestra que le envié lo fue. Sin embargo, después de intentar usar esta solución en mis datos reales, noté que no podía juntar las piezas. Uno de mis problemas es que los datos reales se dividen en dos hojas separadas (que es como recupero la información). Vea las imágenes de ejemplo a continuación.
Las ventas reales se registran por día.
El pronóstico se registra por semana y «Escenario» (Escenario + Fecha = pronóstico para esa semana)
El pronóstico se registra el primer día de la semana.
Quiero poder calcular la precisión del pronóstico en diferentes períodos de tiempo (semana / mes / trimestre / año). Pero cuando pruebo la solución de Seans anterior, creo que obtengo la variación para cada día. ¿Puedo crear nuevas tablas con columnas calculadas para Semana / Mes, etc. y luego resumir las variaciones en esa tabla, o hay alguna otra forma de hacerlo?
Por favor, eche un vistazo al ejemplo y vea si tiene más suerte para controlar esto.
Pronóstico
Ventas
¡Gracias por la ayuda!
dedelman_clng
En respuesta a Hammarberg
Estos enlaces de SQLBI pueden ser de alguna ayuda:
http://www.daxpatterns.com/handling-different-granularities/
http://www.sqlbi.com/articles/budget-and-other-data-at-different-granularities-in-powerpivot/
También hay un buen ejemplo en las páginas 378-381 de La guía definitiva de DAX por Russo y Ferrari si puedes conseguir ese libro.
Hammarberg
En respuesta a dedelman_clng
Gracias por el consejo. Lo miré pero no veo nada que pueda ayudarme. La mayoría de las cosas se tratan de medidas, y por lo que tengo entendido, debería usar columnas para poder evaluar las filas individualmente.
¡Me alegra recibir más ideas o consejos!
dedelman_clng
En respuesta a Hammarberg
Una medida se puede evaluar fila por fila si su visualización se usa correctamente (matriz / tabla con los identificadores de fila como filas).
Hammarberg
En respuesta a dedelman_clng
Hola de nuevo,
¿Crees que podrías elaborar sobre la base de las dos imágenes de muestra? No estoy seguro de cómo llegar al siguiente paso, aunque he estado tratando de leer varias publicaciones y los enlaces que proporcionaste. Soy bastante nuevo en DAX, como probablemente comprenderá en este momento. 🙂
dedelman_clng
En respuesta a Hammarberg
Lo que quiero decir con una matriz / tabla que usa una medida como columna es como el siguiente:
TYTDRunningUpTime y RDT Hours son ambas medidas. Al poner Fecha y Sistema como filas, las medidas esencialmente se convierten en columnas en ese objeto visual. Entonces, una vez que siga las instrucciones a través de los patrones vinculados, puede usar sus nuevas medidas en cualquiera de sus imágenes.
Sean
En respuesta a dedelman_clng
@Hammarberg
Si desea MEASURE en lugar de COLUMN, use esto, la función SUMX es un iterador
ABS Variance MEASURE = SUMX('Table', ABS('Table'[Forecast] - 'Table'[Sold]) )
Accuracy MEASURE = 1 - ( [ABS Variance MEASURE] / SUM('Table'[Forecast] ) )
¡Esto funciona con el primer ejemplo que publicaste! (Puede filtrar la ‘Tabla’ en el SUMX si es necesario …)
Para conseguir que alguien le ayude más si esta Medida no le ayuda con sus datos reales
Publique datos de muestra que se pueden copiar y pegar en PBI, no en imágenes.
De lo contrario, le está pidiendo a las personas que dediquen tiempo a recrear sus datos para probarlos y muchos se saltearán su pregunta.
PH_Pascual
En respuesta a Sean
Hola
¿Qué pasa si sus datos no están en la misma tabla? puedes usar la función SUMX
Tengo una tabla con previsiones por mes por producto.
una tabla con ventas por mes por producto
una medida rápida para calcular por fila la brecha / delta
una medida para medir la precisión a nivel de fila.
Pero me encuentro con el mismo problema para agregar a nivel de región o país
sigo buscando. si lo encuentro lo compartiré con todos. Mientras tanto, si estáis listos, tenéis la solución, gracias.
Anónimo
En respuesta a PH_Pascual
Hola
¿Encontraste la solución?
Atentamente
Hammarberg
En respuesta a Sean
Hola Sean,
La solución que tenías para UNA tabla funciona perfectamente. Probé algunos enfoques diferentes, pero llegué a un callejón sin salida. Adjunto encontrará un archivo de muestra de Excel más grande y un pbix. Si estuviera listo para echar un vistazo, se lo agradecería mucho.
Ejemplo.xlsx
Sample.pbix
Avíseme si hay algún problema con los enlaces (no vi cómo cargar archivos directamente en el mensaje).
hymieho
En respuesta a Hammarberg
Cuando todos los valores están en una tabla, puede usar las medidas siguientes. No pude averiguar cómo hacerlo cuando cada pieza está en una tabla diferente. Probé SUMMARIZECOLUMNS pero no pude hacerlo funcionar … mi intento está en la parte inferior, tal vez alguien más pueda aconsejarme.
Medidas para la misma tabla
Nota: no había una columna de «artículo» o «fecha», y la combinación de «Datos en el mismo modelo 2» me confunde. Si tuviera que agregar la fecha y el artículo, probablemente querría resumir primero por esas columnas.
Precisión Nuevo =
VAR ABSErr =
SUMX (
‘Datos en la misma tabla 1’,
CALCULAR (
ABDOMINALES (
SUM (‘Datos en la misma tabla 1′[Forecast]) – SUM (‘Datos en la misma tabla 1′[Sold])
)
)
)
VAR Volume = SUM (‘Datos en la misma tabla 1′[Sold])
Precisión VAR = 1- (DIVIDE (AbsErr, Volume))
REGRESO
SI (Volumen = 0,0,
SI (Precisión <= 0,0,
Exactitud)
)
Sesgo Nuevo =
VAR Volume = SUM (‘Datos en la misma tabla 1′[Sold])
VAR Forecastvar = SUM (‘Datos en la misma tabla 1′[Forecast])
REGRESO
IF (Volume = 0, IF (Forecastvar = 0,0,1), (SUMX (‘Datos en la misma tabla 1’, ‘Datos en la misma tabla 1′[Forecast] – ‘Datos en la misma tabla 1′[Sold]) / Volumen))
Mida los valores en diferentes tablas No funciona
Precisión del pronóstico =
VAR ABSErr =
SUMX (
RESUMEN COLUMNAS (
‘Fechas'[Date],
‘Artículos'[Article]),
ABDOMINALES (
SUM (Previsión[Forecast]) – SUM (Ventas[Sold])
)
)
VAR Volumen = SUM (Ventas[Sold])
Precisión VAR = 1- (DIVIDE (AbsErr, Volume))
REGRESO
SI (Volumen = 0,0,
SI (Precisión <= 0,0,
Exactitud)
)