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

← cluster insights objects twrr_mv explain
Overview Objects Graph History
materialized view · insights.twrr_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 lookupsWindow state — add a WHERE rank <= N to bound it
29 operators
Materialize · insights.twrr_mv
0% idle 2 actors
Project
2 actors
Project
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore · LeftOuter · position_summary_mv_next.account_group_id = flow_summary_mv…
2 actors
HashJoin · LeftOuter · position_summary_mv_next.account_group_id = flow_summary_mv… 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 · flow_summary_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
Filter · Not(IsNull(first_value))
0% idle 2 actors
OverWindow · Not(IsNull(first_value)) Window state — add a WHERE rank <= N to bound it
0% idle 2 actors
LocalityProvider · Not(IsNull(first_value))
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
Filter · position_summary_mv_next
0% idle 2 actors
StreamScan · position_summary_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.twrr_mv Materialize insights.twrr_mv idle · 2 actors Project Project — · 2 actors Project Project — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore · LeftOuter · position_summary_mv_next.account_group_id = flow_summary_mv… SyncLogStore LeftOuter · position_su… — · 2 actors HashJoin · LeftOuter · position_summary_mv_next.account_group_id = flow_summary_mv… HashJoin LeftOuter · position_su… 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 · flow_summary_mv_next StreamScan flow_summary_mv_next 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 Filter · Not(IsNull(first_value)) Filter Not(IsNull(first_value)) idle · 2 actors OverWindow · Not(IsNull(first_value)) OverWindow Not(IsNull(first_value)) idle · 2 actors LocalityProvider · Not(IsNull(first_value)) LocalityProvider Not(IsNull(first_value)) idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors Filter · position_summary_mv_next Filter position_summary_mv_next idle · 2 actors StreamScan · position_summary_mv_next StreamScan position_summary_mv_next 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 61813 (Actor 740114,740113)
StreamMaterialize { columns: [account_group_id, dim_balance_date, position_type, currency_code, market_value, prev_market_value, net_flow, daily_subperiod_return, daily_subperiod_fair_value_return, daily_subperiod_return_system_currency, daily_subperiod_fair_value_return_system_currency, position_summary_mv_next.source_entity_type(hidden)], stream_key: [account_group_id, dim_balance_date, position_type, currency_code, position_summary_mv_next.source_entity_type], pk_columns: [account_group_id, dim_balance_date, position_type, currency_code, position_summary_mv_next.source_entity_type], pk_conflict: NoCheck } { output: [ position_summary_mv_next.account_group_id, position_summary_mv_next.dim_balance_date, position_summary_mv_next.position_type, position_summary_mv_next.currency_code, position_summary_mv_next.market_value, first_value, $expr1, $expr3, $expr4, $expr5, $expr6, position_summary_mv_next.source_entity_type ], stream key: [ position_summary_mv_next.account_group_id, position_summary_mv_next.dim_balance_date, position_summary_mv_next.position_type, position_summary_mv_next.currency_code, position_summary_mv_next.source_entity_type ] }
└── StreamProject
└─exprs:
  ┌─position_summary_mv_next.account_group_id
  ├─position_summary_mv_next.dim_balance_date
  ├─position_summary_mv_next.position_type
  ├─position_summary_mv_next.currency_code
  ├─position_summary_mv_next.market_value
  ├─first_value
  ├─$expr1
  ├─Case((IsNull(first_value) OR (first_value = 0:Decimal)), 0:Decimal, (position_summary_mv_next.market_value = 0:Decimal), 0:Decimal, (((position_summary_mv_next.market_value - $expr1) < 0:Decimal) AND ((first_value + $expr1) > 0:Decimal)), Greatest(((position_summary_mv_next.market_value / (first_value + $expr1)) - 1:Decimal), -0.999999999999999999:Decimal), Greatest((((position_summary_mv_next.market_value - $expr1) / first_value) - 1:Decimal), -0.999999999999999999:Decimal)) as $expr3
  ├─Case((IsNull(first_value) OR (first_value = 0:Decimal)), 0:Decimal, (position_summary_mv_next.fair_value = 0:Decimal), 0:Decimal, (((position_summary_mv_next.fair_value - $expr1) < 0:Decimal) AND ((first_value + $expr1) > 0:Decimal)), Greatest(((position_summary_mv_next.fair_value / (first_value + $expr1)) - 1:Decimal), -0.999999999999999999:Decimal), Greatest((((position_summary_mv_next.fair_value - $expr1) / first_value) - 1:Decimal), -0.999999999999999999:Decimal)) as $expr4
  ├─Case((IsNull(first_value) OR (first_value = 0:Decimal)), 0:Decimal, (position_summary_mv_next.market_value_system_currency = 0:Decimal), 0:Decimal, (((position_summary_mv_next.market_value_system_currency - $expr2) < 0:Decimal) AND ((first_value + $expr2) > 0:Decimal)), Greatest(((position_summary_mv_next.market_value_system_currency / (first_value + $expr2)) - 1:Decimal), -0.999999999999999999:Decimal), Greatest((((position_summary_mv_next.market_value_system_currency - $expr2) / first_value) - 1:Decimal), -0.999999999999999999:Decimal)) as $expr5
  ├─Case((IsNull(first_value) OR (first_value = 0:Decimal)), 0:Decimal, (position_summary_mv_next.fair_value_system_currency = 0:Decimal), 0:Decimal, (((position_summary_mv_next.fair_value_system_currency - $expr2) < 0:Decimal) AND ((first_value + $expr2) > 0:Decimal)), Greatest(((position_summary_mv_next.fair_value_system_currency / (first_value + $expr2)) - 1:Decimal), -0.999999999999999999:Decimal), Greatest((((position_summary_mv_next.fair_value_system_currency - $expr2) / first_value) - 1:Decimal), -0.999999999999999999:Decimal)) as $expr6
  └─position_summary_mv_next.source_entity_type
    ├── output: [ position_summary_mv_next.account_group_id, position_summary_mv_next.dim_balance_date, position_summary_mv_next.position_type, position_summary_mv_next.currency_code, position_summary_mv_next.market_value, first_value, $expr1, $expr3, $expr4, $expr5, $expr6, position_summary_mv_next.source_entity_type ]
    ├── stream key: [ position_summary_mv_next.account_group_id, position_summary_mv_next.dim_balance_date, position_summary_mv_next.position_type, position_summary_mv_next.currency_code, position_summary_mv_next.source_entity_type ]
    └── StreamProject { exprs: [position_summary_mv_next.account_group_id, position_summary_mv_next.dim_balance_date, position_summary_mv_next.position_type, position_summary_mv_next.currency_code, position_summary_mv_next.market_value, first_value, position_summary_mv_next.fair_value, first_value, position_summary_mv_next.market_value_system_currency, first_value, position_summary_mv_next.fair_value_system_currency, first_value, Coalesce(flow_summary_mv_next.adjusted_net_flow, 0:Decimal) as $expr1, Coalesce(flow_summary_mv_next.adjusted_net_flow_system_currency, 0:Decimal) as $expr2, position_summary_mv_next.source_entity_type] } { output: [ position_summary_mv_next.account_group_id, position_summary_mv_next.dim_balance_date, position_summary_mv_next.position_type, position_summary_mv_next.currency_code, position_summary_mv_next.market_value, first_value, position_summary_mv_next.fair_value, first_value, position_summary_mv_next.market_value_system_currency, first_value, position_summary_mv_next.fair_value_system_currency, first_value, $expr1, $expr2, position_summary_mv_next.source_entity_type ], stream key: [ position_summary_mv_next.account_group_id, position_summary_mv_next.dim_balance_date, position_summary_mv_next.position_type, position_summary_mv_next.currency_code, position_summary_mv_next.source_entity_type ] }
        └── MergeExecutor { output: [ position_summary_mv_next.account_group_id, position_summary_mv_next.dim_balance_date, position_summary_mv_next.position_type, position_summary_mv_next.currency_code, position_summary_mv_next.market_value, position_summary_mv_next.fair_value, position_summary_mv_next.market_value_system_currency, position_summary_mv_next.fair_value_system_currency, first_value, first_value, first_value, first_value, flow_summary_mv_next.adjusted_net_flow, flow_summary_mv_next.adjusted_net_flow_system_currency, position_summary_mv_next.source_entity_type, flow_summary_mv_next.account_group_id, flow_summary_mv_next.dim_transaction_date, flow_summary_mv_next.position_type, flow_summary_mv_next.currency_code ], stream key: [ position_summary_mv_next.account_group_id, position_summary_mv_next.dim_balance_date, position_summary_mv_next.position_type, position_summary_mv_next.currency_code, position_summary_mv_next.source_entity_type ] }

