RWM Console cluster: risingwave-adib.adib-rw.svc.cluster.local

← cluster insights objects cash_values_journal_density_mv explain
Overview Objects Graph History
materialized view · insights.cash_values_journal_density_mv profiled over 5s
seconds (1–30)

Job is idle — throughput ~0; structure shown.

Stateful hash join (4 state tables) — consider a temporal join for dimension lookupsAggregation state — unbounded unless keyed or temporally filteredWindow state — add a WHERE rank <= N to bound it
39 operators
Materialize · insights.cash_values_journal_density_mv
0% idle 2 actors
Project · (asset_prices_eod_ft_next.date >= settled_cash_series_mv_ne…
2 actors
Filter · (asset_prices_eod_ft_next.date >= settled_cash_series_mv_ne…
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore · Inner · settled_cash_series_mv_next.asset_id = asset_prices_eod_ft_…
2 actors
HashJoin · Inner · settled_cash_series_mv_next.asset_id = asset_prices_eod_ft_… Stateful hash join (4 state tables) — consider a temporal join for dimension lookups
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
Project
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
Filter · asset_prices_eod_ft_next
0% idle 2 actors
StreamScan · asset_prices_eod_ft_next
0% idle 2 actors
BatchPlan
2 actors
Merge
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
Project · ($expr1 <= $expr2) AND (IsNull(first_value) OR ($expr2 <= f…
2 actors
Filter · ($expr1 <= $expr2) AND (IsNull(first_value) OR ($expr2 <= f…
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore · Inner · settled_cash_series_mv_next.asset_id = asset_prices_eod_ft_…
2 actors
HashJoin · Inner · settled_cash_series_mv_next.asset_id = asset_prices_eod_ft_… Stateful hash join (4 state tables) — consider a temporal join for dimension lookups
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
Project
2 actors
HashAgg Aggregation state — unbounded unless keyed or temporally filtered
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
Project
2 actors
Merge
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
Project · settled_cash_series_mv_next
2 actors
OverWindow · settled_cash_series_mv_next Window state — add a WHERE rank <= N to bound it
0% idle 2 actors
StreamScan · settled_cash_series_mv_next
0% idle 2 actors
BatchPlan
2 actors
Merge
2 actors
Heat = the operator's output-buffer backpressure over the sampling window. Click a node to fold its subtree.
Materialize · insights.cash_values_journal_density_mv Materialize insights.cash_values_jo… idle · 2 actors Project · (asset_prices_eod_ft_next.date >= settled_cash_series_mv_ne… Project (asset_prices_eod_ft_ne… — · 2 actors Filter · (asset_prices_eod_ft_next.date >= settled_cash_series_mv_ne… Filter (asset_prices_eod_ft_ne… idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore · Inner · settled_cash_series_mv_next.asset_id = asset_prices_eod_ft_… SyncLogStore Inner · settled_cash_se… — · 2 actors HashJoin · Inner · settled_cash_series_mv_next.asset_id = asset_prices_eod_ft_… HashJoin Inner · settled_cash_se… idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors Project Project — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors Filter · asset_prices_eod_ft_next Filter asset_prices_eod_ft_next idle · 2 actors StreamScan · asset_prices_eod_ft_next StreamScan asset_prices_eod_ft_next idle · 2 actors BatchPlan BatchPlan — · 2 actors Merge Merge — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors Project · ($expr1 <= $expr2) AND (IsNull(first_value) OR ($expr2 <= f… Project ($expr1 <= $expr2) AND … — · 2 actors Filter · ($expr1 <= $expr2) AND (IsNull(first_value) OR ($expr2 <= f… Filter ($expr1 <= $expr2) AND … idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore · Inner · settled_cash_series_mv_next.asset_id = asset_prices_eod_ft_… SyncLogStore Inner · settled_cash_se… — · 2 actors HashJoin · Inner · settled_cash_series_mv_next.asset_id = asset_prices_eod_ft_… HashJoin Inner · settled_cash_se… idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors Project Project — · 2 actors HashAgg HashAgg idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors Project Project — · 2 actors Merge Merge — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors Project · settled_cash_series_mv_next Project settled_cash_series_mv_… — · 2 actors OverWindow · settled_cash_series_mv_next OverWindow settled_cash_series_mv_… idle · 2 actors StreamScan · settled_cash_series_mv_next StreamScan settled_cash_series_mv_… idle · 2 actors BatchPlan BatchPlan — · 2 actors Merge Merge — · 2 actors
Streaming operator plan from EXPLAIN ANALYZE. Node heat = backpressure. Drag to pan, scroll to zoom.
Fragments (DESCRIBE FRAGMENTS) — click to expand
Fragment 23447 (Actor 102812,102811)
StreamMaterialize { columns: [account_id, asset_id, dim_value_date, type, currency_code, market_value, average_cost_per_unit, purchased_quantity, settled_cash_series_mv_next.dim_settlement_date(hidden), $expr2(hidden)], stream_key: [account_id, asset_id, currency_code, settled_cash_series_mv_next.dim_settlement_date, $expr2, dim_value_date], pk_columns: [account_id, asset_id, currency_code, settled_cash_series_mv_next.dim_settlement_date, $expr2, dim_value_date], pk_conflict: NoCheck }
├── output: [ settled_cash_series_mv_next.account_id, settled_cash_series_mv_next.asset_id, asset_prices_eod_ft_next.date, 'ASSET':Varchar, settled_cash_series_mv_next.currency_code, $expr4, asset_prices_eod_ft_next.close, settled_cash_series_mv_next.settled_cash_balance, settled_cash_series_mv_next.dim_settlement_date, $expr2 ]
├── stream key: [ settled_cash_series_mv_next.account_id, settled_cash_series_mv_next.asset_id, settled_cash_series_mv_next.currency_code, settled_cash_series_mv_next.dim_settlement_date, $expr2, asset_prices_eod_ft_next.date ]
└── StreamProject { exprs: [settled_cash_series_mv_next.account_id, settled_cash_series_mv_next.asset_id, asset_prices_eod_ft_next.date, 'ASSET':Varchar, settled_cash_series_mv_next.currency_code, (settled_cash_series_mv_next.settled_cash_balance * asset_prices_eod_ft_next.close) as $expr4, asset_prices_eod_ft_next.close, settled_cash_series_mv_next.settled_cash_balance, settled_cash_series_mv_next.dim_settlement_date, $expr2] }
    ├── output: [ settled_cash_series_mv_next.account_id, settled_cash_series_mv_next.asset_id, asset_prices_eod_ft_next.date, 'ASSET':Varchar, settled_cash_series_mv_next.currency_code, $expr4, asset_prices_eod_ft_next.close, settled_cash_series_mv_next.settled_cash_balance, settled_cash_series_mv_next.dim_settlement_date, $expr2 ]
    ├── stream key: [ settled_cash_series_mv_next.account_id, settled_cash_series_mv_next.asset_id, settled_cash_series_mv_next.currency_code, settled_cash_series_mv_next.dim_settlement_date, $expr2, asset_prices_eod_ft_next.date ]
    └── StreamFilter { predicate: (asset_prices_eod_ft_next.date >= settled_cash_series_mv_next.dim_settlement_date) AND (IsNull(first_value) OR (asset_prices_eod_ft_next.date < first_value)) }
        ├── output: [ settled_cash_series_mv_next.account_id, settled_cash_series_mv_next.asset_id, settled_cash_series_mv_next.currency_code, settled_cash_series_mv_next.dim_settlement_date, settled_cash_series_mv_next.settled_cash_balance, first_value, $expr2, asset_prices_eod_ft_next.asset_id, asset_prices_eod_ft_next.asset_id, asset_prices_eod_ft_next.date, asset_prices_eod_ft_next.close, $expr3 ]
        ├── stream key: [ settled_cash_series_mv_next.account_id, settled_cash_series_mv_next.asset_id, settled_cash_series_mv_next.currency_code, settled_cash_series_mv_next.dim_settlement_date, $expr2, asset_prices_eod_ft_next.date ]
        └── MergeExecutor
            ├── output: [ settled_cash_series_mv_next.account_id, settled_cash_series_mv_next.asset_id, settled_cash_series_mv_next.currency_code, settled_cash_series_mv_next.dim_settlement_date, settled_cash_series_mv_next.settled_cash_balance, first_value, $expr2, asset_prices_eod_ft_next.asset_id, asset_prices_eod_ft_next.asset_id, asset_prices_eod_ft_next.date, asset_prices_eod_ft_next.close, $expr3 ]
            └── stream key: [ settled_cash_series_mv_next.account_id, settled_cash_series_mv_next.asset_id, settled_cash_series_mv_next.currency_code, settled_cash_series_mv_next.dim_settlement_date, $expr2, asset_prices_eod_ft_next.date ]

Fragment 23448 (Actor 102810,102809)
StreamSyncLogStore
├── output: [ settled_cash_series_mv_next.account_id, settled_cash_series_mv_next.asset_id, settled_cash_series_mv_next.currency_code, settled_cash_series_mv_next.dim_settlement_date, settled_cash_series_mv_next.settled_cash_balance, first_value, $expr2, asset_prices_eod_ft_next.asset_id, asset_prices_eod_ft_next.asset_id, asset_prices_eod_ft_next.date, asset_prices_eod_ft_next.close, $expr3 ]
├── stream key: [ settled_cash_series_mv_next.account_id, settled_cash_series_mv_next.asset_id, settled_cash_series_mv_next.currency_code, settled_cash_series_mv_next.dim_settlement_date, $expr2, asset_prices_eod_ft_next.date ]
└── StreamHashJoin { type: Inner, predicate: settled_cash_series_mv_next.asset_id = asset_prices_eod_ft_next.asset_id AND $expr2 = $expr3 }
    ├── output: [ settled_cash_series_mv_next.account_id, settled_cash_series_mv_next.asset_id, settled_cash_series_mv_next.currency_code, settled_cash_series_mv_next.dim_settlement_date, settled_cash_series_mv_next.settled_cash_balance, first_value, $expr2, asset_prices_eod_ft_next.asset_id, asset_prices_eod_ft_next.asset_id, asset_prices_eod_ft_next.date, asset_prices_eod_ft_next.close, $expr3 ]
    ├── stream key: [ settled_cash_series_mv_next.account_id, settled_cash_series_mv_next.asset_id, settled_cash_series_mv_next.currency_code, settled_cash_series_mv_next.dim_settlement_date, $expr2, asset_prices_eod_ft_next.date ]
    ├── MergeExecutor
    │   ├── output: [ settled_cash_series_mv_next.account_id, settled_cash_series_mv_next.asset_id, settled_cash_series_mv_next.currency_code, settled_cash_series_mv_next.dim_settlement_date, settled_cash_series_mv_next.settled_cash_balance, first_value, $expr2, asset_prices_eod_ft_next.asset_id ]
    │   └── stream key: [ settled_cash_series_mv_next.account_id, settled_cash_series_mv_next.asset_id, settled_cash_series_mv_next.currency_code, settled_cash_series_mv_next.dim_settlement_date, $expr2 ]
    └── MergeExecutor { output: [ asset_prices_eod_ft_next.asset_id, asset_prices_eod_ft_next.date, asset_prices_eod_ft_next.close, $expr3 ], stream key: [ asset_prices_eod_ft_next.asset_id, asset_prices_eod_ft_next.date ] }

Fragment 23449 (Actor 102813,102814)
StreamProject { exprs: [settled_cash_series_mv_next.account_id, settled_cash_series_mv_next.asset_id, settled_cash_series_mv_next.currency_code, settled_cash_series_mv_next.dim_settlement_date, settled_cash_series_mv_next.settled_cash_balance, first_value, $expr2, asset_prices_eod_ft_next.asset_id] }
├── output: [ settled_cash_series_mv_next.account_id, settled_cash_series_mv_next.asset_id, settled_cash_series_mv_next.currency_code, settled_cash_series_mv_next.dim_settlement_date, settled_cash_series_mv_next.settled_cash_balance, first_value, $expr2, asset_prices_eod_ft_next.asset_id ]
├── stream key: [ settled_cash_series_mv_next.account_id, settled_cash_series_mv_next.asset_id, settled_cash_series_mv_next.currency_code, settled_cash_series_mv_next.dim_settlement_date, $expr2 ]
└── StreamFilter { predicate: ($expr1 <= $expr2) AND (IsNull(first_value) OR ($expr2 <= first_value)) }
    ├── output: [ settled_cash_series_mv_next.account_id, settled_cash_series_mv_next.asset_id, settled_cash_series_mv_next.currency_code, settled_cash_series_mv_next.dim_settlement_date, settled_cash_series_mv_next.settled_cash_balance, first_value, $expr1, asset_prices_eod_ft_next.asset_id, $expr2 ]
    ├── stream key: [ settled_cash_series_mv_next.account_id, settled_cash_series_mv_next.asset_id, settled_cash_series_mv_next.currency_code, settled_cash_series_mv_next.dim_settlement_date, $expr2 ]
    └── MergeExecutor
        ├── output: [ settled_cash_series_mv_next.account_id, settled_cash_series_mv_next.asset_id, settled_cash_series_mv_next.currency_code, settled_cash_series_mv_next.dim_settlement_date, settled_cash_series_mv_next.settled_cash_balance, first_value, $expr1, asset_prices_eod_ft_next.asset_id, $expr2 ]
        └── stream key: [ settled_cash_series_mv_next.account_id, settled_cash_series_mv_next.asset_id, settled_cash_series_mv_next.currency_code, settled_cash_series_mv_next.dim_settlement_date, $expr2 ]

Fragment 23450 (Actor 102816,102815)
StreamSyncLogStore
├── output: [ settled_cash_series_mv_next.account_id, settled_cash_series_mv_next.asset_id, settled_cash_series_mv_next.currency_code, settled_cash_series_mv_next.dim_settlement_date, settled_cash_series_mv_next.settled_cash_balance, first_value, $expr1, asset_prices_eod_ft_next.asset_id, $expr2 ]
├── stream key: [ settled_cash_series_mv_next.account_id, settled_cash_series_mv_next.asset_id, settled_cash_series_mv_next.currency_code, settled_cash_series_mv_next.dim_settlement_date, $expr2 ]
└── StreamHashJoin { type: Inner, predicate: settled_cash_series_mv_next.asset_id = asset_prices_eod_ft_next.asset_id }
    ├── output: [ settled_cash_series_mv_next.account_id, settled_cash_series_mv_next.asset_id, settled_cash_series_mv_next.currency_code, settled_cash_series_mv_next.dim_settlement_date, settled_cash_series_mv_next.settled_cash_balance, first_value, $expr1, asset_prices_eod_ft_next.asset_id, $expr2 ]
    ├── stream key: [ settled_cash_series_mv_next.account_id, settled_cash_series_mv_next.asset_id, settled_cash_series_mv_next.currency_code, settled_cash_series_mv_next.dim_settlement_date, $expr2 ]
    ├── MergeExecutor { output: [ settled_cash_series_mv_next.account_id, settled_cash_series_mv_next.asset_id, settled_cash_series_mv_next.currency_code, settled_cash_series_mv_next.dim_settlement_date, settled_cash_series_mv_next.settled_cash_balance, first_value, $expr1 ], stream key: [ settled_cash_series_mv_next.account_id, settled_cash_series_mv_next.asset_id, settled_cash_series_mv_next.currency_code, settled_cash_series_mv_next.dim_settlement_date ] }
    └── MergeExecutor { output: [ asset_prices_eod_ft_next.asset_id, $expr2 ], stream key: [ asset_prices_eod_ft_next.asset_id, $expr2 ] }

Fragment 23451 (Actor 102819,102820)
StreamProject { exprs: [settled_cash_series_mv_next.account_id, settled_cash_series_mv_next.asset_id, settled_cash_series_mv_next.currency_code, settled_cash_series_mv_next.dim_settlement_date, settled_cash_series_mv_next.settled_cash_balance, first_value, AtTimeZone(DateTrunc('MONTH':Varchar, AtTimeZone(settled_cash_series_mv_next.dim_settlement_date::Timestamp, 'UTC':Varchar), 'UTC':Varchar), 'UTC':Varchar)::Date as $expr1] }
├── output: [ settled_cash_series_mv_next.account_id, settled_cash_series_mv_next.asset_id, settled_cash_series_mv_next.currency_code, settled_cash_series_mv_next.dim_settlement_date, settled_cash_series_mv_next.settled_cash_balance, first_value, $expr1 ]
├── stream key: [ settled_cash_series_mv_next.account_id, settled_cash_series_mv_next.asset_id, settled_cash_series_mv_next.currency_code, settled_cash_series_mv_next.dim_settlement_date ]
└── StreamOverWindow { window_functions: [first_value(settled_cash_series_mv_next.dim_settlement_date) OVER(PARTITION BY settled_cash_series_mv_next.account_id, settled_cash_series_mv_next.asset_id, settled_cash_series_mv_next.currency_code ORDER BY settled_cash_series_mv_next.dim_settlement_date ASC ROWS BETWEEN 1 FOLLOWING AND 1 FOLLOWING)] }
    ├── output: [ settled_cash_series_mv_next.account_id, settled_cash_series_mv_next.asset_id, settled_cash_series_mv_next.currency_code, settled_cash_series_mv_next.dim_settlement_date, settled_cash_series_mv_next.settled_cash_balance, first_value ]
    ├── stream key: [ settled_cash_series_mv_next.account_id, settled_cash_series_mv_next.asset_id, settled_cash_series_mv_next.currency_code, settled_cash_series_mv_next.dim_settlement_date ]
    └── StreamTableScan { table: settled_cash_series_mv_next, columns: [account_id, asset_id, currency_code, dim_settlement_date, settled_cash_balance] }
        ├── output: [ settled_cash_series_mv_next.account_id, settled_cash_series_mv_next.asset_id, settled_cash_series_mv_next.currency_code, settled_cash_series_mv_next.dim_settlement_date, settled_cash_series_mv_next.settled_cash_balance ]
        ├── stream key: [ settled_cash_series_mv_next.account_id, settled_cash_series_mv_next.asset_id, settled_cash_series_mv_next.currency_code, settled_cash_series_mv_next.dim_settlement_date ]
        ├── Upstream { output: [ account_id, asset_id, currency_code, dim_settlement_date, settled_cash_balance ], stream key: [] }
        └── BatchPlanNode { output: [ account_id, asset_id, currency_code, dim_settlement_date, settled_cash_balance ], stream key: [] }

Fragment 23452 (Actor 102818,102817)
StreamProject { exprs: [asset_prices_eod_ft_next.asset_id, $expr2] } { output: [ asset_prices_eod_ft_next.asset_id, $expr2 ], stream key: [ asset_prices_eod_ft_next.asset_id, $expr2 ] }
└── StreamHashAgg { group_key: [asset_prices_eod_ft_next.asset_id, $expr2], aggs: [count] } { output: [ asset_prices_eod_ft_next.asset_id, $expr2, count ], stream key: [ asset_prices_eod_ft_next.asset_id, $expr2 ] }
    └── MergeExecutor { output: [ asset_prices_eod_ft_next.asset_id, $expr2, asset_prices_eod_ft_next.date ], stream key: [ asset_prices_eod_ft_next.asset_id, asset_prices_eod_ft_next.date ] }

Fragment 23453 (Actor 102823,102824)
StreamProject { exprs: [asset_prices_eod_ft_next.asset_id, AtTimeZone(DateTrunc('MONTH':Varchar, AtTimeZone(asset_prices_eod_ft_next.date::Timestamp, 'UTC':Varchar), 'UTC':Varchar), 'UTC':Varchar)::Date as $expr2, asset_prices_eod_ft_next.date], output_watermarks: [[asset_prices_eod_ft_next.date]] } { output: [ asset_prices_eod_ft_next.asset_id, $expr2, asset_prices_eod_ft_next.date ], stream key: [ asset_prices_eod_ft_next.asset_id, asset_prices_eod_ft_next.date ] }
└── MergeExecutor { output: [ asset_prices_eod_ft_next.asset_id, asset_prices_eod_ft_next.date, asset_prices_eod_ft_next.close ], stream key: [ asset_prices_eod_ft_next.asset_id, asset_prices_eod_ft_next.date ] }

Fragment 23454 (Actor 102825,102826)
StreamFilter { predicate: Not(IsNull(asset_prices_eod_ft_next.close)) } { output: [ asset_prices_eod_ft_next.asset_id, asset_prices_eod_ft_next.date, asset_prices_eod_ft_next.close ], stream key: [ asset_prices_eod_ft_next.asset_id, asset_prices_eod_ft_next.date ] }
└── StreamTableScan { table: asset_prices_eod_ft_next, columns: [asset_id, date, close] } { output: [ asset_prices_eod_ft_next.asset_id, asset_prices_eod_ft_next.date, asset_prices_eod_ft_next.close ], stream key: [ asset_prices_eod_ft_next.asset_id, asset_prices_eod_ft_next.date ] }
    ├── Upstream { output: [ asset_id, date, close ], stream key: [] }
    └── BatchPlanNode { output: [ asset_id, date, close ], stream key: [] }

Fragment 23455 (Actor 102821,102822)
StreamProject { exprs: [asset_prices_eod_ft_next.asset_id, asset_prices_eod_ft_next.date, asset_prices_eod_ft_next.close, AtTimeZone(DateTrunc('MONTH':Varchar, AtTimeZone(asset_prices_eod_ft_next.date::Timestamp, 'UTC':Varchar), 'UTC':Varchar), 'UTC':Varchar)::Date as $expr3], output_watermarks: [[asset_prices_eod_ft_next.date]] }
├── output: [ asset_prices_eod_ft_next.asset_id, asset_prices_eod_ft_next.date, asset_prices_eod_ft_next.close, $expr3 ]
├── stream key: [ asset_prices_eod_ft_next.asset_id, asset_prices_eod_ft_next.date ]
└── MergeExecutor { output: [ asset_prices_eod_ft_next.asset_id, asset_prices_eod_ft_next.date, asset_prices_eod_ft_next.close ], stream key: [ asset_prices_eod_ft_next.asset_id, asset_prices_eod_ft_next.date ] }