- Create a calculated field
- Who can use the field
- Choose what the field should do
- Dashboard constants
- Use the field in your dashboard
- Build one field on top of another
- Things to watch out for
- Arithmetic with a per-object denominator
- Ratio filter targeting
- Debugging and validating values
Create a calculated field
Open a dashboard in edit mode. In the left sidebar, open Calculated Fields (calculator icon).Start a new field
Set resource scope
Choose what it should do
Use it on this dashboard
Who can use the field
When you create a calculated field, Resource scope sets where the field is defined — not which dashboard you happened to open first. New fields default to Dashboard.
Resource scope in the Create calculated field dialog — Workspace, Project, or Dashboard
- Remove from this dashboard — stop using a project- or workspace-scoped field here; it stays in the library.
- Delete from library — remove a project- or workspace-scoped field so other dashboards cannot use it either.
- Delete field — remove a dashboard-scoped field.
Choose what the field should do
You do not need to know formulas or spreadsheet functions. Pick the option that matches what you want the dashboard to show.Arithmetic
Add, subtract, multiply, or divide values from the model — for example combine two areas, or check whether one number is larger than another. You write a short formula with letters such asa and b, then tell Speckle which
model property each letter means. If a value is missing, the result is blank.
To get one ratio for the whole dataset:
- Bind the denominator to a Dashboard constant aggregate — constants are not stamped per object, so the ratio stays correct under any aggregation.
- Use the literal value directly:
(90000 / 277795) * 100— every element gets the same constant result, and Average aggregation returns the correct figure. - Change the widget aggregation to Average when every element genuinely shares the same ratio.
Aggregate
Get one figure for the whole data set — for example a total area or an average height — not a different number on every element. Choose a Population:Unit conversion
Show a number in a different unit — for example feet to metres, or square feet to square metres. Pick the property, then choose a ready-made length or area conversion, or enter your own multiplier. The unit label is for display only. Use a Unit conversion field when other widgets, filters, or calculated fields should consume the converted value. If you only need a different area unit or decimal places on a Total or Ratio chart, use widget Settings → Display unit and Rounding instead — see Aggregation and numeric display.Grouping
Inside Grouping, choose Range groups or Value groups. Use Range groups when you have a number and want labels such as “under 10”, “10 to 50”, and “over 50”. Use Value groups when you have text (for example type names) and want to roll several values into one label, such as “external walls”. Anything outside your groups gets the fallback label you set.Null fallback
Use this when a property is sometimes blank and you still want a usable value in charts and filters — for example show “Not set” when fire rating is missing. Keep the property when it has a value. When it is empty or missing, show the replacement you choose.Map lookup
Turn a code or short name on the model into a clearer label using a lookup table. Pick the model property, the table, the column to match, and the column to show. Unmatched values use your fallback. You can import a CSV or Excel file from this dialog (Import new table if tables already exist), or manage tables from Lookup tables in the sidebar.Logical
Label each element with your own words — for example “Compliant” / “Needs review” — based on rules you set (the same kind of conditions you use in filters). The element gets the pass label only when every condition is met. Otherwise it gets the fail label. For full rulesets and detailed results, use Validation widgets instead.Coalesce
Use this when the same idea might live in different properties on different elements — for example one model stores area under one name, another under a different name. List the properties in order. Speckle uses the first one that has a value.Dashboard constants
A Dashboard constant is a special kind of Aggregate: one total for the whole dashboard, not a value written onto every object. In the editor, set Population to Dashboard constant. The field shows a constant badge in the Calculated Fields list. Use it for totals that must stay put while people filter charts, or for X-per-Y figures that mix two models (for example IT load per m² of IT room). Create one constant per side, then divide them in Ratio Value, or in Arithmetic that only uses other constants. Walkthrough: Show an X-per-Y number from two models. Constants are worked out when your models have loaded and the field is on this dashboard — not each time someone filters. Creating or editing a constant recalculates it automatically.Use the field in your dashboard
Once the field is on this dashboard, treat it like any other property:- Pick it when you set up a chart or table (what to total, what to group by, and so on)
- Use it in filters
- Use it to colour the model
Build one field on top of another
You can create a second calculated field that uses the first one — for example convert units first, then put the result into ranges. If two fields depend on each other in a loop, Speckle will not let you save that setup.Things to watch out for
Calculated fields are still being exercised against every widget type. A field can look fine in a table and look wrong in another widget. When something seems off, check the combination below before trusting the number.Ratios and totals can “count twice”
Some widgets (including Ratio Value and Ratio Value by Property) work by adding up a number once per element, then dividing. An All data or Current view Aggregate already is a total — and that same total is written onto every element. If a ratio widget adds it up per element, the result can be far too large (roughly the real total multiplied by how many elements you have). Safer patterns today:- For “share of the whole” inside one model, use Aggregate (All data or Current view) + Arithmetic as in Show each element’s share of the whole — not that Aggregate field inside a Ratio widget.
- For a simple ratio of two per-element model properties, use the Ratio widgets with the original model properties (or a Unit conversion / per-element Arithmetic field).
- For a ratio of two dashboard-level totals (including across models), use Dashboard constant aggregates in the Ratio widget — constants are not stamped per object, so they do not get multiplied by element count. See Dashboard constants.
Arithmetic with a per-object denominator
A formula like(fixedNumber / Area) * 100 looks like a percentage, and Arithmetic
will happily evaluate it per element. Each floor element produces something like
(90000 / 500) * 100 = 18,000 — one result per element, not one ratio for the set.
When you drop that field into a metric widget set to Sum, the widget adds up every
element’s individual ratio. With 27 floor elements the sum is roughly
18,000 × 27 = 486,000 — not 32%.
Use instead:
- A Dashboard constant aggregate for the denominator, then reference it in Arithmetic — constants produce one number for the dashboard and are not stamped per object.
- The literal value if the denominator is known and fixed:
(90000 / 277795) * 100evaluates to the same constant on every element, so Average gives the correct answer. - Average aggregation (not Sum) when the ratio is truly the same on every element.
? on the widget)
and check whether the field stage is tagged Current view rather than Constant.
A Current view tag on what you expected to be a fixed denominator means the value
is stamped per object and will accumulate with Sum.
Ratio filter targeting
Ratio Value and Ratio Value by Property let you choose which side of the fraction filters affect. In the widget sidebar, Apply filter to (widget filters) and Apply global filter to (page-level filters) each have four states:Charts that group by an Aggregate field
Because every element shares the same All data or Current view Aggregate value, a chart grouped by that field usually shows one bar or category. That is expected. Group by a normal property (or a Grouping / Map lookup field) instead. Dashboard constants are not object properties, so they are not used as group-by fields in the same way.Cross-model totals need dashboard constants
On a dashboard with more than one model (more than one Model Viewer / data source), All data and Current view aggregates are calculated inside each model separately. You cannot take a stamped total from model A and use it as a per-object input on model B. To combine totals across models — for example rack IT load from one model and IT room area from another — create Dashboard constant fields for each side and divide them in Ratio Value or in Arithmetic that only references those constants. See Dashboard constants.Renames break existing widgets
Charts, filters, and colour-by remember the field name. Rename the field, and those widgets need to be pointed at the new name again.Not for writing back to the model
Calculated fields are analysis-only. They do not appear as editable parameters in Parameter Updater.Check the numbers
Until the Beta settles, spot-check important dashboards: compare a calculated total to Total property value on the same property, or to a known figure from the model. If a ratio or total looks impossibly large or tiny, look for an Aggregate field used where a per-element value was expected. For a guided walkthrough of the built-in checks, see Debugging and validating values.Debugging and validating values
When a calculated number looks wrong, work from the quickest check to the most detailed. Only some widgets expose a full explanation today.Live preview in the calculated field editor
While you create or edit a field (left sidebar → Calculated Fields → open the field), most expression types show a live preview against loaded model data:- Input values and the resulting value for one sample object
- A dice control to pick another random sample when more than one object qualifies
- A short reason when preview cannot run (for example missing property mapping, no loaded data, or a dashboard constant that has not been computed yet)
Explain this value
On Ratio Value and Total property value, in edit mode, open the ? (Explain this value) action on the widget card. The dialog shows how the live number was produced from the widget’s current filters and dashboard slices — not an unfiltered dashboard-wide sample.
Explain this value on a Ratio Value widget — Part and Total as coloured branches, each with property source and Constant aggregate, then the combined ratio.
- A banner when dashboard slices are active (titles and selected values)
- A stage flow for sources, calculated fields, aggregates, filters/slices, and the final combine step
- Tags for value sources (Fixed, Current view, Constant) and for how filters apply on each side
- Narrowing counts once where filters actually reduce the element set
(
total → matched) - Status notes when something is empty, null-only, divide-by-zero, missing a field reference, or using an inferred scope (self-division that silently drops elements without a declared filter)
- An insight note when active slices affect only one side of a ratio
- Optional plain text summary (list icon) you can copy
Filters, slices, and scenarios
Wrong numbers are often filter state, not bad maths:- On ratio widgets, check Apply filter to and Apply global filter to (see Ratio filter targeting).
- On Total property value, Apply global filters turns page-level slices on or off for that widget.
- Active slices appear in the filter bar. Scenarios restore named filter and colour-by snapshots; they do not change calculated-field definitions, but they do change which elements feed widgets that respect those filters.
FAQ
Something looks wrong — how do I debug it?
Something looks wrong — how do I debug it?
Will this change my model in Speckle or in my design tool?
Will this change my model in Speckle or in my design tool?
I created a field but I cannot find it in my chart
I created a field but I cannot find it in my chart
My chart broke after I renamed a field
My chart broke after I renamed a field
Can I push these values back into Revit or Rhino?
Can I push these values back into Revit or Rhino?
My Ratio widget number looks impossibly large
My Ratio widget number looks impossibly large
My arithmetic percentage looks far too large
My arithmetic percentage looks far too large
(90000 / Area) * 100 with aggregation Sum adds up one
ratio per element — with 27 elements each returning ~18,000, the total is ~486,000.Try one of these:- Switch aggregation to Average if every element should carry the same ratio.
- Replace the property binding with a Dashboard constant aggregate so the denominator is one shared number, not a per-element value.
- Use the literal denominator directly if it is a known fixed number:
(90000 / 277795) * 100gives a constant result that aggregates correctly.
? on the widget) and look at the field stage tag:
Current view means the value is re-stamped per object; Constant means it is a
single dashboard-level number. See
Arithmetic with a per-object denominator.Can I use one model's total with another model's total?
Can I use one model's total with another model's total?
Why does my dashboard constant ignore filters?
Why does my dashboard constant ignore filters?
Isn't Logical the same as Property Checker?
Isn't Logical the same as Property Checker?
See also
- Filters — Focus the dashboard on part of the model
- Lookup tables — Import lists for Map lookup and validation
- Common workflows — Share of the whole with Aggregate and Arithmetic
- Common workflows — An X-per-Y number from two models
- Common workflows — Codes to clear labels with lookup tables and Map lookup
- Intelligence Dashboards — Overview and widgets