Fragment 61814 (Actor 740115,740116)
StreamSyncLogStore { output: [ position_summary_mv_next.account_group_id, position_summary_mv_next.dim_balance_date, position_summary_mv_next.position_type, position_summary_mv_next.currency_code, position_summary_mv_next.market_value, position_summary_mv_next.fair_value, position_summary_mv_next.market_value_system_currency, position_summary_mv_next.fair_value_system_currency, first_value, first_value, first_value, first_value, flow_summary_mv_next.adjusted_net_flow, flow_summary_mv_next.adjusted_net_flow_system_currency, position_summary_mv_next.source_entity_type, flow_summary_mv_next.account_group_id, flow_summary_mv_next.dim_transaction_date, flow_summary_mv_next.position_type, flow_summary_mv_next.currency_code ], stream key: [ position_summary_mv_next.account_group_id, position_summary_mv_next.dim_balance_date, position_summary_mv_next.position_type, position_summary_mv_next.currency_code, position_summary_mv_next.source_entity_type ] }
└── StreamHashJoin { type: LeftOuter, predicate: position_summary_mv_next.account_group_id = flow_summary_mv_next.account_group_id AND position_summary_mv_next.dim_balance_date = flow_summary_mv_next.dim_transaction_date AND position_summary_mv_next.position_type = flow_summary_mv_next.position_type AND position_summary_mv_next.currency_code = flow_summary_mv_next.currency_code } { output: [ position_summary_mv_next.account_group_id, position_summary_mv_next.dim_balance_date, position_summary_mv_next.position_type, position_summary_mv_next.currency_code, position_summary_mv_next.market_value, position_summary_mv_next.fair_value, position_summary_mv_next.market_value_system_currency, position_summary_mv_next.fair_value_system_currency, first_value, first_value, first_value, first_value, flow_summary_mv_next.adjusted_net_flow, flow_summary_mv_next.adjusted_net_flow_system_currency, position_summary_mv_next.source_entity_type, flow_summary_mv_next.account_group_id, flow_summary_mv_next.dim_transaction_date, flow_summary_mv_next.position_type, flow_summary_mv_next.currency_code ], stream key: [ position_summary_mv_next.account_group_id, position_summary_mv_next.dim_balance_date, position_summary_mv_next.position_type, position_summary_mv_next.currency_code, position_summary_mv_next.source_entity_type ] }
    ├── MergeExecutor { output: [ position_summary_mv_next.account_group_id, position_summary_mv_next.dim_balance_date, position_summary_mv_next.position_type, position_summary_mv_next.currency_code, position_summary_mv_next.market_value, position_summary_mv_next.fair_value, position_summary_mv_next.market_value_system_currency, position_summary_mv_next.fair_value_system_currency, position_summary_mv_next.source_entity_type, first_value, first_value, first_value, first_value ], stream key: [ position_summary_mv_next.account_group_id, position_summary_mv_next.dim_balance_date, position_summary_mv_next.position_type, position_summary_mv_next.currency_code, position_summary_mv_next.source_entity_type ] }
    └── MergeExecutor { output: [ flow_summary_mv_next.account_group_id, flow_summary_mv_next.dim_transaction_date, flow_summary_mv_next.position_type, flow_summary_mv_next.currency_code, flow_summary_mv_next.adjusted_net_flow, flow_summary_mv_next.adjusted_net_flow_system_currency ], stream key: [ flow_summary_mv_next.account_group_id, flow_summary_mv_next.dim_transaction_date, flow_summary_mv_next.position_type, flow_summary_mv_next.currency_code ] }

