dashboard (Aggregation Node)
The dashboard node consumes JSON from an upstream node and publishes a dashboard dimension using the legacy layout format.
Use this node when you need to convert filtered or transformed JSON into a dimension that the legacy dashboard UI can render.
Configuration Schema
| Property | Type | Required | Description |
|---|---|---|---|
dataSourceName | string | Yes | Data source where the node output JSON is stored. |
layoutConfiguration | array<object> | Yes | Legacy dashboard layout configuration. |
dashboardName | string | Yes | Display name for the created/updated dashboard dimension. |
autoCreateScenarioInstance | boolean | No | If true, creates a scenario instance when none exists. Defaults to false. |
scenarioName | string | No | Optional name for an auto-created scenario instance. |
scenarioFromIsoKey | string | No | Optional dotted payload path used to infer scenario start timestamp. |
scenarioToIsoKey | string | No | Optional dotted payload path used to infer scenario end timestamp. |
Input Payload Requirements
To enable user attribution, include dashboard_users in the payload as an array of external user GUIDs.
{
"map": {
"panelA": { "value": 42 }
},
"dashboard_users": ["<external-user-guid-1>", "<external-user-guid-2>"]
}map: arbitrary dashboard component data.dashboard_users: external IDs matched againstsession.get_users().externalId.
Runtime Behavior
At runtime, the processor:
- Fetches latest upstream JSON payload.
- Parses payload JSON and submits it as node output.
- Resolves scenario instance from session metadata, existing instances, or optional auto-create config.
- Maps
dashboard_usersvalues to internal user IDs. - Creates or updates a dimension with
DashboardVersion="Legacy".
This node is idempotent. Re-running appends a new node output and updates/creates the dimension using current payload/config.
User Attribution and Existing Fallbacks
The following behavior already exists in the processor:
- Missing or non-array
dashboard_usersis treated as[](with log error). - Unknown GUIDs are ignored (only matched users are attributed).
- If no users are mapped and dimensions already exist, the first existing dimension is updated.
- If exactly one user is mapped on dimension creation, metadata stores
grouping.role -> dimension.id.