Root Cause Analysis
Identify root causes of anomalies or outcomes.
Asks a digital twin why a number moved: which causes account for the change, and by how much.
Root-cause analysis reasons over the same graph the forecasts come from, so the variables it flags are causes rather than correlates. What lands on results is per-sample, though: each analysed sample with its score and the variables flagged for it, not a ranked table of causes.
At a glance
Module type
RCASim
Category
Intelligence
Default tier
durable
Runs on
reactive, durable
Starts a flow
no
Holds a body
no
Keeps state between runs
no
Available in
every application type
Parameters
digitalTwinId
string · required · defaults to ""
The twin to run against.
digitalTwinName
string · optional
Its name when it was chosen, for the node's label.
digitalTwinVersionIds
string[] · optional
Pin the run to specific twin versions; empty means the latest.
scenario
Record<string, unknown> · optional
The saved scenario. Anything arriving on the scenario port is merged over this.
scenarioDraft
Record<string, unknown> · optional
What the inspector is editing, before it is applied to scenario.
scenarioValidationErrors
string[] · optional
What was wrong with the draft the last time it was checked.
entityColumns
object · optional · defaults to {"id":null,"target":null,"constraints":null,"levers":null}
Which columns of the entities frame carry what: id the environment id, and target, constraints and levers the optional per-row overrides. Any may be null.
Inputs
on
event
no
Implicit on every module that does not itself start a flow: wire an event here to make this module the start of what that event runs.
scenario
json
no
Which metric moved, over which period, per run.
entities
dataframe
no
One row per environment to analyse; entityColumns maps its columns.
baseline
dataframe
yes
The rows the change is measured in. Required: there is nothing to explain without them.
Outputs
results
dataframe
dataframe, signal
One row per analysed sample, not per cause: entity, is_anomalous, score, and flagged_variables as a comma-joined string. No per-cause contribution figure.
summary
json
json, scalar, signal
The run's identity, not its findings: {runId, status, outputs}, where outputs is the simulator's raw per-version result. The numbers a reader wants are in results.
Last updated

