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

← cluster adib_rm objects sdk_order_execution_aggregates_mv explain
Overview Objects Graph History
materialized view · adib_rm.sdk_order_execution_aggregates_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
16 operators
Materialize · adib_rm.sdk_order_execution_aggregates_mv
0% idle 2 actors
Project · Inner · order_executions.order_id = orders_next.id
2 actors
HashAgg · Inner · order_executions.order_id = orders_next.id Aggregation state — unbounded unless keyed or temporally filtered
0% idle 2 actors
Project · Inner · order_executions.order_id = orders_next.id
2 actors
Project · Inner · order_executions.order_id = orders_next.id
2 actors
HashJoin · Inner · order_executions.order_id = orders_next.id 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
StreamScan · orders_next
0% idle 2 actors
BatchPlan
2 actors
Merge
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
StreamScan · order_executions
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 · adib_rm.sdk_order_execution_aggregates_mv Materialize adib_rm.sdk_order_execu… idle · 2 actors Project · Inner · order_executions.order_id = orders_next.id Project Inner · order_execution… — · 2 actors HashAgg · Inner · order_executions.order_id = orders_next.id HashAgg Inner · order_execution… idle · 2 actors Project · Inner · order_executions.order_id = orders_next.id Project Inner · order_execution… — · 2 actors Project · Inner · order_executions.order_id = orders_next.id Project Inner · order_execution… — · 2 actors HashJoin · Inner · order_executions.order_id = orders_next.id HashJoin Inner · order_execution… idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors StreamScan · orders_next StreamScan orders_next idle · 2 actors BatchPlan BatchPlan — · 2 actors Merge Merge — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors StreamScan · order_executions StreamScan order_executions 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 9227 (Actor 96771,96772)
StreamMaterialize { columns: [order_id, filled_quantity, total_amount, total_fees, average_price, execution_currency_code], stream_key: [order_id], pk_columns: [order_id], pk_conflict: NoCheck } { output: [ order_executions.order_id, sum($expr1), sum($expr2), sum($expr3), $expr5, max($expr4) ], stream key: [ order_executions.order_id ] }
└── StreamProject { exprs: [order_executions.order_id, sum($expr1), sum($expr2), sum($expr3), (sum($expr2) / Case((sum($expr1) = 0:Decimal), null:Decimal, sum($expr1))) as $expr5, max($expr4)] } { output: [ order_executions.order_id, sum($expr1), sum($expr2), sum($expr3), $expr5, max($expr4) ], stream key: [ order_executions.order_id ] }
    └── StreamHashAgg { group_key: [order_executions.order_id], aggs: [sum($expr1), sum($expr2), sum($expr3), max($expr4), count] } { output: [ order_executions.order_id, sum($expr1), sum($expr2), sum($expr3), max($expr4), count ], stream key: [ order_executions.order_id ] }
        └── StreamProject { exprs: [order_executions.order_id, $expr1, ($expr1 * JsonbAccessStr(JsonbAccess(order_executions.price, 'amount':Varchar), 'value':Varchar)::Decimal) as $expr2, JsonbAccessStr(JsonbAccess(order_executions.commission, 'amount':Varchar), 'value':Varchar)::Decimal as $expr3, JsonbAccessStr(JsonbAccess(order_executions.price, 'currency_code':Varchar), 'value':Varchar) as $expr4, order_executions.id, order_executions.executed_at, orders_next.created_at] }
            ├── output: [ order_executions.order_id, $expr1, $expr2, $expr3, $expr4, order_executions.id, order_executions.executed_at, orders_next.created_at ]
            ├── stream key: [ order_executions.id, order_executions.executed_at, orders_next.created_at, order_executions.order_id ]
            └── StreamProject { exprs: [order_executions.order_id, order_executions.quantity, order_executions.price, order_executions.commission, order_executions.quantity::Decimal as $expr1, order_executions.id, order_executions.executed_at, orders_next.created_at] }
                ├── output: [ order_executions.order_id, order_executions.quantity, order_executions.price, order_executions.commission, $expr1, order_executions.id, order_executions.executed_at, orders_next.created_at ]
                ├── stream key: [ order_executions.id, order_executions.executed_at, orders_next.created_at, order_executions.order_id ]
                └── StreamHashJoin { type: Inner, predicate: order_executions.order_id = orders_next.id } { output: [ order_executions.order_id, order_executions.quantity, order_executions.price, order_executions.commission, order_executions.id, order_executions.executed_at, orders_next.id, orders_next.created_at ], stream key: [ order_executions.id, order_executions.executed_at, orders_next.created_at, order_executions.order_id ] }
                    ├── MergeExecutor { output: [ order_executions.order_id, order_executions.quantity, order_executions.price, order_executions.commission, order_executions.id, order_executions.executed_at ], stream key: [ order_executions.id, order_executions.executed_at ] }
                    └── MergeExecutor { output: [ orders_next.id, orders_next.created_at ], stream key: [ orders_next.id, orders_next.created_at ] }

Fragment 9228 (Actor 98462,98463)
StreamTableScan { table: order_executions, columns: [order_id, quantity, price, commission, id, executed_at] } { output: [ order_executions.order_id, order_executions.quantity, order_executions.price, order_executions.commission, order_executions.id, order_executions.executed_at ], stream key: [ order_executions.id, order_executions.executed_at ] }
├── Upstream { output: [ order_id, quantity, price, commission, id, executed_at ], stream key: [] }
└── BatchPlanNode { output: [ order_id, quantity, price, commission, id, executed_at ], stream key: [] }

Fragment 9229 (Actor 98550,98549)
StreamTableScan { table: orders_next, columns: [id, created_at] } { output: [ orders_next.id, orders_next.created_at ], stream key: [ orders_next.id, orders_next.created_at ] }
├── Upstream { output: [ id, created_at ], stream key: [] }
└── BatchPlanNode { output: [ id, created_at ], stream key: [] }