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

← cluster insights objects asset_distributions_for_consumers_mv explain
Overview Objects Graph History
materialized view · insights.asset_distributions_for_consumers_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
33 operators
Materialize · insights.asset_distributions_for_consumers_mv
0% idle 2 actors
Project
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore · LeftOuter · taxonomy_nodes_dm.dimension_id = taxonomy_dimensions_dm.dim…
2 actors
HashJoin · LeftOuter · taxonomy_nodes_dm.dimension_id = taxonomy_dimensions_dm.dim… 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 · taxonomy_dimensions_dm
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
SyncLogStore · Inner · asset_distributions_dm.taxonomy_node_id = taxonomy_nodes_dm…
2 actors
HashJoin · Inner · asset_distributions_dm.taxonomy_node_id = taxonomy_nodes_dm… 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
Project · taxonomy_nodes_dm
2 actors
Filter · taxonomy_nodes_dm
0% idle 2 actors
StreamScan · taxonomy_nodes_dm
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 · asset_distributions_dm
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.asset_distributions_for_consumers_mv Materialize insights.asset_distribu… idle · 2 actors Project Project — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore · LeftOuter · taxonomy_nodes_dm.dimension_id = taxonomy_dimensions_dm.dim… SyncLogStore LeftOuter · taxonomy_no… — · 2 actors HashJoin · LeftOuter · taxonomy_nodes_dm.dimension_id = taxonomy_dimensions_dm.dim… HashJoin LeftOuter · taxonomy_no… idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors StreamScan · taxonomy_dimensions_dm StreamScan taxonomy_dimensions_dm 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 SyncLogStore · Inner · asset_distributions_dm.taxonomy_node_id = taxonomy_nodes_dm… SyncLogStore Inner · asset_distribut… — · 2 actors HashJoin · Inner · asset_distributions_dm.taxonomy_node_id = taxonomy_nodes_dm… HashJoin Inner · asset_distribut… idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors Project · taxonomy_nodes_dm Project taxonomy_nodes_dm — · 2 actors Filter · taxonomy_nodes_dm Filter taxonomy_nodes_dm idle · 2 actors StreamScan · taxonomy_nodes_dm StreamScan taxonomy_nodes_dm 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 · asset_distributions_dm StreamScan asset_distributions_dm 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 62516 (Actor 742913,742912)
StreamMaterialize { columns: [asset_id, distribution_type, effective_start_date, effective_end_date, item_id, taxonomy_node_id, taxonomy_code, share, taxonomy_nodes_dm.dimension_id(hidden), asset_distributions_dm.dimension(hidden)], stream_key: [taxonomy_nodes_dm.dimension_id, taxonomy_node_id, asset_id, asset_distributions_dm.dimension, effective_start_date], pk_columns: [taxonomy_nodes_dm.dimension_id, taxonomy_node_id, asset_id, asset_distributions_dm.dimension, effective_start_date], pk_conflict: NoCheck } { output: [ asset_distributions_dm.asset_id, $expr1, asset_distributions_dm.effective_start_date, $expr2, taxonomy_nodes_dm.code, asset_distributions_dm.taxonomy_node_id, taxonomy_dimensions_dm.code, asset_distributions_dm.percentage, taxonomy_nodes_dm.dimension_id, asset_distributions_dm.dimension ], stream key: [ taxonomy_nodes_dm.dimension_id, asset_distributions_dm.taxonomy_node_id, asset_distributions_dm.asset_id, asset_distributions_dm.dimension, asset_distributions_dm.effective_start_date ] }
└── StreamProject { exprs: [asset_distributions_dm.asset_id, Case((asset_distributions_dm.dimension = 'ASSET_CLASS':Varchar), 'asset_classes':Varchar, (asset_distributions_dm.dimension = 'SECTOR':Varchar), 'sectors':Varchar, (asset_distributions_dm.dimension = 'INDUSTRY_GROUP':Varchar), 'industry_groups':Varchar, (asset_distributions_dm.dimension = 'INDUSTRY':Varchar), 'industries':Varchar, (asset_distributions_dm.dimension = 'SUB_INDUSTRY':Varchar), 'sub_industries':Varchar, (asset_distributions_dm.dimension = 'COUNTRY_OF_RISK':Varchar), 'country_of_risks':Varchar, (asset_distributions_dm.dimension = 'GEOGRAPHY':Varchar), 'regions':Varchar, (asset_distributions_dm.dimension = 'MARKET_CAP':Varchar), 'market_caps':Varchar, (asset_distributions_dm.dimension = 'INVESTMENT_STYLE':Varchar), 'investment_styles':Varchar, (asset_distributions_dm.dimension = 'LIQUIDITY':Varchar), 'liquidities':Varchar, (asset_distributions_dm.dimension = 'FIXED_INCOME_SECTOR':Varchar), 'fixed_income_sectors':Varchar, (asset_distributions_dm.dimension = 'BOND_CATEGORY':Varchar), 'bond_categories':Varchar, (asset_distributions_dm.dimension = 'CREDIT_QUALITY':Varchar), 'credit_qualities':Varchar, (asset_distributions_dm.dimension = 'CURRENCY':Varchar), 'currencies':Varchar, (asset_distributions_dm.dimension = 'DEBTOR_DOMICILE':Varchar), 'debtor_domiciles':Varchar, (asset_distributions_dm.dimension = 'MATURITY':Varchar), 'maturities':Varchar) as $expr1, asset_distributions_dm.effective_start_date, Coalesce(asset_distributions_dm.effective_end_date, '9999-12-31':Date) as $expr2, taxonomy_nodes_dm.code, asset_distributions_dm.taxonomy_node_id, taxonomy_dimensions_dm.code, asset_distributions_dm.percentage, taxonomy_nodes_dm.dimension_id, asset_distributions_dm.dimension] }
    ├── output: [ asset_distributions_dm.asset_id, $expr1, asset_distributions_dm.effective_start_date, $expr2, taxonomy_nodes_dm.code, asset_distributions_dm.taxonomy_node_id, taxonomy_dimensions_dm.code, asset_distributions_dm.percentage, taxonomy_nodes_dm.dimension_id, asset_distributions_dm.dimension ]
    ├── stream key: [ taxonomy_nodes_dm.dimension_id, asset_distributions_dm.taxonomy_node_id, asset_distributions_dm.asset_id, asset_distributions_dm.dimension, asset_distributions_dm.effective_start_date ]
    └── MergeExecutor { output: [ asset_distributions_dm.asset_id, asset_distributions_dm.dimension, asset_distributions_dm.taxonomy_node_id, asset_distributions_dm.percentage, asset_distributions_dm.effective_start_date, asset_distributions_dm.effective_end_date, taxonomy_nodes_dm.code, taxonomy_dimensions_dm.code, taxonomy_nodes_dm.dimension_id, taxonomy_dimensions_dm.dimension_id ], stream key: [ taxonomy_nodes_dm.dimension_id, asset_distributions_dm.taxonomy_node_id, asset_distributions_dm.asset_id, asset_distributions_dm.dimension, asset_distributions_dm.effective_start_date ] }

