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

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

Job is idle — throughput ~0; structure shown.

Aggregation state — unbounded unless keyed or temporally filtered
10 operators
Materialize · opportunity.signal_portfolio_allocation_drift_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 · portfolio_allocation_drift_breaches_mv_next
2 actors
StreamScan · portfolio_allocation_drift_breaches_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_allocation_drift_mv Materialize opportunity.signal_port… 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 · portfolio_allocation_drift_breaches_mv_next Project portfolio_allocation_dr… — · 2 actors StreamScan · portfolio_allocation_drift_breaches_mv_next StreamScan portfolio_allocation_dr… 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 62133 (Actor 741190,741191)
StreamMaterialize { columns: [opportunity_id, activity_name, resource_id, fact_date], stream_key: [opportunity_id, activity_name, resource_id, fact_date], pk_columns: [opportunity_id, activity_name, resource_id, fact_date], pk_conflict: NoCheck }
├── output: [ portfolio_allocation_drift_breaches_mv_next.opportunity_id, 'GET_PORTFOLIO_ALLOCATION_DRIFT_PERCENTAGE':Varchar, portfolio_allocation_drift_breaches_mv_next.resource_id, portfolio_allocation_drift_breaches_mv_next.fact_date ]
├── stream key: [ portfolio_allocation_drift_breaches_mv_next.opportunity_id, 'GET_PORTFOLIO_ALLOCATION_DRIFT_PERCENTAGE':Varchar, portfolio_allocation_drift_breaches_mv_next.resource_id, portfolio_allocation_drift_breaches_mv_next.fact_date ]
└── StreamProject { exprs: [portfolio_allocation_drift_breaches_mv_next.opportunity_id, 'GET_PORTFOLIO_ALLOCATION_DRIFT_PERCENTAGE':Varchar, portfolio_allocation_drift_breaches_mv_next.resource_id, portfolio_allocation_drift_breaches_mv_next.fact_date] }
    ├── output: [ portfolio_allocation_drift_breaches_mv_next.opportunity_id, 'GET_PORTFOLIO_ALLOCATION_DRIFT_PERCENTAGE':Varchar, portfolio_allocation_drift_breaches_mv_next.resource_id, portfolio_allocation_drift_breaches_mv_next.fact_date ]
    ├── stream key: [ portfolio_allocation_drift_breaches_mv_next.opportunity_id, 'GET_PORTFOLIO_ALLOCATION_DRIFT_PERCENTAGE':Varchar, portfolio_allocation_drift_breaches_mv_next.resource_id, portfolio_allocation_drift_breaches_mv_next.fact_date ]
    └── StreamHashAgg { group_key: [portfolio_allocation_drift_breaches_mv_next.opportunity_id, 'GET_PORTFOLIO_ALLOCATION_DRIFT_PERCENTAGE':Varchar, portfolio_allocation_drift_breaches_mv_next.resource_id, portfolio_allocation_drift_breaches_mv_next.fact_date], aggs: [count] }
        ├── output: [ portfolio_allocation_drift_breaches_mv_next.opportunity_id, 'GET_PORTFOLIO_ALLOCATION_DRIFT_PERCENTAGE':Varchar, portfolio_allocation_drift_breaches_mv_next.resource_id, portfolio_allocation_drift_breaches_mv_next.fact_date, count ]
        ├── stream key: [ portfolio_allocation_drift_breaches_mv_next.opportunity_id, 'GET_PORTFOLIO_ALLOCATION_DRIFT_PERCENTAGE':Varchar, portfolio_allocation_drift_breaches_mv_next.resource_id, portfolio_allocation_drift_breaches_mv_next.fact_date ]
        └── StreamLocalityProvider { locality_columns: [portfolio_allocation_drift_breaches_mv_next.opportunity_id, 'GET_PORTFOLIO_ALLOCATION_DRIFT_PERCENTAGE':Varchar, portfolio_allocation_drift_breaches_mv_next.resource_id, portfolio_allocation_drift_breaches_mv_next.fact_date] }
            ├── output:
            │   ┌── portfolio_allocation_drift_breaches_mv_next.opportunity_id
            │   ├── 'GET_PORTFOLIO_ALLOCATION_DRIFT_PERCENTAGE':Varchar
            │   ├── portfolio_allocation_drift_breaches_mv_next.resource_id
            │   ├── portfolio_allocation_drift_breaches_mv_next.fact_date
            │   ├── portfolio_allocation_drift_breaches_mv_next.'GET_PORTFOLIO_ALLOCATION_DRIFT_PERCENTAGE':Varchar
            │   ├── portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.distribution_type
            │   ├── portfolio_allocation_drift_breaches_mv_next.taxonomy_node_id
            │   ├── portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.account_group_id
            │   ├── portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.position_type
            │   ├── portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.currency_code
            │   ├── portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.source_entity_type
            │   ├── portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.taxonomy_code
            │   ├── portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.position_summary_mv_next.source_entity_type
            │   ├── portfolio_allocation_drift_breaches_mv_next.portfolio_to_account_groups_mv.$src
            │   ├── portfolio_allocation_drift_breaches_mv_next.portfolios_dm.benchmark_id
            │   ├── portfolio_allocation_drift_breaches_mv_next.benchmark_values_by_distribution_mv.taxonomy_code
            │   ├── portfolio_allocation_drift_breaches_mv_next.opportunity_conditions_mv._rw_projected_row_id
            │   └── portfolio_allocation_drift_breaches_mv_next.opportunity_conditions_mv._rw_projected_row_id#1
            ├── stream key:
            │   ┌── portfolio_allocation_drift_breaches_mv_next.opportunity_id
            │   ├── 'GET_PORTFOLIO_ALLOCATION_DRIFT_PERCENTAGE':Varchar
            │   ├── portfolio_allocation_drift_breaches_mv_next.resource_id
            │   ├── portfolio_allocation_drift_breaches_mv_next.fact_date
            │   ├── portfolio_allocation_drift_breaches_mv_next.'GET_PORTFOLIO_ALLOCATION_DRIFT_PERCENTAGE':Varchar
            │   ├── portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.distribution_type
            │   ├── portfolio_allocation_drift_breaches_mv_next.taxonomy_node_id
            │   ├── portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.account_group_id
            │   ├── portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.position_type
            │   ├── portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.currency_code
            │   ├── portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.source_entity_type
            │   ├── portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.taxonomy_code
            │   ├── portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.position_summary_mv_next.source_entity_type
            │   ├── portfolio_allocation_drift_breaches_mv_next.portfolio_to_account_groups_mv.$src
            │   ├── portfolio_allocation_drift_breaches_mv_next.portfolios_dm.benchmark_id
            │   ├── portfolio_allocation_drift_breaches_mv_next.benchmark_values_by_distribution_mv.taxonomy_code
            │   ├── portfolio_allocation_drift_breaches_mv_next.opportunity_conditions_mv._rw_projected_row_id
            │   └── portfolio_allocation_drift_breaches_mv_next.opportunity_conditions_mv._rw_projected_row_id#1
            └── MergeExecutor
                ├── output:
                │   ┌── portfolio_allocation_drift_breaches_mv_next.opportunity_id
                │   ├── 'GET_PORTFOLIO_ALLOCATION_DRIFT_PERCENTAGE':Varchar
                │   ├── portfolio_allocation_drift_breaches_mv_next.resource_id
                │   ├── portfolio_allocation_drift_breaches_mv_next.fact_date
                │   ├── portfolio_allocation_drift_breaches_mv_next.'GET_PORTFOLIO_ALLOCATION_DRIFT_PERCENTAGE':Varchar
                │   ├── portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.distribution_type
                │   ├── portfolio_allocation_drift_breaches_mv_next.taxonomy_node_id
                │   ├── portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.account_group_id
                │   ├── portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.position_type
                │   ├── portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.currency_code
                │   ├── portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.source_entity_type
                │   ├── portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.taxonomy_code
                │   ├── portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.position_summary_mv_next.source_entity_type
                │   ├── portfolio_allocation_drift_breaches_mv_next.portfolio_to_account_groups_mv.$src
                │   ├── portfolio_allocation_drift_breaches_mv_next.portfolios_dm.benchmark_id
                │   ├── portfolio_allocation_drift_breaches_mv_next.benchmark_values_by_distribution_mv.taxonomy_code
                │   ├── portfolio_allocation_drift_breaches_mv_next.opportunity_conditions_mv._rw_projected_row_id
                │   └── portfolio_allocation_drift_breaches_mv_next.opportunity_conditions_mv._rw_projected_row_id#1
                └── stream key:
                    ┌── portfolio_allocation_drift_breaches_mv_next.'GET_PORTFOLIO_ALLOCATION_DRIFT_PERCENTAGE':Varchar
                    ├── portfolio_allocation_drift_breaches_mv_next.resource_id
                    ├── portfolio_allocation_drift_breaches_mv_next.fact_date
                    ├── portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.distribution_type
                    ├── portfolio_allocation_drift_breaches_mv_next.taxonomy_node_id
                    ├── portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.account_group_id
                    ├── portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.position_type
                    ├── portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.currency_code
                    ├── portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.source_entity_type
                    ├── portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.taxonomy_code
                    ├── portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.position_summary_mv_next.source_entity_type
                    ├── portfolio_allocation_drift_breaches_mv_next.portfolio_to_account_groups_mv.$src
                    ├── portfolio_allocation_drift_breaches_mv_next.portfolios_dm.benchmark_id
                    ├── portfolio_allocation_drift_breaches_mv_next.benchmark_values_by_distribution_mv.taxonomy_code
                    ├── portfolio_allocation_drift_breaches_mv_next.opportunity_id
                    ├── portfolio_allocation_drift_breaches_mv_next.opportunity_conditions_mv._rw_projected_row_id
                    └── portfolio_allocation_drift_breaches_mv_next.opportunity_conditions_mv._rw_projected_row_id#1

Fragment 62134 (Actor 741192,741193)
StreamProject { exprs: [portfolio_allocation_drift_breaches_mv_next.opportunity_id, 'GET_PORTFOLIO_ALLOCATION_DRIFT_PERCENTAGE':Varchar, portfolio_allocation_drift_breaches_mv_next.resource_id, portfolio_allocation_drift_breaches_mv_next.fact_date, portfolio_allocation_drift_breaches_mv_next.'GET_PORTFOLIO_ALLOCATION_DRIFT_PERCENTAGE':Varchar, portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.distribution_type, portfolio_allocation_drift_breaches_mv_next.taxonomy_node_id, portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.account_group_id, portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.position_type, portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.currency_code, portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.source_entity_type, portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.taxonomy_code, portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.position_summary_mv_next.source_entity_type, portfolio_allocation_drift_breaches_mv_next.portfolio_to_account_groups_mv.$src, portfolio_allocation_drift_breaches_mv_next.portfolios_dm.benchmark_id, portfolio_allocation_drift_breaches_mv_next.benchmark_values_by_distribution_mv.taxonomy_code, portfolio_allocation_drift_breaches_mv_next.opportunity_conditions_mv._rw_projected_row_id, portfolio_allocation_drift_breaches_mv_next.opportunity_conditions_mv._rw_projected_row_id#1] }
├── output: [ portfolio_allocation_drift_breaches_mv_next.opportunity_id, 'GET_PORTFOLIO_ALLOCATION_DRIFT_PERCENTAGE':Varchar, portfolio_allocation_drift_breaches_mv_next.resource_id, portfolio_allocation_drift_breaches_mv_next.fact_date, portfolio_allocation_drift_breaches_mv_next.'GET_PORTFOLIO_ALLOCATION_DRIFT_PERCENTAGE':Varchar, portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.distribution_type, portfolio_allocation_drift_breaches_mv_next.taxonomy_node_id, portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.account_group_id, portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.position_type, portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.currency_code, portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.source_entity_type, portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.taxonomy_code, portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.position_summary_mv_next.source_entity_type, portfolio_allocation_drift_breaches_mv_next.portfolio_to_account_groups_mv.$src, portfolio_allocation_drift_breaches_mv_next.portfolios_dm.benchmark_id, portfolio_allocation_drift_breaches_mv_next.benchmark_values_by_distribution_mv.taxonomy_code, portfolio_allocation_drift_breaches_mv_next.opportunity_conditions_mv._rw_projected_row_id, portfolio_allocation_drift_breaches_mv_next.opportunity_conditions_mv._rw_projected_row_id#1 ]
├── stream key: [ portfolio_allocation_drift_breaches_mv_next.'GET_PORTFOLIO_ALLOCATION_DRIFT_PERCENTAGE':Varchar, portfolio_allocation_drift_breaches_mv_next.resource_id, portfolio_allocation_drift_breaches_mv_next.fact_date, portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.distribution_type, portfolio_allocation_drift_breaches_mv_next.taxonomy_node_id, portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.account_group_id, portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.position_type, portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.currency_code, portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.source_entity_type, portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.taxonomy_code, portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.position_summary_mv_next.source_entity_type, portfolio_allocation_drift_breaches_mv_next.portfolio_to_account_groups_mv.$src, portfolio_allocation_drift_breaches_mv_next.portfolios_dm.benchmark_id, portfolio_allocation_drift_breaches_mv_next.benchmark_values_by_distribution_mv.taxonomy_code, portfolio_allocation_drift_breaches_mv_next.opportunity_id, portfolio_allocation_drift_breaches_mv_next.opportunity_conditions_mv._rw_projected_row_id, portfolio_allocation_drift_breaches_mv_next.opportunity_conditions_mv._rw_projected_row_id#1 ]
└── StreamTableScan { table: portfolio_allocation_drift_breaches_mv_next, columns: [opportunity_id, resource_id, fact_date, 'GET_PORTFOLIO_ALLOCATION_DRIFT_PERCENTAGE':Varchar, position_by_distribution_mv_next.distribution_type, taxonomy_node_id, position_by_distribution_mv_next.account_group_id, position_by_distribution_mv_next.position_type, position_by_distribution_mv_next.currency_code, position_by_distribution_mv_next.source_entity_type, position_by_distribution_mv_next.taxonomy_code, position_by_distribution_mv_next.position_summary_mv_next.source_entity_type, portfolio_to_account_groups_mv.$src, portfolios_dm.benchmark_id, benchmark_values_by_distribution_mv.taxonomy_code, opportunity_conditions_mv._rw_projected_row_id, opportunity_conditions_mv._rw_projected_row_id#1] }
    ├── output: [ portfolio_allocation_drift_breaches_mv_next.opportunity_id, portfolio_allocation_drift_breaches_mv_next.resource_id, portfolio_allocation_drift_breaches_mv_next.fact_date, portfolio_allocation_drift_breaches_mv_next.'GET_PORTFOLIO_ALLOCATION_DRIFT_PERCENTAGE':Varchar, portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.distribution_type, portfolio_allocation_drift_breaches_mv_next.taxonomy_node_id, portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.account_group_id, portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.position_type, portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.currency_code, portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.source_entity_type, portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.taxonomy_code, portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.position_summary_mv_next.source_entity_type, portfolio_allocation_drift_breaches_mv_next.portfolio_to_account_groups_mv.$src, portfolio_allocation_drift_breaches_mv_next.portfolios_dm.benchmark_id, portfolio_allocation_drift_breaches_mv_next.benchmark_values_by_distribution_mv.taxonomy_code, portfolio_allocation_drift_breaches_mv_next.opportunity_conditions_mv._rw_projected_row_id, portfolio_allocation_drift_breaches_mv_next.opportunity_conditions_mv._rw_projected_row_id#1 ]
    ├── stream key: [ portfolio_allocation_drift_breaches_mv_next.'GET_PORTFOLIO_ALLOCATION_DRIFT_PERCENTAGE':Varchar, portfolio_allocation_drift_breaches_mv_next.resource_id, portfolio_allocation_drift_breaches_mv_next.fact_date, portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.distribution_type, portfolio_allocation_drift_breaches_mv_next.taxonomy_node_id, portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.account_group_id, portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.position_type, portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.currency_code, portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.source_entity_type, portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.taxonomy_code, portfolio_allocation_drift_breaches_mv_next.position_by_distribution_mv_next.position_summary_mv_next.source_entity_type, portfolio_allocation_drift_breaches_mv_next.portfolio_to_account_groups_mv.$src, portfolio_allocation_drift_breaches_mv_next.portfolios_dm.benchmark_id, portfolio_allocation_drift_breaches_mv_next.benchmark_values_by_distribution_mv.taxonomy_code, portfolio_allocation_drift_breaches_mv_next.opportunity_id, portfolio_allocation_drift_breaches_mv_next.opportunity_conditions_mv._rw_projected_row_id, portfolio_allocation_drift_breaches_mv_next.opportunity_conditions_mv._rw_projected_row_id#1 ]
    ├── Upstream { output: [ opportunity_id, resource_id, fact_date, 'GET_PORTFOLIO_ALLOCATION_DRIFT_PERCENTAGE':Varchar, position_by_distribution_mv_next.distribution_type, taxonomy_node_id, position_by_distribution_mv_next.account_group_id, position_by_distribution_mv_next.position_type, position_by_distribution_mv_next.currency_code, position_by_distribution_mv_next.source_entity_type, position_by_distribution_mv_next.taxonomy_code, position_by_distribution_mv_next.position_summary_mv_next.source_entity_type, portfolio_to_account_groups_mv.$src, portfolios_dm.benchmark_id, benchmark_values_by_distribution_mv.taxonomy_code, opportunity_conditions_mv._rw_projected_row_id, opportunity_conditions_mv._rw_projected_row_id#1 ], stream key: [] }
    └── BatchPlanNode { output: [ opportunity_id, resource_id, fact_date, 'GET_PORTFOLIO_ALLOCATION_DRIFT_PERCENTAGE':Varchar, position_by_distribution_mv_next.distribution_type, taxonomy_node_id, position_by_distribution_mv_next.account_group_id, position_by_distribution_mv_next.position_type, position_by_distribution_mv_next.currency_code, position_by_distribution_mv_next.source_entity_type, position_by_distribution_mv_next.taxonomy_code, position_by_distribution_mv_next.position_summary_mv_next.source_entity_type, portfolio_to_account_groups_mv.$src, portfolios_dm.benchmark_id, benchmark_values_by_distribution_mv.taxonomy_code, opportunity_conditions_mv._rw_projected_row_id, opportunity_conditions_mv._rw_projected_row_id#1 ], stream key: [] }