Global parameters/variables workaround?

What’s a good workaround for having a global parameter, that is to say a value that stays the same for all records but might be used in multiple formulas in various Fibery spaces?

Some example of “global parameters”:

  • I sell dog toys, to calculate profit margins on various SKUs we have a lot of costs that are specific to each SKU but also costs that are the same for every product such as: default shipping materials cost, default prep labor cost, etc.
  • I manage an orchard, we have a lot of formulas that calculate when to do certain orchard management activities based on a few specific dates (last frost date, first bloom, etc.) these values are updated once a year
  • I want to create a really fancy birthday event planner Space where a lot of the formulas are based on the parameter myBirthdayDate. I want to share this space with another person but instead of telling them to update all the formulas with their birthday I want them to just change it in one place.

Related:

Can you just create a new “Database” to hold these values, and then access them programmatically via lookups? It could be (eg) a key-value store: first column is name of variable; 2nd column is value.

Yeah this is what I first went for but I couldn’t figure out how to pull the values into formulas without using scripts.

For example if I have the structure:

  • My Space >
    • Parameters Db
    • Main Db

Where Parameters Db looks like:

Name My Birthday Date
3/1/1995

And I’m trying to do something like this in Main Db:

Name Days Until My Birthday
Entity name (formula_here)

Unfortunately, formulas are limited to only using fields in the database where the formula lives (or fields belonging to linked databases) so any solution will be klunky, requiring relationships to one or more of the ‘Global store’ database(s)
Probably ends up being at least as much hassle as ‘hard-coding’ the parameters…

There might be something you could achieve using automations, since automation formulas can utilise ‘database queries’.
So you could have a database called Global, with fields for every datatype (Date, Number, etc.) and then you can query that db:

Globals.Filter(Name=“My birthday”).Sort().First().Date

Globals.Filter(Name=“Shipping cost”).Sort().First().Number

Of course, using automations to populate field values has disadvantages:
it needs to be triggered by something, and the result can be manually overwritten.
But perhaps you can think of ways of living with those drawbacks…

Hmmm this is surprising considering how well interconnected everything else in Fibery is.

Yeah, I agree. But from a technical perspective, there are some serious challenges from a permissions perspective with allowing formulas to refer to field data from unrelated databases :grimacing: