Limits are used in Flow to help you identify the bounds within which your process is running. Some examples of where Limits may be used are to determine whether:
- A minimum production target is achieved
- Data entered / retrieved is valid or not
- A utilities usage is higher than budgeted
The limits against which Flow compares your measure values may be static (i.e. a constant value) or dynamic (as in the case where the limit value itself is from another measure).
Limits are also linked to a date and time. This allows you to adjust your limits as time progresses.
For example, as your optimization efforts start to pay off, you increase your minimum production target. At the same time though, you want to keep track of how your target changes through the month, and you also want it such that, if you needed to update a production value from the past, Flow must evaluate that value against the target at that point in time.
More than one Limit type may be configured on a measure as well. It may be that you have one set of production targets required by your headquarters, but a different, perhaps more stringent, set of production targets locally set by your site. In this case, you can compare your production values against both sets of targets by creating a "Site" Limit and a "Headquarters" Limit. By acting as soon as your Site Limit is breached, you mitigate the risk of breaching the Headquarters Limit.
Limits are evaluated by the Data Engine as it processes each measure. For the given interval type of a measure, the engine will first retrieve the value for that measure for that interval (based on the Retrieval Type of the measure) and then check to see if there are any limit values (High or Low limit values) configured for that measure for that interval type.
If the engine finds a High or a Low value, it will check to see whether the measure's value is "higher than the High limit value" or "lower than the Low limit value". If either of these conditions are true (or both), the Flow engine flags this Measure Value in the database as an "exception".
Once there is an exception (called a Measure Value Exception) against a specific Measure Value, you could use this to perform one or more of the following:
- Add the limit to a chart and indicate (by a different font / background / drawing color) that there is an exception. Remember, an exception may be a good or a bad thing!
- Use the limit exception to trigger a message for the relevant people to be informed about the situation. Remember that the message will be send at the end of the Interval Type of the measure, only once the Measure Value has been compared to the limit value.
- Do nothing - perhaps you intend to only use this information in future.
To add a limit (or multiple limits) to a measure, you first need to have created your Limit in the Toolbox.
Then, open the measure's Editor, and expand the "Limits" section. Notice that each context (calendar or event) that you've added to the measure is available to allocate a Limit against.
Right-click on the context that you want to configure the limit for, and select Add Limit > [Limit Name]
An alternate way to configure a Limit is to drag the limit that you want to configure from the Toolbox and drop it onto the context that you want to configure this limit for.
Click on the Limit that you've just added to see the "Comparator" tab.
The Comparator options are >, <, or =
Right-Click on the "Site" Limit and click "Add Instance"
An Instance is the date and time from which this particular set of configured limit values must be evaluated by the Data Engine. If there are multiple instances (each identified by a unique date & time), then each set of limit values is valid from one Instance time until the next Instance time. The last Instance date & time (or perhaps there is only one) is the active Limit instance.
This mechanism provides the ability to change Limits over time, but not lose the ability to backfill a measure to a time when a different Limit was used. The instance of the Limit in the Measure is where you will define your Target, High and Low values for this specific Measure. Flow will evaluate each value retrieved or calculated for the Measure against the High and Low values. If the High and/or Low values are exceeded, an “exception” will be generated.
Fill in your required Target, High and Low values.
Notice the prompt "Changes have been made to the limit configuration, remember to backfill this limit instance". It may be that you are retrospectively creating a limit, and you want the Data Engine to evaluate your Measure Values from the Limit Instance date & time - in this case you need to right-click on the Limit Instance, and select Backfill.
This will only re-evaluate the existing Measure Values stored for this Measure against the High and Low values that you have just configured. The Data Engine will not perform a full Backfill, i.e. it will not retrieve (or re-aggregated, or re-calculate) the measure from the Backfill Date.
If you do not backfill the Limit Instance, the first time that the Data Engine will evaluate this limit instance will be at the end of the next interval (according to the measure's interval type).
You may even choose to, instead of configuring a constant value for the High, Low, and Target values, drag in other measure/s ("source" measures) - the Data Engine will then compare the Measure Value of the measure that you have just configured the limit for against the measure value in the "source" measure in the corresponding interval.
Linking Another Measure to a Limit Value
When configuring limit values for a Measure, Flow allows you to “link” another Measure’s values to the High, Low and Target properties. For example, you could drag a Measure from the Model onto the High property:
“Linked” limits are useful in the following scenarios:
- Frequently changing limits – rather than changing a Measure’s limit configuration frequently, rather create a manual Measure to “store” the limit value. Link the manual Measure to the limit, and then create a Form where users can update the manual Measure as and when required.
- Cumulative Targets – when tracking progress during a time period (e.g. every hour during the production day), create a cumulative target Measure to use as a linked limit against a cumulative production Measure. In this example, the straight line is the cumulative target during the day. At 11:00, there was excessive use of water, thus sending the cumulative water usage over the limit, but the team ended the day within their daily usage target.