Fragment 61815 (Actor 740117,740118)
StreamLocalityProvider { locality_columns: [position_summary_mv_next.account_group_id, position_summary_mv_next.dim_balance_date, position_summary_mv_next.position_type, position_summary_mv_next.currency_code] } { output: [ position_summary_mv_next.account_group_id, position_summary_mv_next.dim_balance_date, position_summary_mv_next.position_type, position_summary_mv_next.currency_code, position_summary_mv_next.market_value, position_summary_mv_next.fair_value, position_summary_mv_next.market_value_system_currency, position_summary_mv_next.fair_value_system_currency, position_summary_mv_next.source_entity_type, first_value, first_value, first_value, first_value ], stream key: [ position_summary_mv_next.account_group_id, position_summary_mv_next.dim_balance_date, position_summary_mv_next.position_type, position_summary_mv_next.currency_code, position_summary_mv_next.source_entity_type ] }
└── MergeExecutor { output: [ position_summary_mv_next.account_group_id, position_summary_mv_next.dim_balance_date, position_summary_mv_next.position_type, position_summary_mv_next.currency_code, position_summary_mv_next.market_value, position_summary_mv_next.fair_value, position_summary_mv_next.market_value_system_currency, position_summary_mv_next.fair_value_system_currency, position_summary_mv_next.source_entity_type, first_value, first_value, first_value, first_value ], stream key: [ position_summary_mv_next.account_group_id, position_summary_mv_next.currency_code, position_summary_mv_next.position_type, position_summary_mv_next.source_entity_type, position_summary_mv_next.dim_balance_date ] }