Fragment 62517 (Actor 742911,742910)
StreamSyncLogStore { output: [ asset_distributions_dm.asset_id, asset_distributions_dm.dimension, asset_distributions_dm.taxonomy_node_id, asset_distributions_dm.percentage, asset_distributions_dm.effective_start_date, asset_distributions_dm.effective_end_date, taxonomy_nodes_dm.code, taxonomy_dimensions_dm.code, taxonomy_nodes_dm.dimension_id, taxonomy_dimensions_dm.dimension_id ], stream key: [ taxonomy_nodes_dm.dimension_id, asset_distributions_dm.taxonomy_node_id, asset_distributions_dm.asset_id, asset_distributions_dm.dimension, asset_distributions_dm.effective_start_date ] }
└── StreamHashJoin { type: LeftOuter, predicate: taxonomy_nodes_dm.dimension_id = taxonomy_dimensions_dm.dimension_id } { output: [ asset_distributions_dm.asset_id, asset_distributions_dm.dimension, asset_distributions_dm.taxonomy_node_id, asset_distributions_dm.percentage, asset_distributions_dm.effective_start_date, asset_distributions_dm.effective_end_date, taxonomy_nodes_dm.code, taxonomy_dimensions_dm.code, taxonomy_nodes_dm.dimension_id, taxonomy_dimensions_dm.dimension_id ], stream key: [ taxonomy_nodes_dm.dimension_id, asset_distributions_dm.taxonomy_node_id, asset_distributions_dm.asset_id, asset_distributions_dm.dimension, asset_distributions_dm.effective_start_date ] }
    ├── MergeExecutor { output: [ asset_distributions_dm.asset_id, asset_distributions_dm.dimension, asset_distributions_dm.taxonomy_node_id, asset_distributions_dm.percentage, asset_distributions_dm.effective_start_date, asset_distributions_dm.effective_end_date, taxonomy_nodes_dm.dimension_id, taxonomy_nodes_dm.code, taxonomy_nodes_dm.node_id ], stream key: [ taxonomy_nodes_dm.dimension_id, asset_distributions_dm.taxonomy_node_id, asset_distributions_dm.asset_id, asset_distributions_dm.dimension, asset_distributions_dm.effective_start_date ] }
    └── MergeExecutor { output: [ taxonomy_dimensions_dm.dimension_id, taxonomy_dimensions_dm.code ], stream key: [ taxonomy_dimensions_dm.dimension_id ] }

