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

← cluster alinma_bff objects advisor_kpi_account_values_mv explain
Overview Objects Graph History
materialized view · alinma_bff.advisor_kpi_account_values_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 filtered
28 operators
Materialize · alinma_bff.advisor_kpi_account_values_mv
0% idle 2 actors
Project
2 actors
HashAgg Aggregation state — unbounded unless keyed or temporally filtered
0% idle 2 actors
LocalityProvider
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
Project
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore · Inner · advisor_kpi_account_product_class_mv.account_id = holding_v…
2 actors
HashJoin · Inner · advisor_kpi_account_product_class_mv.account_id = holding_v… 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
Filter · holding_values_latest_mv_next
0% idle 2 actors
StreamScan · holding_values_latest_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
StreamScan · advisor_kpi_account_product_class_mv
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 · alinma_bff.advisor_kpi_account_values_mv Materialize alinma_bff.advisor_kpi_… idle · 2 actors Project Project — · 2 actors HashAgg HashAgg idle · 2 actors LocalityProvider LocalityProvider 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 SyncLogStore · Inner · advisor_kpi_account_product_class_mv.account_id = holding_v… SyncLogStore Inner · advisor_kpi_acc… — · 2 actors HashJoin · Inner · advisor_kpi_account_product_class_mv.account_id = holding_v… HashJoin Inner · advisor_kpi_acc… 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 Filter · holding_values_latest_mv_next Filter holding_values_latest_m… idle · 2 actors StreamScan · holding_values_latest_mv_next StreamScan holding_values_latest_m… 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 StreamScan · advisor_kpi_account_product_class_mv StreamScan advisor_kpi_account_pro… 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 63481 (Actor 746293,746294)
StreamMaterialize { columns: [account_id, net_assets, relationship_value, aum, deposits, financing], stream_key: [account_id], pk_columns: [account_id], pk_conflict: NoCheck }
├── output: [ advisor_kpi_account_product_class_mv.account_id, sum(holding_values_latest_mv_next.market_value_system_currency), sum($expr1), sum($expr2), sum($expr3), sum($expr4) ]
├── stream key: [ advisor_kpi_account_product_class_mv.account_id ]
└── StreamProject { exprs: [advisor_kpi_account_product_class_mv.account_id, sum(holding_values_latest_mv_next.market_value_system_currency), sum($expr1), sum($expr2), sum($expr3), sum($expr4)] }
    ├── output: [ advisor_kpi_account_product_class_mv.account_id, sum(holding_values_latest_mv_next.market_value_system_currency), sum($expr1), sum($expr2), sum($expr3), sum($expr4) ]
    ├── stream key: [ advisor_kpi_account_product_class_mv.account_id ]
    └── StreamHashAgg { group_key: [advisor_kpi_account_product_class_mv.account_id], aggs: [sum(holding_values_latest_mv_next.market_value_system_currency), sum($expr1), sum($expr2), sum($expr3), sum($expr4), count] }
        ├── output: [ advisor_kpi_account_product_class_mv.account_id, sum(holding_values_latest_mv_next.market_value_system_currency), sum($expr1), sum($expr2), sum($expr3), sum($expr4), count ]
        ├── stream key: [ advisor_kpi_account_product_class_mv.account_id ]
        └── StreamLocalityProvider { locality_columns: [advisor_kpi_account_product_class_mv.account_id] }
            ├── output:
            │   ┌── advisor_kpi_account_product_class_mv.account_id
            │   ├── holding_values_latest_mv_next.market_value_system_currency
            │   ├── $expr1
            │   ├── $expr2
            │   ├── $expr3
            │   ├── $expr4
            │   ├── advisor_kpi_account_product_class_mv.accounts_dm.product_type_id
            │   ├── holding_values_latest_mv_next.asset_id
            │   └── holding_values_latest_mv_next.type
            ├── stream key:
            │   ┌── advisor_kpi_account_product_class_mv.account_id
            │   ├── advisor_kpi_account_product_class_mv.accounts_dm.product_type_id
            │   ├── holding_values_latest_mv_next.asset_id
            │   └── holding_values_latest_mv_next.type
            └── MergeExecutor
                ├── output:
                │   ┌── advisor_kpi_account_product_class_mv.account_id
                │   ├── holding_values_latest_mv_next.market_value_system_currency
                │   ├── $expr1
                │   ├── $expr2
                │   ├── $expr3
                │   ├── $expr4
                │   ├── advisor_kpi_account_product_class_mv.accounts_dm.product_type_id
                │   ├── holding_values_latest_mv_next.asset_id
                │   └── holding_values_latest_mv_next.type
                └── stream key:
                    ┌── advisor_kpi_account_product_class_mv.account_id
                    ├── advisor_kpi_account_product_class_mv.accounts_dm.product_type_id
                    ├── holding_values_latest_mv_next.asset_id
                    └── holding_values_latest_mv_next.type

