jasontlambert
Preveo la demanda de los productos que fabrica y vende mi empresa. Nuestros productos tienen un tiempo de entrega de 4 meses en la fabricación. Actualizo los pronósticos todos los meses y el pronóstico sale entre 12 y 18 meses en el futuro. Llamamos instantánea a la actualización del pronóstico de cada mes. Necesito ayuda para desarrollar medidas para calcular la precisión del pronóstico al comparar nuestros envíos reales con las instantáneas. Debido a nuestro plazo de entrega de 4 meses, complica la forma en que medimos la precisión. Como ejemplo, en mi instantánea de pronóstico de enero, tengo un pronóstico de enero a diciembre por mes. Para la medida de precisión, necesito sumar el total del pronóstico de enero a abril de la instantánea de enero y colocarlo en el mes de pronóstico de enero. Luego necesito comparar este total con lo que fueron nuestros envíos reales de enero a abril. Para la instantánea de febrero, necesito resumir el pronóstico de febrero a mayo y luego comparar los envíos reales de febrero a mayo. He incluido una captura de pantalla de cómo se ven mis datos truncados y cómo necesito que se vea la salida. He codificado por colores la tabla de datos para que coincida con los campos de datos de salida.
Para la lógica de la medida, creo que debería ser «si la fecha de la instantánea es igual a la fecha del pronóstico, sume el pronóstico para las próximas 4 fechas de pronóstico futuras y aplique esta suma a la fecha de la instantánea». Pero, ¿cómo hacer esto en DAX? ¡Apreciaría cualquier ayuda!
v-jiascu-msft
Hola @jasontlambert,
¿Podría marcar la respuesta correcta como solución o compartir la solución si es conveniente para usted? Eso será de gran ayuda para los demás.
¡Atentamente!
Valle
jasontlambert
En respuesta a v-jiascu-msft
@v-jiascu-msft,
Gracias por tu ayuda con este Dale. Lo siento por no haber respondido antes. He estado de vacaciones del trabajo. Mi primer intento de usar su solución actualizada no funcionó en mi base de datos de pronóstico grande y completa. Sin embargo, conseguí que funcionara correctamente en los datos de muestra con los que hemos estado trabajando. No estoy seguro de cuáles deberían ser mis próximos pasos. Tenía la esperanza de modificar sus fórmulas para que las mías funcionaran y luego informar sobre lo que tenía que hacer, pero aún no he podido hacerlo.
jasontlambert
En respuesta a jasontlambert
Hola @v-jiascu-msft,
He tenido más tiempo para trabajar en esto. Espero que mis hallazgos puedan ayudarnos a encontrar una solución.
La fórmula de pronóstico de 4 meses funciona perfectamente.
La fórmula 4mth Ships funciona bien para cada instantánea, pero los subtotales aún no se suman correctamente cuando intento usar su fórmula en mi conjunto de datos más grande. Aquí está el DAX que estoy usando:
4mth Ships2 = IF (HASONEFILTER( 'Calendar'[Date].[Month] ), CALCULATE ( SUM ( 'Shipments Total'[Ships] ), DATESINPERIOD ( 'Calendar'[Date], FIRSTDATE ( 'Calendar'[Date] ), 4, MONTH ) ), SUMX ( SUMMARIZE ( 'Shipments Total', 'Calendar'[Date].[Month], "SumOfFourMonth", CALCULATE( SUM ( 'Shipments Total'[Ships] ), DATESINPERIOD ( 'Calendar'[Date], FIRSTDATE ( 'Calendar'[Date] ), 4, MONTH ) ) ), [SumOfFourMonth] ) )
En la captura de pantalla a continuación, puede verificar que la instantánea de diciembre arroja 114 para el 4mth Fcst y 138 para el 4mth Ships. Obtengo ese resultado en la tabla inferior izquierda. Ahora tengo instantáneas de diciembre de 2016 a octubre de 2017. La suma del subtotal de la medida del pronóstico de 4 meses es 2022 y es correcta. La suma del subtotal para 4mth Ships2 muestra 2234, pero si suma estos números manualmente, el total debería ser 2408. Así que este es mi primer número.
Mi segundo problema es que la medida 4mth Ships2 arroja los barcos de diciembre a septiembre y comienza el proceso de suma de 4mth. Necesito que el visual comience en diciembre con el 138 y se detenga en junio, porque junio contiene envíos de junio a septiembre. Todavía no tengo envíos de octubre, por lo que no quiero mostrar la instantánea de julio todavía.
Cuando trato de filtrar el visual para mostrar solo los meses que quiero, los subtotales siguen siendo un problema y parecen empeorar.
Por favor, hágamelo saber si necesito aclarar algo más. La razón por la que el subtotal es tan importante es que necesito calcular nuestro error total como un porcentaje, pero también necesito ver el error de instantánea de cada mes individualmente para ver si los errores mejoran con el tiempo. ¡Gracias de nuevo por tu ayuda con esto!
jasontlambert
En respuesta a jasontlambert
Todavía tengo problemas con esto. Mis subtotales no son correctos cuando uso DatesInPeriod. ¿Alguien puede ayudar?
v-jiascu-msft
Hola @jasontlambert,
¿Podría marcar la respuesta correcta como solución o compartir la solución si es conveniente para usted? Eso será de gran ayuda para los demás.
¡Atentamente!
Valle
v-jiascu-msft
Hola @jasontlambert,
1. La tabla de datos mezcla datos de pronóstico y datos reales. Eso es difícil para nosotros manejarlo. Así que divida el pronóstico y los datos reales.
2. Cree una tabla de fechas.
Calendar = CALENDAR ( DATE ( 2017, 1, 1 ), DATE ( 2017, 12, 31 ) )
3. Establecer relaciones.
4. Cree dos medidas.
ActualSum = CALCULATE ( SUM ( Actual[Value] ), DATESINPERIOD ( 'Calendar'[Date], FIRSTDATE ( 'Calendar'[Date] ), 4, MONTH ) )
ForcastSum = CALCULATE ( SUM ( Forcast[Forecast] ), FILTER ( Forcast, Forcast[ForcastMonth] >= Forcast[SnapshotMonth] && Forcast[ForcastMonth] < DATEADD ( 'Calendar'[Date], 4, MONTH ) ) )
5. Crea imágenes. Consulte este archivo para obtener más detalles: https://1drv.ms/u/s!ArTqPk2pu-BkgSEe4BkpR_5JYwGA
¡Atentamente!
Valle
jasontlambert
En respuesta a v-jiascu-msft
¡Gracias @v-jiascu-msft! ¡Esto es brillante! He podido replicar esto y está funcionando muy bien. Sabía que involucraría fechas entre o fechas en un período, simplemente aún no he comprendido completamente el DAX en esos. ¡Esto me ayuda mucho y podré aplicarlo en muchos otros lugares!
Estoy notando un problema menor, y también existe en su ejemplo. El subtotal de ActualSum en la tabla me da el mismo total que el primer mes. En el ejemplo, el valor real de enero es 433 y el subtotal en la tabla visual también es 433. ¿Sabe cómo solucionarlo?
v-jiascu-msft
En respuesta a jasontlambert
Hola @jasontlambert,
Prueba esta fórmula por favor.
ActualSum 2 = IF ( HASONEFILTER ( 'Calendar'[Date].[Month] ), CALCULATE ( SUM ( Actual[Value] ), DATESINPERIOD ( 'Calendar'[Date], FIRSTDATE ( 'Calendar'[Date] ), 4, MONTH ) ), SUM ( Actual[Value] ) )
¡Atentamente!
Valle
jasontlambert
En respuesta a v-jiascu-msft
Gracias @v-jiascu-msft, eso es una mejora, pero espero que el subtotal sea 1800. 433+403+413+etc… ¿Hay otra forma de lograr esto?
v-jiascu-msft
En respuesta a jasontlambert
Hola @jasontlambert,
Prueba esta fórmula por favor. Un consejo: presta atención al contexto.
ActualSum 3 = IF ( HASONEFILTER ( 'Calendar'[Date].[Month] ), CALCULATE ( SUM ( Actual[Value] ), DATESINPERIOD ( 'Calendar'[Date], FIRSTDATE ( 'Calendar'[Date] ), 4, MONTH ) ), SUMX ( SUMMARIZE ( Actual, 'Calendar'[Date].[Month], "SumOfFourMonth", CALCULATE ( SUM ( Actual[Value] ), DATESINPERIOD ( 'Calendar'[Date], FIRSTDATE ( 'Calendar'[Date] ), 4, MONTH ) ) ), [SumOfFourMonth] ) )
¡Atentamente!
Valle
Ashish_Mathur
Hola,
Comparta su previsión y datos reales (comparta el archivo .pbix). Además, comparta el resultado esperado (números reales) para los datos que comparte.