Fragment 62518 (Actor 742962,742961)
StreamLocalityProvider { locality_columns: [taxonomy_nodes_dm.dimension_id] } { output: [ asset_distributions_dm.asset_id, asset_distributions_dm.dimension, asset_distributions_dm.taxonomy_node_id, asset_distributions_dm.percentage, asset_distributions_dm.effective_start_date, asset_distributions_dm.effective_end_date, taxonomy_nodes_dm.dimension_id, taxonomy_nodes_dm.code, taxonomy_nodes_dm.node_id ], stream key: [ taxonomy_nodes_dm.dimension_id, asset_distributions_dm.taxonomy_node_id, asset_distributions_dm.asset_id, asset_distributions_dm.dimension, asset_distributions_dm.effective_start_date ] }
└── MergeExecutor { output: [ asset_distributions_dm.asset_id, asset_distributions_dm.dimension, asset_distributions_dm.taxonomy_node_id, asset_distributions_dm.percentage, asset_distributions_dm.effective_start_date, asset_distributions_dm.effective_end_date, taxonomy_nodes_dm.dimension_id, taxonomy_nodes_dm.code, taxonomy_nodes_dm.node_id ], stream key: [ asset_distributions_dm.taxonomy_node_id, asset_distributions_dm.asset_id, asset_distributions_dm.dimension, asset_distributions_dm.effective_start_date ] }

Fragment 62519 (Actor 742963,742964)
StreamSyncLogStore { output: [ asset_distributions_dm.asset_id, asset_distributions_dm.dimension, asset_distributions_dm.taxonomy_node_id, asset_distributions_dm.percentage, asset_distributions_dm.effective_start_date, asset_distributions_dm.effective_end_date, taxonomy_nodes_dm.dimension_id, taxonomy_nodes_dm.code, taxonomy_nodes_dm.node_id ], stream key: [ asset_distributions_dm.taxonomy_node_id, asset_distributions_dm.asset_id, asset_distributions_dm.dimension, asset_distributions_dm.effective_start_date ] }
└── StreamHashJoin { type: Inner, predicate: asset_distributions_dm.taxonomy_node_id = taxonomy_nodes_dm.node_id } { output: [ asset_distributions_dm.asset_id, asset_distributions_dm.dimension, asset_distributions_dm.taxonomy_node_id, asset_distributions_dm.percentage, asset_distributions_dm.effective_start_date, asset_distributions_dm.effective_end_date, taxonomy_nodes_dm.dimension_id, taxonomy_nodes_dm.code, taxonomy_nodes_dm.node_id ], stream key: [ asset_distributions_dm.taxonomy_node_id, asset_distributions_dm.asset_id, asset_distributions_dm.dimension, asset_distributions_dm.effective_start_date ] }
    ├── MergeExecutor { output: [ asset_distributions_dm.asset_id, asset_distributions_dm.dimension, asset_distributions_dm.taxonomy_node_id, asset_distributions_dm.percentage, asset_distributions_dm.effective_start_date, asset_distributions_dm.effective_end_date ], stream key: [ asset_distributions_dm.taxonomy_node_id, asset_distributions_dm.asset_id, asset_distributions_dm.dimension, asset_distributions_dm.effective_start_date ] }
    └── MergeExecutor { output: [ taxonomy_nodes_dm.node_id, taxonomy_nodes_dm.dimension_id, taxonomy_nodes_dm.code ], stream key: [ taxonomy_nodes_dm.node_id ] }

