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

← cluster opportunity objects signal_portfolio_fx_exposure_mv explain
Overview Objects Graph History
materialized view · opportunity.signal_portfolio_fx_exposure_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 lookups
22 operators
Materialize · opportunity.signal_portfolio_fx_exposure_mv
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore · Inner · 'GET_PORTFOLIO_FOREIGN_CURRENCY_EXPOSURE_PERCENTAGE':Varcha…
2 actors
HashJoin · Inner · 'GET_PORTFOLIO_FOREIGN_CURRENCY_EXPOSURE_PERCENTAGE':Varcha… 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
LocalityProvider
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
StreamScan · opportunity_conditions_mv_next
0% idle 2 actors
BatchPlan
2 actors
Merge
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
LocalityProvider
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
Project · portfolio_fx_exposure_delta_mv_next
2 actors
StreamScan · portfolio_fx_exposure_delta_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 · opportunity.signal_portfolio_fx_exposure_mv Materialize opportunity.signal_port… idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore · Inner · 'GET_PORTFOLIO_FOREIGN_CURRENCY_EXPOSURE_PERCENTAGE':Varcha… SyncLogStore Inner · 'GET_PORTFOLIO_… — · 2 actors HashJoin · Inner · 'GET_PORTFOLIO_FOREIGN_CURRENCY_EXPOSURE_PERCENTAGE':Varcha… HashJoin Inner · 'GET_PORTFOLIO_… idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors LocalityProvider LocalityProvider idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors StreamScan · opportunity_conditions_mv_next StreamScan opportunity_conditions_… idle · 2 actors BatchPlan BatchPlan — · 2 actors Merge Merge — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors LocalityProvider LocalityProvider idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors Project · portfolio_fx_exposure_delta_mv_next Project portfolio_fx_exposure_d… — · 2 actors StreamScan · portfolio_fx_exposure_delta_mv_next StreamScan portfolio_fx_exposure_d… 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 64597 (Actor 747879,747880)
StreamMaterialize { columns: [opportunity_id, activity_name, resource_id, fact_date, 'GET_PORTFOLIO_FOREIGN_CURRENCY_EXPOSURE_PERCENTAGE':Varchar(hidden), portfolio_fx_exposure_delta_mv_next.currency_code(hidden), opportunity_conditions_mv_next._rw_projected_row_id(hidden), opportunity_conditions_mv_next._rw_projected_row_id#1(hidden)], stream_key: ['GET_PORTFOLIO_FOREIGN_CURRENCY_EXPOSURE_PERCENTAGE':Varchar, fact_date, resource_id, portfolio_fx_exposure_delta_mv_next.currency_code, opportunity_id, opportunity_conditions_mv_next._rw_projected_row_id, opportunity_conditions_mv_next._rw_projected_row_id#1], pk_columns: ['GET_PORTFOLIO_FOREIGN_CURRENCY_EXPOSURE_PERCENTAGE':Varchar, fact_date, resource_id, portfolio_fx_exposure_delta_mv_next.currency_code, opportunity_id, opportunity_conditions_mv_next._rw_projected_row_id, opportunity_conditions_mv_next._rw_projected_row_id#1], pk_conflict: NoCheck }
├── output: [ opportunity_conditions_mv_next.opportunity_id, opportunity_conditions_mv_next.activity_name, portfolio_fx_exposure_delta_mv_next.portfolio_id, portfolio_fx_exposure_delta_mv_next.dim_balance_date, 'GET_PORTFOLIO_FOREIGN_CURRENCY_EXPOSURE_PERCENTAGE':Varchar, portfolio_fx_exposure_delta_mv_next.currency_code, opportunity_conditions_mv_next._rw_projected_row_id, opportunity_conditions_mv_next._rw_projected_row_id#1 ]
├── stream key: [ 'GET_PORTFOLIO_FOREIGN_CURRENCY_EXPOSURE_PERCENTAGE':Varchar, portfolio_fx_exposure_delta_mv_next.dim_balance_date, portfolio_fx_exposure_delta_mv_next.portfolio_id, portfolio_fx_exposure_delta_mv_next.currency_code, opportunity_conditions_mv_next.opportunity_id, opportunity_conditions_mv_next._rw_projected_row_id, opportunity_conditions_mv_next._rw_projected_row_id#1 ]
└── MergeExecutor { output: [ opportunity_conditions_mv_next.opportunity_id, opportunity_conditions_mv_next.activity_name, portfolio_fx_exposure_delta_mv_next.portfolio_id, portfolio_fx_exposure_delta_mv_next.dim_balance_date, 'GET_PORTFOLIO_FOREIGN_CURRENCY_EXPOSURE_PERCENTAGE':Varchar, portfolio_fx_exposure_delta_mv_next.currency_code, opportunity_conditions_mv_next._rw_projected_row_id, opportunity_conditions_mv_next._rw_projected_row_id#1 ], stream key: [ 'GET_PORTFOLIO_FOREIGN_CURRENCY_EXPOSURE_PERCENTAGE':Varchar, portfolio_fx_exposure_delta_mv_next.dim_balance_date, portfolio_fx_exposure_delta_mv_next.portfolio_id, portfolio_fx_exposure_delta_mv_next.currency_code, opportunity_conditions_mv_next.opportunity_id, opportunity_conditions_mv_next._rw_projected_row_id, opportunity_conditions_mv_next._rw_projected_row_id#1 ] }

Fragment 64598 (Actor 747878,747877)
StreamSyncLogStore { output: [ opportunity_conditions_mv_next.opportunity_id, opportunity_conditions_mv_next.activity_name, portfolio_fx_exposure_delta_mv_next.portfolio_id, portfolio_fx_exposure_delta_mv_next.dim_balance_date, 'GET_PORTFOLIO_FOREIGN_CURRENCY_EXPOSURE_PERCENTAGE':Varchar, portfolio_fx_exposure_delta_mv_next.currency_code, opportunity_conditions_mv_next._rw_projected_row_id, opportunity_conditions_mv_next._rw_projected_row_id#1 ], stream key: [ 'GET_PORTFOLIO_FOREIGN_CURRENCY_EXPOSURE_PERCENTAGE':Varchar, portfolio_fx_exposure_delta_mv_next.dim_balance_date, portfolio_fx_exposure_delta_mv_next.portfolio_id, portfolio_fx_exposure_delta_mv_next.currency_code, opportunity_conditions_mv_next.opportunity_id, opportunity_conditions_mv_next._rw_projected_row_id, opportunity_conditions_mv_next._rw_projected_row_id#1 ] }
└── StreamHashJoin { type: Inner, predicate: 'GET_PORTFOLIO_FOREIGN_CURRENCY_EXPOSURE_PERCENTAGE':Varchar = opportunity_conditions_mv_next.activity_name AND Case((opportunity_conditions_mv_next.op = 'GTE':Varchar), (portfolio_fx_exposure_delta_mv_next.fx_exposure_pct >= opportunity_conditions_mv_next.threshold), (opportunity_conditions_mv_next.op = 'GT':Varchar), (portfolio_fx_exposure_delta_mv_next.fx_exposure_pct > opportunity_conditions_mv_next.threshold), (opportunity_conditions_mv_next.op = 'LTE':Varchar), (portfolio_fx_exposure_delta_mv_next.fx_exposure_pct <= opportunity_conditions_mv_next.threshold), (opportunity_conditions_mv_next.op = 'LT':Varchar), (portfolio_fx_exposure_delta_mv_next.fx_exposure_pct < opportunity_conditions_mv_next.threshold), (opportunity_conditions_mv_next.op = 'EQ':Varchar), (portfolio_fx_exposure_delta_mv_next.fx_exposure_pct = opportunity_conditions_mv_next.threshold), false:Boolean) }
    ├── output: [ opportunity_conditions_mv_next.opportunity_id, opportunity_conditions_mv_next.activity_name, portfolio_fx_exposure_delta_mv_next.portfolio_id, portfolio_fx_exposure_delta_mv_next.dim_balance_date, 'GET_PORTFOLIO_FOREIGN_CURRENCY_EXPOSURE_PERCENTAGE':Varchar, portfolio_fx_exposure_delta_mv_next.currency_code, opportunity_conditions_mv_next._rw_projected_row_id, opportunity_conditions_mv_next._rw_projected_row_id#1 ]
    ├── stream key: [ 'GET_PORTFOLIO_FOREIGN_CURRENCY_EXPOSURE_PERCENTAGE':Varchar, portfolio_fx_exposure_delta_mv_next.dim_balance_date, portfolio_fx_exposure_delta_mv_next.portfolio_id, portfolio_fx_exposure_delta_mv_next.currency_code, opportunity_conditions_mv_next.opportunity_id, opportunity_conditions_mv_next._rw_projected_row_id, opportunity_conditions_mv_next._rw_projected_row_id#1 ]
    ├── MergeExecutor { output: [ portfolio_fx_exposure_delta_mv_next.portfolio_id, portfolio_fx_exposure_delta_mv_next.dim_balance_date, 'GET_PORTFOLIO_FOREIGN_CURRENCY_EXPOSURE_PERCENTAGE':Varchar, portfolio_fx_exposure_delta_mv_next.fx_exposure_pct, portfolio_fx_exposure_delta_mv_next.currency_code ], stream key: [ 'GET_PORTFOLIO_FOREIGN_CURRENCY_EXPOSURE_PERCENTAGE':Varchar, portfolio_fx_exposure_delta_mv_next.dim_balance_date, portfolio_fx_exposure_delta_mv_next.portfolio_id, portfolio_fx_exposure_delta_mv_next.currency_code ] }
    └── MergeExecutor { output: [ opportunity_conditions_mv_next.opportunity_id, opportunity_conditions_mv_next.activity_name, opportunity_conditions_mv_next.op, opportunity_conditions_mv_next.threshold, opportunity_conditions_mv_next._rw_projected_row_id, opportunity_conditions_mv_next._rw_projected_row_id#1 ], stream key: [ opportunity_conditions_mv_next.activity_name, opportunity_conditions_mv_next.opportunity_id, opportunity_conditions_mv_next._rw_projected_row_id, opportunity_conditions_mv_next._rw_projected_row_id#1 ] }

Fragment 64599 (Actor 747882,747881)
StreamLocalityProvider { locality_columns: ['GET_PORTFOLIO_FOREIGN_CURRENCY_EXPOSURE_PERCENTAGE':Varchar] } { output: [ portfolio_fx_exposure_delta_mv_next.portfolio_id, portfolio_fx_exposure_delta_mv_next.dim_balance_date, 'GET_PORTFOLIO_FOREIGN_CURRENCY_EXPOSURE_PERCENTAGE':Varchar, portfolio_fx_exposure_delta_mv_next.fx_exposure_pct, portfolio_fx_exposure_delta_mv_next.currency_code ], stream key: [ 'GET_PORTFOLIO_FOREIGN_CURRENCY_EXPOSURE_PERCENTAGE':Varchar, portfolio_fx_exposure_delta_mv_next.dim_balance_date, portfolio_fx_exposure_delta_mv_next.portfolio_id, portfolio_fx_exposure_delta_mv_next.currency_code ] }
└── MergeExecutor { output: [ portfolio_fx_exposure_delta_mv_next.portfolio_id, portfolio_fx_exposure_delta_mv_next.dim_balance_date, 'GET_PORTFOLIO_FOREIGN_CURRENCY_EXPOSURE_PERCENTAGE':Varchar, portfolio_fx_exposure_delta_mv_next.fx_exposure_pct, portfolio_fx_exposure_delta_mv_next.currency_code ], stream key: [ portfolio_fx_exposure_delta_mv_next.dim_balance_date, portfolio_fx_exposure_delta_mv_next.portfolio_id, portfolio_fx_exposure_delta_mv_next.currency_code ] }

Fragment 64600 (Actor 747797,747798)
StreamProject { exprs: [portfolio_fx_exposure_delta_mv_next.portfolio_id, portfolio_fx_exposure_delta_mv_next.dim_balance_date, 'GET_PORTFOLIO_FOREIGN_CURRENCY_EXPOSURE_PERCENTAGE':Varchar, portfolio_fx_exposure_delta_mv_next.fx_exposure_pct, portfolio_fx_exposure_delta_mv_next.currency_code] } { output: [ portfolio_fx_exposure_delta_mv_next.portfolio_id, portfolio_fx_exposure_delta_mv_next.dim_balance_date, 'GET_PORTFOLIO_FOREIGN_CURRENCY_EXPOSURE_PERCENTAGE':Varchar, portfolio_fx_exposure_delta_mv_next.fx_exposure_pct, portfolio_fx_exposure_delta_mv_next.currency_code ], stream key: [ portfolio_fx_exposure_delta_mv_next.dim_balance_date, portfolio_fx_exposure_delta_mv_next.portfolio_id, portfolio_fx_exposure_delta_mv_next.currency_code ] }
└── StreamTableScan { table: portfolio_fx_exposure_delta_mv_next, columns: [portfolio_id, dim_balance_date, fx_exposure_pct, currency_code] } { output: [ portfolio_fx_exposure_delta_mv_next.portfolio_id, portfolio_fx_exposure_delta_mv_next.dim_balance_date, portfolio_fx_exposure_delta_mv_next.fx_exposure_pct, portfolio_fx_exposure_delta_mv_next.currency_code ], stream key: [ portfolio_fx_exposure_delta_mv_next.dim_balance_date, portfolio_fx_exposure_delta_mv_next.portfolio_id, portfolio_fx_exposure_delta_mv_next.currency_code ] }
    ├── Upstream { output: [ portfolio_id, dim_balance_date, fx_exposure_pct, currency_code ], stream key: [] }
    └── BatchPlanNode { output: [ portfolio_id, dim_balance_date, fx_exposure_pct, currency_code ], stream key: [] }

Fragment 64601 (Actor 747883,747884)
StreamLocalityProvider { locality_columns: [opportunity_conditions_mv_next.activity_name] } { output: [ opportunity_conditions_mv_next.opportunity_id, opportunity_conditions_mv_next.activity_name, opportunity_conditions_mv_next.op, opportunity_conditions_mv_next.threshold, opportunity_conditions_mv_next._rw_projected_row_id, opportunity_conditions_mv_next._rw_projected_row_id#1 ], stream key: [ opportunity_conditions_mv_next.activity_name, opportunity_conditions_mv_next.opportunity_id, opportunity_conditions_mv_next._rw_projected_row_id, opportunity_conditions_mv_next._rw_projected_row_id#1 ] }
└── MergeExecutor { output: [ opportunity_conditions_mv_next.opportunity_id, opportunity_conditions_mv_next.activity_name, opportunity_conditions_mv_next.op, opportunity_conditions_mv_next.threshold, opportunity_conditions_mv_next._rw_projected_row_id, opportunity_conditions_mv_next._rw_projected_row_id#1 ], stream key: [ opportunity_conditions_mv_next.opportunity_id, opportunity_conditions_mv_next._rw_projected_row_id, opportunity_conditions_mv_next._rw_projected_row_id#1 ] }

Fragment 64602 (Actor 747799,747800)
StreamTableScan { table: opportunity_conditions_mv_next, columns: [opportunity_id, activity_name, op, threshold, _rw_projected_row_id, _rw_projected_row_id#1] } { output: [ opportunity_conditions_mv_next.opportunity_id, opportunity_conditions_mv_next.activity_name, opportunity_conditions_mv_next.op, opportunity_conditions_mv_next.threshold, opportunity_conditions_mv_next._rw_projected_row_id, opportunity_conditions_mv_next._rw_projected_row_id#1 ], stream key: [ opportunity_conditions_mv_next.opportunity_id, opportunity_conditions_mv_next._rw_projected_row_id, opportunity_conditions_mv_next._rw_projected_row_id#1 ] }
├── Upstream { output: [ opportunity_id, activity_name, op, threshold, _rw_projected_row_id, _rw_projected_row_id#1 ], stream key: [] }
└── BatchPlanNode { output: [ opportunity_id, activity_name, op, threshold, _rw_projected_row_id, _rw_projected_row_id#1 ], stream key: [] }