Fragment 63482 (Actor 746292,746291)
StreamProject { exprs: [advisor_kpi_account_product_class_mv.account_id, holding_values_latest_mv_next.market_value_system_currency, Abs(holding_values_latest_mv_next.market_value_system_currency) as $expr1, Case((advisor_kpi_account_product_class_mv.product_class = 'AUM':Varchar), holding_values_latest_mv_next.market_value_system_currency, 0:Decimal) as $expr2, Case((advisor_kpi_account_product_class_mv.product_class = 'DEPOSITS':Varchar), holding_values_latest_mv_next.market_value_system_currency, 0:Decimal) as $expr3, Case((advisor_kpi_account_product_class_mv.product_class = 'FINANCING':Varchar), Abs(holding_values_latest_mv_next.market_value_system_currency), 0:Decimal) as $expr4, advisor_kpi_account_product_class_mv.accounts_dm.product_type_id, holding_values_latest_mv_next.asset_id, holding_values_latest_mv_next.type] }
├── output: [ advisor_kpi_account_product_class_mv.account_id, holding_values_latest_mv_next.market_value_system_currency, $expr1, $expr2, $expr3, $expr4, advisor_kpi_account_product_class_mv.accounts_dm.product_type_id, holding_values_latest_mv_next.asset_id, holding_values_latest_mv_next.type ]
├── stream key: [ advisor_kpi_account_product_class_mv.account_id, advisor_kpi_account_product_class_mv.accounts_dm.product_type_id, holding_values_latest_mv_next.asset_id, holding_values_latest_mv_next.type ]
└── MergeExecutor { output: [ advisor_kpi_account_product_class_mv.account_id, advisor_kpi_account_product_class_mv.product_class, holding_values_latest_mv_next.market_value_system_currency, advisor_kpi_account_product_class_mv.accounts_dm.product_type_id, holding_values_latest_mv_next.account_id, holding_values_latest_mv_next.asset_id, holding_values_latest_mv_next.type ], stream key: [ advisor_kpi_account_product_class_mv.account_id, advisor_kpi_account_product_class_mv.accounts_dm.product_type_id, holding_values_latest_mv_next.asset_id, holding_values_latest_mv_next.type ] }

Fragment 63483 (Actor 746295,746296)
StreamSyncLogStore { output: [ advisor_kpi_account_product_class_mv.account_id, advisor_kpi_account_product_class_mv.product_class, holding_values_latest_mv_next.market_value_system_currency, advisor_kpi_account_product_class_mv.accounts_dm.product_type_id, holding_values_latest_mv_next.account_id, holding_values_latest_mv_next.asset_id, holding_values_latest_mv_next.type ], stream key: [ advisor_kpi_account_product_class_mv.account_id, advisor_kpi_account_product_class_mv.accounts_dm.product_type_id, holding_values_latest_mv_next.asset_id, holding_values_latest_mv_next.type ] }
└── StreamHashJoin { type: Inner, predicate: advisor_kpi_account_product_class_mv.account_id = holding_values_latest_mv_next.account_id } { output: [ advisor_kpi_account_product_class_mv.account_id, advisor_kpi_account_product_class_mv.product_class, holding_values_latest_mv_next.market_value_system_currency, advisor_kpi_account_product_class_mv.accounts_dm.product_type_id, holding_values_latest_mv_next.account_id, holding_values_latest_mv_next.asset_id, holding_values_latest_mv_next.type ], stream key: [ advisor_kpi_account_product_class_mv.account_id, advisor_kpi_account_product_class_mv.accounts_dm.product_type_id, holding_values_latest_mv_next.asset_id, holding_values_latest_mv_next.type ] }
    ├── MergeExecutor { output: [ advisor_kpi_account_product_class_mv.account_id, advisor_kpi_account_product_class_mv.product_class, advisor_kpi_account_product_class_mv.accounts_dm.product_type_id ], stream key: [ advisor_kpi_account_product_class_mv.account_id, advisor_kpi_account_product_class_mv.accounts_dm.product_type_id ] }
    └── MergeExecutor { output: [ holding_values_latest_mv_next.account_id, holding_values_latest_mv_next.market_value_system_currency, holding_values_latest_mv_next.asset_id, holding_values_latest_mv_next.type ], stream key: [ holding_values_latest_mv_next.account_id, holding_values_latest_mv_next.asset_id, holding_values_latest_mv_next.type ] }