Fragment 62520 (Actor 742965,742966)
StreamLocalityProvider { locality_columns: [asset_distributions_dm.taxonomy_node_id] } { output: [ asset_distributions_dm.asset_id, asset_distributions_dm.dimension, asset_distributions_dm.taxonomy_node_id, asset_distributions_dm.percentage, asset_distributions_dm.effective_start_date, asset_distributions_dm.effective_end_date ], stream key: [ asset_distributions_dm.taxonomy_node_id, asset_distributions_dm.asset_id, asset_distributions_dm.dimension, asset_distributions_dm.effective_start_date ] }
└── MergeExecutor { output: [ asset_distributions_dm.asset_id, asset_distributions_dm.dimension, asset_distributions_dm.taxonomy_node_id, asset_distributions_dm.percentage, asset_distributions_dm.effective_start_date, asset_distributions_dm.effective_end_date ], stream key: [ asset_distributions_dm.asset_id, asset_distributions_dm.dimension, asset_distributions_dm.taxonomy_node_id, asset_distributions_dm.effective_start_date ] }

Fragment 62521 (Actor 742974,742973)
StreamTableScan { table: asset_distributions_dm, columns: [asset_id, dimension, taxonomy_node_id, percentage, effective_start_date, effective_end_date] } { output: [ asset_distributions_dm.asset_id, asset_distributions_dm.dimension, asset_distributions_dm.taxonomy_node_id, asset_distributions_dm.percentage, asset_distributions_dm.effective_start_date, asset_distributions_dm.effective_end_date ], stream key: [ asset_distributions_dm.asset_id, asset_distributions_dm.dimension, asset_distributions_dm.taxonomy_node_id, asset_distributions_dm.effective_start_date ] }
├── Upstream { output: [ asset_id, dimension, taxonomy_node_id, percentage, effective_start_date, effective_end_date ], stream key: [] }
└── BatchPlanNode { output: [ asset_id, dimension, taxonomy_node_id, percentage, effective_start_date, effective_end_date ], stream key: [] }

Fragment 62522 (Actor 742976,742975)
StreamProject { exprs: [taxonomy_nodes_dm.node_id, taxonomy_nodes_dm.dimension_id, taxonomy_nodes_dm.code] } { output: [ taxonomy_nodes_dm.node_id, taxonomy_nodes_dm.dimension_id, taxonomy_nodes_dm.code ], stream key: [ taxonomy_nodes_dm.node_id ] }
└── StreamFilter { predicate: IsNull(taxonomy_nodes_dm.disabled_at) } { output: [ taxonomy_nodes_dm.node_id, taxonomy_nodes_dm.dimension_id, taxonomy_nodes_dm.code, taxonomy_nodes_dm.disabled_at ], stream key: [ taxonomy_nodes_dm.node_id ] }
    └── StreamTableScan { table: taxonomy_nodes_dm, columns: [node_id, dimension_id, code, disabled_at] } { output: [ taxonomy_nodes_dm.node_id, taxonomy_nodes_dm.dimension_id, taxonomy_nodes_dm.code, taxonomy_nodes_dm.disabled_at ], stream key: [ taxonomy_nodes_dm.node_id ] }
        ├── Upstream { output: [ node_id, dimension_id, code, disabled_at ], stream key: [] }
        └── BatchPlanNode { output: [ node_id, dimension_id, code, disabled_at ], stream key: [] }

Fragment 62523 (Actor 742978,742977)
StreamTableScan { table: taxonomy_dimensions_dm, columns: [dimension_id, code] } { output: [ taxonomy_dimensions_dm.dimension_id, taxonomy_dimensions_dm.code ], stream key: [ taxonomy_dimensions_dm.dimension_id ] }
├── Upstream { output: [ dimension_id, code ], stream key: [] }
└── BatchPlanNode { output: [ dimension_id, code ], stream key: [] }