incraease range and modify pull-forward logic to operate off an explicit overlap period
This commit is contained in:
		
							parent
							
								
									be9ca7b848
								
							
						
					
					
						commit
						b831dfc35e
					
				| @ -17,10 +17,12 @@ WITH | ||||
| ---these dates will have to be syncronized with the forecast build----------- | ||||
| tdr AS ( | ||||
|     SELECT | ||||
|         -----------actuals into baseline------------------------------------- | ||||
|          DATERANGE('2020-06-01','2021-07-12','[]') arange | ||||
|         -----------plan into baseline---------------------------------------- | ||||
|         ,DATERANGE('2021-06-01','2022-06-01','[)') prange | ||||
|         -----------intented forecast range----------------------------------- | ||||
|         DATERANGE('2021-06-01','2022-06-01','[)') prange | ||||
|         -----------explicitly call out overlap period------------------------ | ||||
|         -----------anythign in this period has to net out to match actuals--- | ||||
|         ,DATERANGE('2021-06-01','2021-07-12','[]') overlap | ||||
|         ,jsonb_build_array('plan','diff') iter | ||||
| ) | ||||
| ,booked AS materialized( | ||||
|     SELECT | ||||
| @ -32,8 +34,7 @@ tdr AS ( | ||||
|         rlarp.osm_pool | ||||
|     WHERE | ||||
|         --find actual orders in the overlap range (where orders fall in both target ranges) | ||||
|         order_date <@ (SELECT arange FROM tdr) | ||||
|         AND order_date <@ (SELECT prange FROM tdr) | ||||
|         order_date <@ (SELECT overlap FROM tdr) | ||||
|         --anything that falls in this range is supposed to already match actuals, so no need to filter for actuals | ||||
|     GROUP BY | ||||
|         billto_group | ||||
| @ -61,7 +62,7 @@ tdr AS ( | ||||
|         --budget orders have already been trued up to match actual, so should not be included in the this isolation | ||||
|         --find actual orders in the overlap range (where orders fall in both target ranges) | ||||
|         p.order_date <@ (SELECT prange FROM tdr) | ||||
|         AND p.iter IN ('plan','diff') | ||||
|         AND (SELECT iter FROM tdr) ? p.iter  | ||||
|     GROUP BY | ||||
|          p.billto_group | ||||
|         ,p.shipto_group | ||||
| @ -78,7 +79,7 @@ tdr AS ( | ||||
|         ,p.order_date | ||||
|         ,p.ship_date | ||||
|         ,round(p.plan_units,2) plan_units | ||||
|         ,round(SUM(p.plan_units) FILTER (WHERE order_date >= (SELECT upper(arange) FROM tdr)) OVER (PARTITION BY p.billto_group, p.shipto_group, p.part_group ORDER BY p.order_date, p.ship_date),2) plan_rolling | ||||
|         ,round(SUM(p.plan_units) FILTER (WHERE order_date >= (SELECT upper(overlap) FROM tdr)) OVER (PARTITION BY p.billto_group, p.shipto_group, p.part_group ORDER BY p.order_date, p.ship_date),2) plan_rolling | ||||
|         ,round(SUM(p.plan_units) OVER (PARTITION BY p.billto_group, p.shipto_group, p.part_group ),2) plan_units_tot | ||||
|         --,round(SUM(COALESCE(p.plan_units,0) + COALESCE(p.diff_units,0)) OVER (PARTITION BY p.billto_group, p.shipto_group, p.part_group ORDER BY p.order_date, p.ship_date),2) net_units_agg | ||||
|         ,round(COALESCE(p.diff_units,0) + coalesce(p.plan_units,0),2) net_units | ||||
| @ -114,8 +115,8 @@ tdr AS ( | ||||
|            rlarp.osm_log(doc) | ||||
|     SELECT  | ||||
|         $${ | ||||
|             "message":"force accounts to match target total value and margin", | ||||
|             "tag":"retail plug", | ||||
|             "message":"remove future orders to the extent the new forecast totals more than the original budget", | ||||
|             "tag":"1+11", | ||||
|             "type":"build"  | ||||
|         }$$::jsonb doc  | ||||
|     RETURNING * | ||||
| @ -169,10 +170,10 @@ tdr AS ( | ||||
|         ,o.ship_season | ||||
|         ,'1+11' AS version | ||||
|         ,'pf' iter | ||||
|         --,log.id | ||||
|         --,coalescE(log.doc->>'tag','') AS "tag" | ||||
|         --,log.doc->>'message' AS "comment" | ||||
|         --,log.doc->>'type' module | ||||
|         ,log.id | ||||
|         ,coalescE(log.doc->>'tag','') AS "tag" | ||||
|         ,log.doc->>'message' AS "comment" | ||||
|         ,log.doc->>'type' module | ||||
|     FROM | ||||
|         rlarp.osm_pool o | ||||
|         INNER JOIN eval e ON | ||||
| @ -181,7 +182,7 @@ tdr AS ( | ||||
|             e.part_group   = o.part_group   AND  | ||||
|             e.order_date   = o.order_date   AND  | ||||
|             e.ship_date    = o.ship_date     | ||||
|         --CROSS JOIN log | ||||
|         CROSS JOIN log | ||||
|     WHERE | ||||
|         e.flag | ||||
|     GROUP BY | ||||
| @ -225,10 +226,10 @@ tdr AS ( | ||||
|         ,o.ship_date      | ||||
|         ,o.ship_month | ||||
|         ,o.ship_season | ||||
|         --,log.id | ||||
|         --,coalescE(log.doc->>'tag','') AS "tag" | ||||
|         --,log.doc->>'message' AS "comment" | ||||
|         --,log.doc->>'type' module | ||||
|         ,log.id | ||||
|         ,coalescE(log.doc->>'tag','') | ||||
|         ,log.doc->>'message' | ||||
|         ,log.doc->>'type' | ||||
|     -----some bad forecast swings, if one is removed it's wacky | ||||
|     -----cap at -1,000,000 | ||||
|     HAVING | ||||
|  | ||||
| @ -16,13 +16,13 @@ DROP TABLE IF EXISTS tdr; | ||||
| CREATE TEMP TABLE tdr AS ( | ||||
|     SELECT | ||||
|         -----------actuals into baseline------------------------------------- | ||||
|          DATERANGE('2020-06-01','2021-07-12','[]') arange | ||||
|          DATERANGE('2020-06-01','2021-07-15','[]') arange | ||||
|         -----------plan into baseline---------------------------------------- | ||||
|         ,DATERANGE('2021-06-01','2022-06-01','[)') prange | ||||
|         ,DATERANGE('2020-06-01','2022-06-01','[)') prange | ||||
|         -----------forecast into baseline------------------------------------ | ||||
|         ,DATERANGE('2022-06-01','2022-06-01','[)') frange   -- this range effectively excludes | ||||
|         -----------baseline selection for increment-------------------------- | ||||
|         ,DATERANGE('2021-07-08','2021-07-08','[)') selection | ||||
|         ,DATERANGE('2021-07-15','2021-07-15','[)') selection | ||||
|         -----------selection increment size---------------------------------- | ||||
|         ,'0 year'::interval AS incr | ||||
|         -----------iterations to merge with---------------------------------- | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user