Fragment 63484 (Actor 746298,746297)
StreamLocalityProvider { locality_columns: [advisor_kpi_account_product_class_mv.account_id] } { output: [ advisor_kpi_account_product_class_mv.account_id, advisor_kpi_account_product_class_mv.product_class, advisor_kpi_account_product_class_mv.accounts_dm.product_type_id ], stream key: [ advisor_kpi_account_product_class_mv.account_id, advisor_kpi_account_product_class_mv.accounts_dm.product_type_id ] }
└── MergeExecutor { output: [ advisor_kpi_account_product_class_mv.account_id, advisor_kpi_account_product_class_mv.product_class, advisor_kpi_account_product_class_mv.accounts_dm.product_type_id ], stream key: [ advisor_kpi_account_product_class_mv.accounts_dm.product_type_id, advisor_kpi_account_product_class_mv.account_id ] }

Fragment 63485 (Actor 746309,746310)
StreamTableScan { table: advisor_kpi_account_product_class_mv, columns: [account_id, product_class, accounts_dm.product_type_id] } { output: [ advisor_kpi_account_product_class_mv.account_id, advisor_kpi_account_product_class_mv.product_class, advisor_kpi_account_product_class_mv.accounts_dm.product_type_id ], stream key: [ advisor_kpi_account_product_class_mv.accounts_dm.product_type_id, advisor_kpi_account_product_class_mv.account_id ] }
├── Upstream { output: [ account_id, product_class, accounts_dm.product_type_id ], stream key: [] }
└── BatchPlanNode { output: [ account_id, product_class, accounts_dm.product_type_id ], stream key: [] }

Fragment 63486 (Actor 746299,746300)
StreamLocalityProvider { locality_columns: [holding_values_latest_mv_next.account_id] } { output: [ holding_values_latest_mv_next.account_id, holding_values_latest_mv_next.market_value_system_currency, holding_values_latest_mv_next.asset_id, holding_values_latest_mv_next.type ], stream key: [ holding_values_latest_mv_next.account_id, holding_values_latest_mv_next.asset_id, holding_values_latest_mv_next.type ] }
└── MergeExecutor { output: [ holding_values_latest_mv_next.account_id, holding_values_latest_mv_next.market_value_system_currency, holding_values_latest_mv_next.asset_id, holding_values_latest_mv_next.type ], stream key: [ holding_values_latest_mv_next.account_id, holding_values_latest_mv_next.asset_id, holding_values_latest_mv_next.type ] }

Fragment 63487 (Actor 746301,746302)
StreamFilter { predicate: Not(IsNull(holding_values_latest_mv_next.market_value_system_currency)) } { output: [ holding_values_latest_mv_next.account_id, holding_values_latest_mv_next.market_value_system_currency, holding_values_latest_mv_next.asset_id, holding_values_latest_mv_next.type ], stream key: [ holding_values_latest_mv_next.account_id, holding_values_latest_mv_next.asset_id, holding_values_latest_mv_next.type ] }
└── StreamTableScan { table: holding_values_latest_mv_next, columns: [account_id, market_value_system_currency, asset_id, type] } { output: [ holding_values_latest_mv_next.account_id, holding_values_latest_mv_next.market_value_system_currency, holding_values_latest_mv_next.asset_id, holding_values_latest_mv_next.type ], stream key: [ holding_values_latest_mv_next.account_id, holding_values_latest_mv_next.asset_id, holding_values_latest_mv_next.type ] }
    ├── Upstream { output: [ account_id, market_value_system_currency, asset_id, type ], stream key: [] }
    └── BatchPlanNode { output: [ account_id, market_value_system_currency, asset_id, type ], stream key: [] }