Fragment 61816 (Actor 740213,740212)
StreamFilter { predicate: Not(IsNull(first_value)) } { output: [ position_summary_mv_next.account_group_id, position_summary_mv_next.dim_balance_date, position_summary_mv_next.position_type, position_summary_mv_next.currency_code, position_summary_mv_next.market_value, position_summary_mv_next.fair_value, position_summary_mv_next.market_value_system_currency, position_summary_mv_next.fair_value_system_currency, position_summary_mv_next.source_entity_type, first_value, first_value, first_value, first_value ], stream key: [ position_summary_mv_next.account_group_id, position_summary_mv_next.currency_code, position_summary_mv_next.position_type, position_summary_mv_next.source_entity_type, position_summary_mv_next.dim_balance_date ] }
└── StreamOverWindow { window_functions: [first_value(position_summary_mv_next.market_value) OVER(PARTITION BY position_summary_mv_next.account_group_id, position_summary_mv_next.currency_code, position_summary_mv_next.position_type ORDER BY position_summary_mv_next.dim_balance_date ASC ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING), first_value(position_summary_mv_next.fair_value) OVER(PARTITION BY position_summary_mv_next.account_group_id, position_summary_mv_next.currency_code, position_summary_mv_next.position_type ORDER BY position_summary_mv_next.dim_balance_date ASC ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING), first_value(position_summary_mv_next.market_value_system_currency) OVER(PARTITION BY position_summary_mv_next.account_group_id, position_summary_mv_next.currency_code, position_summary_mv_next.position_type ORDER BY position_summary_mv_next.dim_balance_date ASC ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING), first_value(position_summary_mv_next.fair_value_system_currency) OVER(PARTITION BY position_summary_mv_next.account_group_id, position_summary_mv_next.currency_code, position_summary_mv_next.position_type ORDER BY position_summary_mv_next.dim_balance_date ASC ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING)] } { output: [ position_summary_mv_next.account_group_id, position_summary_mv_next.dim_balance_date, position_summary_mv_next.position_type, position_summary_mv_next.currency_code, position_summary_mv_next.market_value, position_summary_mv_next.fair_value, position_summary_mv_next.market_value_system_currency, position_summary_mv_next.fair_value_system_currency, position_summary_mv_next.source_entity_type, first_value, first_value, first_value, first_value ], stream key: [ position_summary_mv_next.account_group_id, position_summary_mv_next.currency_code, position_summary_mv_next.position_type, position_summary_mv_next.source_entity_type, position_summary_mv_next.dim_balance_date ] }
    └── StreamLocalityProvider { locality_columns: [position_summary_mv_next.account_group_id, position_summary_mv_next.currency_code, position_summary_mv_next.position_type] } { output: [ position_summary_mv_next.account_group_id, position_summary_mv_next.dim_balance_date, position_summary_mv_next.position_type, position_summary_mv_next.currency_code, position_summary_mv_next.market_value, position_summary_mv_next.fair_value, position_summary_mv_next.market_value_system_currency, position_summary_mv_next.fair_value_system_currency, position_summary_mv_next.source_entity_type ], stream key: [ position_summary_mv_next.account_group_id, position_summary_mv_next.currency_code, position_summary_mv_next.position_type, position_summary_mv_next.source_entity_type, position_summary_mv_next.dim_balance_date ] }
        └── MergeExecutor { output: [ position_summary_mv_next.account_group_id, position_summary_mv_next.dim_balance_date, position_summary_mv_next.position_type, position_summary_mv_next.currency_code, position_summary_mv_next.market_value, position_summary_mv_next.fair_value, position_summary_mv_next.market_value_system_currency, position_summary_mv_next.fair_value_system_currency, position_summary_mv_next.source_entity_type ], stream key: [ position_summary_mv_next.account_group_id, position_summary_mv_next.source_entity_type, position_summary_mv_next.dim_balance_date, position_summary_mv_next.currency_code, position_summary_mv_next.position_type ] }

