sales forecasting
Go to file
2022-04-12 22:52:42 -04:00
routes do rounding 2022-04-12 02:30:26 -04:00
setup_sql use proper data type for app columns, include master table for app columns 2022-04-12 22:52:42 -04:00
.env-sample notes on script and add sample env 2020-11-26 01:30:40 -05:00
.gitignore move curl output to temp tagged file and exclude them from the project 2020-12-08 00:26:29 -05:00
certs.sh include script for self-signed cert 2020-11-27 11:32:08 -05:00
index.js include forecast name 2022-04-09 02:26:38 -04:00
LICENSE MIT license 2020-11-09 13:16:09 -05:00
package-lock.json ? 2022-04-05 23:08:06 -04:00
package.json update packages.json, was using old modules and no longer connecting to db. and move parameter extracion sql 2020-11-27 01:35:00 -05:00
readme.md update readme to create more of a checklist 2022-04-03 00:48:29 -04:00

  • setup postgres db with a username and password and database
  • add this to .bashrc to quickly invoke command line connection export PGD="psql -U ptrowbridge -d ubm -p 5433 -h 192.168.1.110" setup

  • setup the application tables $PGD -f setup_sql/schema.sql
  • create a table of data to forecast
  • edit target_info.sql to reflect the name of the table from previous step
  • $PGD -f setup_sql/target_info.sql to populate the meta table
  • fill out the target_meta table in the database to model the forecast table
  • PGD -f setup_sql/build_maste_tables.sql to create master data tables from forecast data
  • ./routes/baseline/generate_route_sql.sh to create the baseline sql used by the /baseline route

routes

  • all routes would be tied to an underlying sql that builds the incremental rows
  • that piece of sql will have to be build based on the particular sales layout
    • columns: a function to build the columns for each route
    • where a function to build the where clause will be required for each route
    • the result of above will get piped into a master function that build the final sql
    • the master function will need to be called to build the sql statements into files of the project

route baseline

  • forecast = baseline (copied verbatim from actuals and increment the dates) + diffs. if orders are canceled this will show up as differ to baseline
  • regular updates to baseline may be required to keep up with canceled/altered orders
  • copy some period of actual sales and increment all the dates to serve as a baseline forecast
  • join to period tables to populate season; requires variance number oof table joins, based on howmany date functions there are 🙄
  • some of the app parameters can be consolidated, the baseline period could be one large range potentially, instead of 2 stacked periods
  • setup something to fill in sql parameters to do testing on the function
  • update node to handle forecast name parameter
  • calc status is hard-coded right now in the json request -> probably needs to be manuall supplied up front

scale

  • need to add version columns to all CTE's
  • need to build log insert
  • Need to build where clause for scenario

running problem list

  • baseline route
    • problem: how will the incremented order season get updated, adding an interval won't work
      • a table fc.odate, has been built, but it is incomplete, a setup function filling in these date-keyed tables could be setup
      • if a table is date-keyed, fc.perd could be targeted to fill in the gaps by mapping the associated column names
    • problem: the target sales data has to map have concepts like order_date, and the application needs to know which col is order date
      • add column called application hook
    • there is not currently any initial grouping to limit excess data from all the document# scenarios
  • general
    • clean up SQL generation to prevent injection
    • how to handle a target value adjustment, which currency is it in?
    • the sales data has to have a column for module and change ID, live sales data isn't going to work well
      • need to target the live sales data, build build a whole new table to use it plus add version columns