Fragment 61817 (Actor 740217,740216)
StreamFilter { predicate: (position_summary_mv_next.position_type = 'POSITION':Varchar) AND (position_summary_mv_next.source_entity_type = 'portfolio':Varchar) } { output: [ position_summary_mv_next.account_group_id, position_summary_mv_next.dim_balance_date, position_summary_mv_next.position_type, position_summary_mv_next.currency_code, position_summary_mv_next.market_value, position_summary_mv_next.fair_value, position_summary_mv_next.market_value_system_currency, position_summary_mv_next.fair_value_system_currency, position_summary_mv_next.source_entity_type ], stream key: [ position_summary_mv_next.account_group_id, position_summary_mv_next.source_entity_type, position_summary_mv_next.dim_balance_date, position_summary_mv_next.currency_code, position_summary_mv_next.position_type ] }
└── StreamTableScan { table: position_summary_mv_next, columns: [account_group_id, dim_balance_date, position_type, currency_code, market_value, fair_value, market_value_system_currency, fair_value_system_currency, source_entity_type] } { output: [ position_summary_mv_next.account_group_id, position_summary_mv_next.dim_balance_date, position_summary_mv_next.position_type, position_summary_mv_next.currency_code, position_summary_mv_next.market_value, position_summary_mv_next.fair_value, position_summary_mv_next.market_value_system_currency, position_summary_mv_next.fair_value_system_currency, position_summary_mv_next.source_entity_type ], stream key: [ position_summary_mv_next.account_group_id, position_summary_mv_next.source_entity_type, position_summary_mv_next.dim_balance_date, position_summary_mv_next.currency_code, position_summary_mv_next.position_type ] }
    ├── Upstream { output: [ account_group_id, dim_balance_date, position_type, currency_code, market_value, fair_value, market_value_system_currency, fair_value_system_currency, source_entity_type ], stream key: [] }
    └── BatchPlanNode { output: [ account_group_id, dim_balance_date, position_type, currency_code, market_value, fair_value, market_value_system_currency, fair_value_system_currency, source_entity_type ], stream key: [] }

Fragment 61818 (Actor 740214,740215)
StreamLocalityProvider { locality_columns: [flow_summary_mv_next.account_group_id, flow_summary_mv_next.dim_transaction_date, flow_summary_mv_next.position_type, flow_summary_mv_next.currency_code] } { output: [ flow_summary_mv_next.account_group_id, flow_summary_mv_next.dim_transaction_date, flow_summary_mv_next.position_type, flow_summary_mv_next.currency_code, flow_summary_mv_next.adjusted_net_flow, flow_summary_mv_next.adjusted_net_flow_system_currency ], stream key: [ flow_summary_mv_next.account_group_id, flow_summary_mv_next.dim_transaction_date, flow_summary_mv_next.position_type, flow_summary_mv_next.currency_code ] }
└── MergeExecutor { output: [ flow_summary_mv_next.account_group_id, flow_summary_mv_next.dim_transaction_date, flow_summary_mv_next.position_type, flow_summary_mv_next.currency_code, flow_summary_mv_next.adjusted_net_flow, flow_summary_mv_next.adjusted_net_flow_system_currency ], stream key: [ flow_summary_mv_next.account_group_id, flow_summary_mv_next.currency_code, flow_summary_mv_next.position_type, flow_summary_mv_next.dim_transaction_date ] }

Fragment 61819 (Actor 740218,740219)
StreamTableScan { table: flow_summary_mv_next, columns: [account_group_id, dim_transaction_date, position_type, currency_code, adjusted_net_flow, adjusted_net_flow_system_currency] } { output: [ flow_summary_mv_next.account_group_id, flow_summary_mv_next.dim_transaction_date, flow_summary_mv_next.position_type, flow_summary_mv_next.currency_code, flow_summary_mv_next.adjusted_net_flow, flow_summary_mv_next.adjusted_net_flow_system_currency ], stream key: [ flow_summary_mv_next.account_group_id, flow_summary_mv_next.currency_code, flow_summary_mv_next.position_type, flow_summary_mv_next.dim_transaction_date ] }
├── Upstream { output: [ account_group_id, dim_transaction_date, position_type, currency_code, adjusted_net_flow, adjusted_net_flow_system_currency ], stream key: [] }
└── BatchPlanNode { output: [ account_group_id, dim_transaction_date, position_type, currency_code, adjusted_net_flow, adjusted_net_flow_system_currency ], stream key: [] }