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

← cluster opportunity objects portfolio_allocation_drift_breaches_mv explain
Overview Objects Graph History
materialized view · opportunity.portfolio_allocation_drift_breaches_mv profiled over 5s
seconds (1–30)
Stateful hash join (4 state tables) — consider a temporal join for dimension lookupsDynamic filter — verify it pairs with a temporal condition to clean state
80 operators
Materialize · opportunity.portfolio_allocation_drift_breaches_mv
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore · Inner · 'GET_PORTFOLIO_ALLOCATION_DRIFT_PERCENTAGE':Varchar = oppor…
2 actors
HashJoin · Inner · 'GET_PORTFOLIO_ALLOCATION_DRIFT_PERCENTAGE':Varchar = oppor… 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 · opportunity_conditions_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
Project
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore · Inner · portfolio_to_account_groups_mv.portfolio_id = portfolios_dm…
2 actors
HashJoin · Inner · portfolio_to_account_groups_mv.portfolio_id = portfolios_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
LocalityProvider
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore · Inner · portfolios_dm.benchmark_id = benchmark_values_by_distributi…
2 actors
HashJoin · Inner · portfolios_dm.benchmark_id = benchmark_values_by_distributi… 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 · benchmark_values_by_distribution_mv_next
0% idle 2 actors
StreamScan · benchmark_values_by_distribution_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 · portfolios_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 · position_by_distribution_mv_next.account_group_id = portfol…
2 actors
HashJoin · Inner · position_by_distribution_mv_next.account_group_id = portfol… 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
Project · portfolio_to_account_groups_mv
2 actors
Filter · portfolio_to_account_groups_mv
0% idle 2 actors
StreamScan · portfolio_to_account_groups_mv
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
Project · position_by_distribution_mv_next
2 actors
DynamicFilter · position_by_distribution_mv_next Dynamic filter — verify it pairs with a temporal condition to clean state
0% idle 2 actors
Merge
2 actors
Exchange
0% 2/s 0 actors
Project
1 actor
Now
0% 2/s 1 actor
Project · position_by_distribution_mv_next
2 actors
Filter · position_by_distribution_mv_next
2% idle 2 actors
StreamScan · position_by_distribution_mv_next
2% 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.portfolio_allocation_drift_breaches_mv Materialize opportunity.portfolio_a… idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore · Inner · 'GET_PORTFOLIO_ALLOCATION_DRIFT_PERCENTAGE':Varchar = oppor… SyncLogStore Inner · 'GET_PORTFOLIO_… — · 2 actors HashJoin · Inner · 'GET_PORTFOLIO_ALLOCATION_DRIFT_PERCENTAGE':Varchar = oppor… HashJoin Inner · 'GET_PORTFOLIO_… 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 · opportunity_conditions_mv_next StreamScan opportunity_conditions_… 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 Project Project — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore · Inner · portfolio_to_account_groups_mv.portfolio_id = portfolios_dm… SyncLogStore Inner · portfolio_to_ac… — · 2 actors HashJoin · Inner · portfolio_to_account_groups_mv.portfolio_id = portfolios_dm… HashJoin Inner · portfolio_to_ac… 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 SyncLogStore · Inner · portfolios_dm.benchmark_id = benchmark_values_by_distributi… SyncLogStore Inner · portfolios_dm.b… — · 2 actors HashJoin · Inner · portfolios_dm.benchmark_id = benchmark_values_by_distributi… HashJoin Inner · portfolios_dm.b… 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 · benchmark_values_by_distribution_mv_next Filter benchmark_values_by_dis… idle · 2 actors StreamScan · benchmark_values_by_distribution_mv_next StreamScan benchmark_values_by_dis… 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 · portfolios_dm StreamScan portfolios_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 · position_by_distribution_mv_next.account_group_id = portfol… SyncLogStore Inner · position_by_dis… — · 2 actors HashJoin · Inner · position_by_distribution_mv_next.account_group_id = portfol… HashJoin Inner · position_by_dis… 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 Project · portfolio_to_account_groups_mv Project portfolio_to_account_gr… — · 2 actors Filter · portfolio_to_account_groups_mv Filter portfolio_to_account_gr… idle · 2 actors StreamScan · portfolio_to_account_groups_mv StreamScan portfolio_to_account_gr… 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 Project · position_by_distribution_mv_next Project position_by_distributio… — · 2 actors DynamicFilter · position_by_distribution_mv_next DynamicFilter position_by_distributio… idle · 2 actors Merge Merge — · 2 actors Exchange Exchange 2/s · 0 actors Project Project — · 1 actor Now Now 2/s · 1 actor Project · position_by_distribution_mv_next Project position_by_distributio… — · 2 actors Filter · position_by_distribution_mv_next Filter position_by_distributio… idle · 2 actors StreamScan · position_by_distribution_mv_next StreamScan position_by_distributio… 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 64316 (Actor 747445,747446)
StreamMaterialize
├─columns: [opportunity_id, resource_id, fact_date, taxonomy_node_id, current_allocation, benchmark_allocation, drift_percentage, 'GET_PORTFOLIO_ALLOCATION_DRIFT_PERCENTAGE':Varchar(hidden), position_by_distribution_mv_next.distribution_type(hidden), position_by_distribution_mv_next.account_group_id(hidden), position_by_distribution_mv_next.position_type(hidden), position_by_distribution_mv_next.currency_code(hidden), position_by_distribution_mv_next.source_entity_type(hidden), position_by_distribution_mv_next.taxonomy_code(hidden), position_by_distribution_mv_next.position_summary_mv_next.source_entity_type(hidden), portfolio_to_account_groups_mv.$src(hidden), portfolios_dm.benchmark_id(hidden), benchmark_values_by_distribution_mv_next.taxonomy_code(hidden), opportunity_conditions_mv_next.activity_name(hidden), opportunity_conditions_mv_next._rw_projected_row_id(hidden), opportunity_conditions_mv_next._rw_projected_row_id#1(hidden)]
├─stream_key: ['GET_PORTFOLIO_ALLOCATION_DRIFT_PERCENTAGE':Varchar, resource_id, fact_date, 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_next.taxonomy_code, opportunity_id, opportunity_conditions_mv_next._rw_projected_row_id, opportunity_conditions_mv_next._rw_projected_row_id#1]
├─pk_columns: ['GET_PORTFOLIO_ALLOCATION_DRIFT_PERCENTAGE':Varchar, resource_id, fact_date, 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_next.taxonomy_code, opportunity_id, opportunity_conditions_mv_next._rw_projected_row_id, opportunity_conditions_mv_next._rw_projected_row_id#1]
└─pk_conflict: NoCheck
├── output: [ opportunity_conditions_mv_next.opportunity_id, portfolio_to_account_groups_mv.portfolio_id, position_by_distribution_mv_next.dim_balance_date, position_by_distribution_mv_next.taxonomy_node_id, position_by_distribution_mv_next.weight, benchmark_values_by_distribution_mv_next.weight, $expr3, 'GET_PORTFOLIO_ALLOCATION_DRIFT_PERCENTAGE':Varchar, position_by_distribution_mv_next.distribution_type, 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_next.taxonomy_code, opportunity_conditions_mv_next.activity_name, opportunity_conditions_mv_next._rw_projected_row_id, opportunity_conditions_mv_next._rw_projected_row_id#1 ]
├── stream key: [ 'GET_PORTFOLIO_ALLOCATION_DRIFT_PERCENTAGE':Varchar, portfolio_to_account_groups_mv.portfolio_id, position_by_distribution_mv_next.dim_balance_date, position_by_distribution_mv_next.distribution_type, position_by_distribution_mv_next.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_next.taxonomy_code, opportunity_conditions_mv_next.opportunity_id, opportunity_conditions_mv_next._rw_projected_row_id, opportunity_conditions_mv_next._rw_projected_row_id#1 ]
└── MergeExecutor { output: [ opportunity_conditions_mv_next.opportunity_id, portfolio_to_account_groups_mv.portfolio_id, position_by_distribution_mv_next.dim_balance_date, position_by_distribution_mv_next.taxonomy_node_id, position_by_distribution_mv_next.weight, benchmark_values_by_distribution_mv_next.weight, $expr3, 'GET_PORTFOLIO_ALLOCATION_DRIFT_PERCENTAGE':Varchar, position_by_distribution_mv_next.distribution_type, 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_next.taxonomy_code, opportunity_conditions_mv_next.activity_name, opportunity_conditions_mv_next._rw_projected_row_id, opportunity_conditions_mv_next._rw_projected_row_id#1 ], stream key: [ 'GET_PORTFOLIO_ALLOCATION_DRIFT_PERCENTAGE':Varchar, portfolio_to_account_groups_mv.portfolio_id, position_by_distribution_mv_next.dim_balance_date, position_by_distribution_mv_next.distribution_type, position_by_distribution_mv_next.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_next.taxonomy_code, opportunity_conditions_mv_next.opportunity_id, opportunity_conditions_mv_next._rw_projected_row_id, opportunity_conditions_mv_next._rw_projected_row_id#1 ] }

Fragment 64317 (Actor 747443,747444)
StreamSyncLogStore { output: [ opportunity_conditions_mv_next.opportunity_id, portfolio_to_account_groups_mv.portfolio_id, position_by_distribution_mv_next.dim_balance_date, position_by_distribution_mv_next.taxonomy_node_id, position_by_distribution_mv_next.weight, benchmark_values_by_distribution_mv_next.weight, $expr3, 'GET_PORTFOLIO_ALLOCATION_DRIFT_PERCENTAGE':Varchar, position_by_distribution_mv_next.distribution_type, 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_next.taxonomy_code, opportunity_conditions_mv_next.activity_name, opportunity_conditions_mv_next._rw_projected_row_id, opportunity_conditions_mv_next._rw_projected_row_id#1 ], stream key: [ 'GET_PORTFOLIO_ALLOCATION_DRIFT_PERCENTAGE':Varchar, portfolio_to_account_groups_mv.portfolio_id, position_by_distribution_mv_next.dim_balance_date, position_by_distribution_mv_next.distribution_type, position_by_distribution_mv_next.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_next.taxonomy_code, opportunity_conditions_mv_next.opportunity_id, opportunity_conditions_mv_next._rw_projected_row_id, opportunity_conditions_mv_next._rw_projected_row_id#1 ] }
└── StreamHashJoin { type: Inner, predicate: 'GET_PORTFOLIO_ALLOCATION_DRIFT_PERCENTAGE':Varchar = opportunity_conditions_mv_next.activity_name AND Case((opportunity_conditions_mv_next.op = 'GTE':Varchar), ($expr3 >= opportunity_conditions_mv_next.threshold), (opportunity_conditions_mv_next.op = 'GT':Varchar), ($expr3 > opportunity_conditions_mv_next.threshold), (opportunity_conditions_mv_next.op = 'LTE':Varchar), ($expr3 <= opportunity_conditions_mv_next.threshold), (opportunity_conditions_mv_next.op = 'LT':Varchar), ($expr3 < opportunity_conditions_mv_next.threshold), (opportunity_conditions_mv_next.op = 'EQ':Varchar), ($expr3 = opportunity_conditions_mv_next.threshold), false:Boolean) }
    ├── output: [ opportunity_conditions_mv_next.opportunity_id, portfolio_to_account_groups_mv.portfolio_id, position_by_distribution_mv_next.dim_balance_date, position_by_distribution_mv_next.taxonomy_node_id, position_by_distribution_mv_next.weight, benchmark_values_by_distribution_mv_next.weight, $expr3, 'GET_PORTFOLIO_ALLOCATION_DRIFT_PERCENTAGE':Varchar, position_by_distribution_mv_next.distribution_type, 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_next.taxonomy_code, opportunity_conditions_mv_next.activity_name, opportunity_conditions_mv_next._rw_projected_row_id, opportunity_conditions_mv_next._rw_projected_row_id#1 ]
    ├── stream key: [ 'GET_PORTFOLIO_ALLOCATION_DRIFT_PERCENTAGE':Varchar, portfolio_to_account_groups_mv.portfolio_id, position_by_distribution_mv_next.dim_balance_date, position_by_distribution_mv_next.distribution_type, position_by_distribution_mv_next.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_next.taxonomy_code, opportunity_conditions_mv_next.opportunity_id, opportunity_conditions_mv_next._rw_projected_row_id, opportunity_conditions_mv_next._rw_projected_row_id#1 ]
    ├── MergeExecutor { output: [ portfolio_to_account_groups_mv.portfolio_id, position_by_distribution_mv_next.dim_balance_date, position_by_distribution_mv_next.taxonomy_node_id, position_by_distribution_mv_next.weight, benchmark_values_by_distribution_mv_next.weight, $expr3, 'GET_PORTFOLIO_ALLOCATION_DRIFT_PERCENTAGE':Varchar, position_by_distribution_mv_next.distribution_type, 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_next.taxonomy_code ], stream key: [ 'GET_PORTFOLIO_ALLOCATION_DRIFT_PERCENTAGE':Varchar, portfolio_to_account_groups_mv.portfolio_id, position_by_distribution_mv_next.dim_balance_date, position_by_distribution_mv_next.distribution_type, position_by_distribution_mv_next.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_next.taxonomy_code ] }
    └── MergeExecutor { output: [ opportunity_conditions_mv_next.opportunity_id, opportunity_conditions_mv_next.activity_name, opportunity_conditions_mv_next.op, opportunity_conditions_mv_next.threshold, opportunity_conditions_mv_next._rw_projected_row_id, opportunity_conditions_mv_next._rw_projected_row_id#1 ], stream key: [ opportunity_conditions_mv_next.activity_name, opportunity_conditions_mv_next.opportunity_id, opportunity_conditions_mv_next._rw_projected_row_id, opportunity_conditions_mv_next._rw_projected_row_id#1 ] }

Fragment 64318 (Actor 747448,747447)
StreamLocalityProvider { locality_columns: ['GET_PORTFOLIO_ALLOCATION_DRIFT_PERCENTAGE':Varchar] } { output: [ portfolio_to_account_groups_mv.portfolio_id, position_by_distribution_mv_next.dim_balance_date, position_by_distribution_mv_next.taxonomy_node_id, position_by_distribution_mv_next.weight, benchmark_values_by_distribution_mv_next.weight, $expr3, 'GET_PORTFOLIO_ALLOCATION_DRIFT_PERCENTAGE':Varchar, position_by_distribution_mv_next.distribution_type, 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_next.taxonomy_code ], stream key: [ 'GET_PORTFOLIO_ALLOCATION_DRIFT_PERCENTAGE':Varchar, portfolio_to_account_groups_mv.portfolio_id, position_by_distribution_mv_next.dim_balance_date, position_by_distribution_mv_next.distribution_type, position_by_distribution_mv_next.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_next.taxonomy_code ] }
└── MergeExecutor { output: [ portfolio_to_account_groups_mv.portfolio_id, position_by_distribution_mv_next.dim_balance_date, position_by_distribution_mv_next.taxonomy_node_id, position_by_distribution_mv_next.weight, benchmark_values_by_distribution_mv_next.weight, $expr3, 'GET_PORTFOLIO_ALLOCATION_DRIFT_PERCENTAGE':Varchar, position_by_distribution_mv_next.distribution_type, 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_next.taxonomy_code ], stream key: [ portfolio_to_account_groups_mv.portfolio_id, position_by_distribution_mv_next.dim_balance_date, position_by_distribution_mv_next.distribution_type, position_by_distribution_mv_next.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_next.taxonomy_code ] }

Fragment 64319 (Actor 747452,747451)
StreamProject { exprs: [portfolio_to_account_groups_mv.portfolio_id, position_by_distribution_mv_next.dim_balance_date, position_by_distribution_mv_next.taxonomy_node_id, position_by_distribution_mv_next.weight, benchmark_values_by_distribution_mv_next.weight, (position_by_distribution_mv_next.weight - benchmark_values_by_distribution_mv_next.weight) as $expr3, 'GET_PORTFOLIO_ALLOCATION_DRIFT_PERCENTAGE':Varchar, position_by_distribution_mv_next.distribution_type, 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_next.taxonomy_code] } { output: [ portfolio_to_account_groups_mv.portfolio_id, position_by_distribution_mv_next.dim_balance_date, position_by_distribution_mv_next.taxonomy_node_id, position_by_distribution_mv_next.weight, benchmark_values_by_distribution_mv_next.weight, $expr3, 'GET_PORTFOLIO_ALLOCATION_DRIFT_PERCENTAGE':Varchar, position_by_distribution_mv_next.distribution_type, 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_next.taxonomy_code ], stream key: [ portfolio_to_account_groups_mv.portfolio_id, position_by_distribution_mv_next.dim_balance_date, position_by_distribution_mv_next.distribution_type, position_by_distribution_mv_next.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_next.taxonomy_code ] }
└── MergeExecutor { output: [ position_by_distribution_mv_next.dim_balance_date, position_by_distribution_mv_next.taxonomy_node_id, position_by_distribution_mv_next.weight, portfolio_to_account_groups_mv.portfolio_id, benchmark_values_by_distribution_mv_next.weight, position_by_distribution_mv_next.distribution_type, 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.portfolio_id, benchmark_values_by_distribution_mv_next.fact_date, benchmark_values_by_distribution_mv_next.distribution_type, benchmark_values_by_distribution_mv_next.taxonomy_node_id, portfolios_dm.benchmark_id, benchmark_values_by_distribution_mv_next.taxonomy_code ], stream key: [ portfolio_to_account_groups_mv.portfolio_id, position_by_distribution_mv_next.dim_balance_date, position_by_distribution_mv_next.distribution_type, position_by_distribution_mv_next.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_next.taxonomy_code ] }

Fragment 64320 (Actor 747449,747450)
StreamSyncLogStore { output: [ position_by_distribution_mv_next.dim_balance_date, position_by_distribution_mv_next.taxonomy_node_id, position_by_distribution_mv_next.weight, portfolio_to_account_groups_mv.portfolio_id, benchmark_values_by_distribution_mv_next.weight, position_by_distribution_mv_next.distribution_type, 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.portfolio_id, benchmark_values_by_distribution_mv_next.fact_date, benchmark_values_by_distribution_mv_next.distribution_type, benchmark_values_by_distribution_mv_next.taxonomy_node_id, portfolios_dm.benchmark_id, benchmark_values_by_distribution_mv_next.taxonomy_code ], stream key: [ portfolio_to_account_groups_mv.portfolio_id, position_by_distribution_mv_next.dim_balance_date, position_by_distribution_mv_next.distribution_type, position_by_distribution_mv_next.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_next.taxonomy_code ] }
└── StreamHashJoin { type: Inner, predicate: portfolio_to_account_groups_mv.portfolio_id = portfolios_dm.portfolio_id AND position_by_distribution_mv_next.dim_balance_date = benchmark_values_by_distribution_mv_next.fact_date AND position_by_distribution_mv_next.distribution_type = benchmark_values_by_distribution_mv_next.distribution_type AND position_by_distribution_mv_next.taxonomy_node_id = benchmark_values_by_distribution_mv_next.taxonomy_node_id } { output: [ position_by_distribution_mv_next.dim_balance_date, position_by_distribution_mv_next.taxonomy_node_id, position_by_distribution_mv_next.weight, portfolio_to_account_groups_mv.portfolio_id, benchmark_values_by_distribution_mv_next.weight, position_by_distribution_mv_next.distribution_type, 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.portfolio_id, benchmark_values_by_distribution_mv_next.fact_date, benchmark_values_by_distribution_mv_next.distribution_type, benchmark_values_by_distribution_mv_next.taxonomy_node_id, portfolios_dm.benchmark_id, benchmark_values_by_distribution_mv_next.taxonomy_code ], stream key: [ portfolio_to_account_groups_mv.portfolio_id, position_by_distribution_mv_next.dim_balance_date, position_by_distribution_mv_next.distribution_type, position_by_distribution_mv_next.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_next.taxonomy_code ] }
    ├── MergeExecutor { output: [ position_by_distribution_mv_next.dim_balance_date, position_by_distribution_mv_next.distribution_type, position_by_distribution_mv_next.taxonomy_node_id, position_by_distribution_mv_next.weight, portfolio_to_account_groups_mv.portfolio_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.account_group_id, portfolio_to_account_groups_mv.$src ], stream key: [ portfolio_to_account_groups_mv.portfolio_id, position_by_distribution_mv_next.dim_balance_date, position_by_distribution_mv_next.distribution_type, position_by_distribution_mv_next.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 ] }
    └── MergeExecutor { output: [ portfolios_dm.portfolio_id, benchmark_values_by_distribution_mv_next.fact_date, benchmark_values_by_distribution_mv_next.distribution_type, benchmark_values_by_distribution_mv_next.taxonomy_node_id, benchmark_values_by_distribution_mv_next.weight, portfolios_dm.benchmark_id, benchmark_values_by_distribution_mv_next.benchmark_id, benchmark_values_by_distribution_mv_next.taxonomy_code ], stream key: [ portfolios_dm.portfolio_id, benchmark_values_by_distribution_mv_next.fact_date, benchmark_values_by_distribution_mv_next.distribution_type, benchmark_values_by_distribution_mv_next.taxonomy_node_id, portfolios_dm.benchmark_id, benchmark_values_by_distribution_mv_next.taxonomy_code ] }

Fragment 64321 (Actor 747454,747453)
StreamLocalityProvider { locality_columns: [portfolio_to_account_groups_mv.portfolio_id, position_by_distribution_mv_next.dim_balance_date, position_by_distribution_mv_next.distribution_type, position_by_distribution_mv_next.taxonomy_node_id] } { output: [ position_by_distribution_mv_next.dim_balance_date, position_by_distribution_mv_next.distribution_type, position_by_distribution_mv_next.taxonomy_node_id, position_by_distribution_mv_next.weight, portfolio_to_account_groups_mv.portfolio_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.account_group_id, portfolio_to_account_groups_mv.$src ], stream key: [ portfolio_to_account_groups_mv.portfolio_id, position_by_distribution_mv_next.dim_balance_date, position_by_distribution_mv_next.distribution_type, position_by_distribution_mv_next.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 ] }
└── MergeExecutor { output: [ position_by_distribution_mv_next.dim_balance_date, position_by_distribution_mv_next.distribution_type, position_by_distribution_mv_next.taxonomy_node_id, position_by_distribution_mv_next.weight, portfolio_to_account_groups_mv.portfolio_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.account_group_id, portfolio_to_account_groups_mv.$src ], stream key: [ position_by_distribution_mv_next.account_group_id, position_by_distribution_mv_next.dim_balance_date, 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.distribution_type, position_by_distribution_mv_next.taxonomy_node_id, position_by_distribution_mv_next.taxonomy_code, position_by_distribution_mv_next.position_summary_mv_next.source_entity_type, portfolio_to_account_groups_mv.portfolio_id, portfolio_to_account_groups_mv.$src ] }

Fragment 64322 (Actor 747490,747489)
StreamSyncLogStore { output: [ position_by_distribution_mv_next.dim_balance_date, position_by_distribution_mv_next.distribution_type, position_by_distribution_mv_next.taxonomy_node_id, position_by_distribution_mv_next.weight, portfolio_to_account_groups_mv.portfolio_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.account_group_id, portfolio_to_account_groups_mv.$src ], stream key: [ position_by_distribution_mv_next.account_group_id, position_by_distribution_mv_next.dim_balance_date, 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.distribution_type, position_by_distribution_mv_next.taxonomy_node_id, position_by_distribution_mv_next.taxonomy_code, position_by_distribution_mv_next.position_summary_mv_next.source_entity_type, portfolio_to_account_groups_mv.portfolio_id, portfolio_to_account_groups_mv.$src ] }
└── StreamHashJoin { type: Inner, predicate: position_by_distribution_mv_next.account_group_id = portfolio_to_account_groups_mv.account_group_id } { output: [ position_by_distribution_mv_next.dim_balance_date, position_by_distribution_mv_next.distribution_type, position_by_distribution_mv_next.taxonomy_node_id, position_by_distribution_mv_next.weight, portfolio_to_account_groups_mv.portfolio_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.account_group_id, portfolio_to_account_groups_mv.$src ], stream key: [ position_by_distribution_mv_next.account_group_id, position_by_distribution_mv_next.dim_balance_date, 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.distribution_type, position_by_distribution_mv_next.taxonomy_node_id, position_by_distribution_mv_next.taxonomy_code, position_by_distribution_mv_next.position_summary_mv_next.source_entity_type, portfolio_to_account_groups_mv.portfolio_id, portfolio_to_account_groups_mv.$src ] }
    ├── MergeExecutor { output: [ position_by_distribution_mv_next.account_group_id, position_by_distribution_mv_next.dim_balance_date, position_by_distribution_mv_next.distribution_type, position_by_distribution_mv_next.taxonomy_node_id, position_by_distribution_mv_next.weight, 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 ], stream key: [ position_by_distribution_mv_next.account_group_id, position_by_distribution_mv_next.dim_balance_date, 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.distribution_type, position_by_distribution_mv_next.taxonomy_node_id, position_by_distribution_mv_next.taxonomy_code, position_by_distribution_mv_next.position_summary_mv_next.source_entity_type ] }
    └── MergeExecutor { output: [ portfolio_to_account_groups_mv.portfolio_id, portfolio_to_account_groups_mv.account_group_id, portfolio_to_account_groups_mv.$src ], stream key: [ portfolio_to_account_groups_mv.account_group_id, portfolio_to_account_groups_mv.portfolio_id, portfolio_to_account_groups_mv.$src ] }

Fragment 64323 (Actor 747491,747492)
StreamLocalityProvider { locality_columns: [position_by_distribution_mv_next.account_group_id] } { output: [ position_by_distribution_mv_next.account_group_id, position_by_distribution_mv_next.dim_balance_date, position_by_distribution_mv_next.distribution_type, position_by_distribution_mv_next.taxonomy_node_id, position_by_distribution_mv_next.weight, 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 ], stream key: [ position_by_distribution_mv_next.account_group_id, position_by_distribution_mv_next.dim_balance_date, 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.distribution_type, position_by_distribution_mv_next.taxonomy_node_id, position_by_distribution_mv_next.taxonomy_code, position_by_distribution_mv_next.position_summary_mv_next.source_entity_type ] }
└── MergeExecutor { output: [ position_by_distribution_mv_next.account_group_id, position_by_distribution_mv_next.dim_balance_date, position_by_distribution_mv_next.distribution_type, position_by_distribution_mv_next.taxonomy_node_id, position_by_distribution_mv_next.weight, 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 ], stream key: [ position_by_distribution_mv_next.account_group_id, position_by_distribution_mv_next.dim_balance_date, 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.distribution_type, position_by_distribution_mv_next.taxonomy_node_id, position_by_distribution_mv_next.taxonomy_code, position_by_distribution_mv_next.position_summary_mv_next.source_entity_type ] }

Fragment 64324 (Actor 747331,747332)
StreamProject { exprs: [position_by_distribution_mv_next.account_group_id, position_by_distribution_mv_next.dim_balance_date, position_by_distribution_mv_next.distribution_type, position_by_distribution_mv_next.taxonomy_node_id, position_by_distribution_mv_next.weight, 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] } { output: [ position_by_distribution_mv_next.account_group_id, position_by_distribution_mv_next.dim_balance_date, position_by_distribution_mv_next.distribution_type, position_by_distribution_mv_next.taxonomy_node_id, position_by_distribution_mv_next.weight, 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 ], stream key: [ position_by_distribution_mv_next.account_group_id, position_by_distribution_mv_next.dim_balance_date, 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.distribution_type, position_by_distribution_mv_next.taxonomy_node_id, position_by_distribution_mv_next.taxonomy_code, position_by_distribution_mv_next.position_summary_mv_next.source_entity_type ] }
└── StreamDynamicFilter { predicate: ($expr1 >= $expr2), output_watermarks: [[$expr1]], output: [position_by_distribution_mv_next.account_group_id, position_by_distribution_mv_next.dim_balance_date, position_by_distribution_mv_next.distribution_type, position_by_distribution_mv_next.taxonomy_node_id, position_by_distribution_mv_next.weight, $expr1, 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], cleaned_by_watermark: true } { output: [ position_by_distribution_mv_next.account_group_id, position_by_distribution_mv_next.dim_balance_date, position_by_distribution_mv_next.distribution_type, position_by_distribution_mv_next.taxonomy_node_id, position_by_distribution_mv_next.weight, $expr1, 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 ], stream key: [ position_by_distribution_mv_next.account_group_id, position_by_distribution_mv_next.dim_balance_date, 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.distribution_type, position_by_distribution_mv_next.taxonomy_node_id, position_by_distribution_mv_next.taxonomy_code, position_by_distribution_mv_next.position_summary_mv_next.source_entity_type ] }
    ├── StreamProject { exprs: [position_by_distribution_mv_next.account_group_id, position_by_distribution_mv_next.dim_balance_date, position_by_distribution_mv_next.distribution_type, position_by_distribution_mv_next.taxonomy_node_id, position_by_distribution_mv_next.weight, AtTimeZone(position_by_distribution_mv_next.dim_balance_date::Timestamp, 'UTC':Varchar) as $expr1, 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] } { output: [ position_by_distribution_mv_next.account_group_id, position_by_distribution_mv_next.dim_balance_date, position_by_distribution_mv_next.distribution_type, position_by_distribution_mv_next.taxonomy_node_id, position_by_distribution_mv_next.weight, $expr1, 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 ], stream key: [ position_by_distribution_mv_next.account_group_id, position_by_distribution_mv_next.dim_balance_date, 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.distribution_type, position_by_distribution_mv_next.taxonomy_node_id, position_by_distribution_mv_next.taxonomy_code, position_by_distribution_mv_next.position_summary_mv_next.source_entity_type ] }
    │   └── StreamFilter { predicate: (position_by_distribution_mv_next.distribution_type = 'asset_classes':Varchar) AND (position_by_distribution_mv_next.source_entity_type = 'portfolio':Varchar) AND (position_by_distribution_mv_next.position_type = 'POSITION':Varchar) } { output: [ position_by_distribution_mv_next.account_group_id, position_by_distribution_mv_next.dim_balance_date, position_by_distribution_mv_next.distribution_type, position_by_distribution_mv_next.taxonomy_node_id, position_by_distribution_mv_next.weight, 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 ], stream key: [ position_by_distribution_mv_next.account_group_id, position_by_distribution_mv_next.dim_balance_date, 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.distribution_type, position_by_distribution_mv_next.taxonomy_node_id, position_by_distribution_mv_next.taxonomy_code, position_by_distribution_mv_next.position_summary_mv_next.source_entity_type ] }
    │       └── StreamTableScan { table: position_by_distribution_mv_next, columns: [account_group_id, dim_balance_date, distribution_type, taxonomy_node_id, weight, position_type, currency_code, source_entity_type, taxonomy_code, position_summary_mv_next.source_entity_type] } { output: [ position_by_distribution_mv_next.account_group_id, position_by_distribution_mv_next.dim_balance_date, position_by_distribution_mv_next.distribution_type, position_by_distribution_mv_next.taxonomy_node_id, position_by_distribution_mv_next.weight, 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 ], stream key: [ position_by_distribution_mv_next.account_group_id, position_by_distribution_mv_next.dim_balance_date, 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.distribution_type, position_by_distribution_mv_next.taxonomy_node_id, position_by_distribution_mv_next.taxonomy_code, position_by_distribution_mv_next.position_summary_mv_next.source_entity_type ] }
    │           ├── Upstream { output: [ account_group_id, dim_balance_date, distribution_type, taxonomy_node_id, weight, position_type, currency_code, source_entity_type, taxonomy_code, position_summary_mv_next.source_entity_type ], stream key: [] }
    │           └── BatchPlanNode { output: [ account_group_id, dim_balance_date, distribution_type, taxonomy_node_id, weight, position_type, currency_code, source_entity_type, taxonomy_code, position_summary_mv_next.source_entity_type ], stream key: [] }
    └── MergeExecutor { output: [ $expr2 ], stream key: [] }

Fragment 64325 (Actor 747493)
StreamProject { exprs: [SubtractWithTimeZone(now, '30 days':Interval, 'UTC':Varchar) as $expr2], output_watermarks: [[$expr2]] } { output: [ $expr2 ], stream key: [] }
└── StreamNow { output: [ now ], stream key: [] }

Fragment 64326 (Actor 747494,747495)
StreamLocalityProvider { locality_columns: [portfolio_to_account_groups_mv.account_group_id] } { output: [ portfolio_to_account_groups_mv.portfolio_id, portfolio_to_account_groups_mv.account_group_id, portfolio_to_account_groups_mv.$src ], stream key: [ portfolio_to_account_groups_mv.account_group_id, portfolio_to_account_groups_mv.portfolio_id, portfolio_to_account_groups_mv.$src ] }
└── MergeExecutor { output: [ portfolio_to_account_groups_mv.portfolio_id, portfolio_to_account_groups_mv.account_group_id, portfolio_to_account_groups_mv.$src ], stream key: [ portfolio_to_account_groups_mv.portfolio_id, portfolio_to_account_groups_mv.$src ] }

Fragment 64327 (Actor 747334,747333)
StreamProject { exprs: [portfolio_to_account_groups_mv.portfolio_id, portfolio_to_account_groups_mv.account_group_id, portfolio_to_account_groups_mv.$src] } { output: [ portfolio_to_account_groups_mv.portfolio_id, portfolio_to_account_groups_mv.account_group_id, portfolio_to_account_groups_mv.$src ], stream key: [ portfolio_to_account_groups_mv.portfolio_id, portfolio_to_account_groups_mv.$src ] }
└── StreamFilter { predicate: (portfolio_to_account_groups_mv.type = 'all':Varchar) } { output: [ portfolio_to_account_groups_mv.portfolio_id, portfolio_to_account_groups_mv.account_group_id, portfolio_to_account_groups_mv.$src, portfolio_to_account_groups_mv.type ], stream key: [ portfolio_to_account_groups_mv.portfolio_id, portfolio_to_account_groups_mv.$src ] }
    └── StreamTableScan { table: portfolio_to_account_groups_mv, columns: [portfolio_id, account_group_id, $src, type] } { output: [ portfolio_to_account_groups_mv.portfolio_id, portfolio_to_account_groups_mv.account_group_id, portfolio_to_account_groups_mv.$src, portfolio_to_account_groups_mv.type ], stream key: [ portfolio_to_account_groups_mv.portfolio_id, portfolio_to_account_groups_mv.$src ] }
        ├── Upstream { output: [ portfolio_id, account_group_id, $src, type ], stream key: [] }
        └── BatchPlanNode { output: [ portfolio_id, account_group_id, $src, type ], stream key: [] }

Fragment 64328 (Actor 747496,747497)
StreamLocalityProvider { locality_columns: [portfolios_dm.portfolio_id, benchmark_values_by_distribution_mv_next.fact_date, benchmark_values_by_distribution_mv_next.distribution_type, benchmark_values_by_distribution_mv_next.taxonomy_node_id] } { output: [ portfolios_dm.portfolio_id, benchmark_values_by_distribution_mv_next.fact_date, benchmark_values_by_distribution_mv_next.distribution_type, benchmark_values_by_distribution_mv_next.taxonomy_node_id, benchmark_values_by_distribution_mv_next.weight, portfolios_dm.benchmark_id, benchmark_values_by_distribution_mv_next.benchmark_id, benchmark_values_by_distribution_mv_next.taxonomy_code ], stream key: [ portfolios_dm.portfolio_id, benchmark_values_by_distribution_mv_next.fact_date, benchmark_values_by_distribution_mv_next.distribution_type, benchmark_values_by_distribution_mv_next.taxonomy_node_id, portfolios_dm.benchmark_id, benchmark_values_by_distribution_mv_next.taxonomy_code ] }
└── MergeExecutor { output: [ portfolios_dm.portfolio_id, benchmark_values_by_distribution_mv_next.fact_date, benchmark_values_by_distribution_mv_next.distribution_type, benchmark_values_by_distribution_mv_next.taxonomy_node_id, benchmark_values_by_distribution_mv_next.weight, portfolios_dm.benchmark_id, benchmark_values_by_distribution_mv_next.benchmark_id, benchmark_values_by_distribution_mv_next.taxonomy_code ], stream key: [ portfolios_dm.benchmark_id, portfolios_dm.portfolio_id, benchmark_values_by_distribution_mv_next.fact_date, benchmark_values_by_distribution_mv_next.distribution_type, benchmark_values_by_distribution_mv_next.taxonomy_node_id, benchmark_values_by_distribution_mv_next.taxonomy_code ] }

Fragment 64329 (Actor 747498,747499)
StreamSyncLogStore { output: [ portfolios_dm.portfolio_id, benchmark_values_by_distribution_mv_next.fact_date, benchmark_values_by_distribution_mv_next.distribution_type, benchmark_values_by_distribution_mv_next.taxonomy_node_id, benchmark_values_by_distribution_mv_next.weight, portfolios_dm.benchmark_id, benchmark_values_by_distribution_mv_next.benchmark_id, benchmark_values_by_distribution_mv_next.taxonomy_code ], stream key: [ portfolios_dm.benchmark_id, portfolios_dm.portfolio_id, benchmark_values_by_distribution_mv_next.fact_date, benchmark_values_by_distribution_mv_next.distribution_type, benchmark_values_by_distribution_mv_next.taxonomy_node_id, benchmark_values_by_distribution_mv_next.taxonomy_code ] }
└── StreamHashJoin { type: Inner, predicate: portfolios_dm.benchmark_id = benchmark_values_by_distribution_mv_next.benchmark_id } { output: [ portfolios_dm.portfolio_id, benchmark_values_by_distribution_mv_next.fact_date, benchmark_values_by_distribution_mv_next.distribution_type, benchmark_values_by_distribution_mv_next.taxonomy_node_id, benchmark_values_by_distribution_mv_next.weight, portfolios_dm.benchmark_id, benchmark_values_by_distribution_mv_next.benchmark_id, benchmark_values_by_distribution_mv_next.taxonomy_code ], stream key: [ portfolios_dm.benchmark_id, portfolios_dm.portfolio_id, benchmark_values_by_distribution_mv_next.fact_date, benchmark_values_by_distribution_mv_next.distribution_type, benchmark_values_by_distribution_mv_next.taxonomy_node_id, benchmark_values_by_distribution_mv_next.taxonomy_code ] }
    ├── MergeExecutor { output: [ portfolios_dm.portfolio_id, portfolios_dm.benchmark_id ], stream key: [ portfolios_dm.benchmark_id, portfolios_dm.portfolio_id ] }
    └── MergeExecutor { output: [ benchmark_values_by_distribution_mv_next.benchmark_id, benchmark_values_by_distribution_mv_next.fact_date, benchmark_values_by_distribution_mv_next.distribution_type, benchmark_values_by_distribution_mv_next.taxonomy_node_id, benchmark_values_by_distribution_mv_next.weight, benchmark_values_by_distribution_mv_next.taxonomy_code ], stream key: [ benchmark_values_by_distribution_mv_next.benchmark_id, benchmark_values_by_distribution_mv_next.fact_date, benchmark_values_by_distribution_mv_next.distribution_type, benchmark_values_by_distribution_mv_next.taxonomy_node_id, benchmark_values_by_distribution_mv_next.taxonomy_code ] }

Fragment 64330 (Actor 747440,747439)
StreamLocalityProvider { locality_columns: [portfolios_dm.benchmark_id] } { output: [ portfolios_dm.portfolio_id, portfolios_dm.benchmark_id ], stream key: [ portfolios_dm.benchmark_id, portfolios_dm.portfolio_id ] }
└── MergeExecutor { output: [ portfolios_dm.portfolio_id, portfolios_dm.benchmark_id ], stream key: [ portfolios_dm.portfolio_id ] }

Fragment 64331 (Actor 747336,747335)
StreamTableScan { table: portfolios_dm, columns: [portfolio_id, benchmark_id] } { output: [ portfolios_dm.portfolio_id, portfolios_dm.benchmark_id ], stream key: [ portfolios_dm.portfolio_id ] }
├── Upstream { output: [ portfolio_id, benchmark_id ], stream key: [] }
└── BatchPlanNode { output: [ portfolio_id, benchmark_id ], stream key: [] }

Fragment 64332 (Actor 747501,747500)
StreamLocalityProvider { locality_columns: [benchmark_values_by_distribution_mv_next.benchmark_id] } { output: [ benchmark_values_by_distribution_mv_next.benchmark_id, benchmark_values_by_distribution_mv_next.fact_date, benchmark_values_by_distribution_mv_next.distribution_type, benchmark_values_by_distribution_mv_next.taxonomy_node_id, benchmark_values_by_distribution_mv_next.weight, benchmark_values_by_distribution_mv_next.taxonomy_code ], stream key: [ benchmark_values_by_distribution_mv_next.benchmark_id, benchmark_values_by_distribution_mv_next.fact_date, benchmark_values_by_distribution_mv_next.distribution_type, benchmark_values_by_distribution_mv_next.taxonomy_node_id, benchmark_values_by_distribution_mv_next.taxonomy_code ] }
└── MergeExecutor { output: [ benchmark_values_by_distribution_mv_next.benchmark_id, benchmark_values_by_distribution_mv_next.fact_date, benchmark_values_by_distribution_mv_next.distribution_type, benchmark_values_by_distribution_mv_next.taxonomy_node_id, benchmark_values_by_distribution_mv_next.weight, benchmark_values_by_distribution_mv_next.taxonomy_code ], stream key: [ benchmark_values_by_distribution_mv_next.benchmark_id, benchmark_values_by_distribution_mv_next.fact_date, benchmark_values_by_distribution_mv_next.distribution_type, benchmark_values_by_distribution_mv_next.taxonomy_node_id, benchmark_values_by_distribution_mv_next.taxonomy_code ] }

Fragment 64333 (Actor 747504,747505)
StreamFilter { predicate: (benchmark_values_by_distribution_mv_next.distribution_type = 'asset_classes':Varchar) } { output: [ benchmark_values_by_distribution_mv_next.benchmark_id, benchmark_values_by_distribution_mv_next.fact_date, benchmark_values_by_distribution_mv_next.distribution_type, benchmark_values_by_distribution_mv_next.taxonomy_node_id, benchmark_values_by_distribution_mv_next.weight, benchmark_values_by_distribution_mv_next.taxonomy_code ], stream key: [ benchmark_values_by_distribution_mv_next.benchmark_id, benchmark_values_by_distribution_mv_next.fact_date, benchmark_values_by_distribution_mv_next.distribution_type, benchmark_values_by_distribution_mv_next.taxonomy_node_id, benchmark_values_by_distribution_mv_next.taxonomy_code ] }
└── StreamTableScan { table: benchmark_values_by_distribution_mv_next, columns: [benchmark_id, fact_date, distribution_type, taxonomy_node_id, weight, taxonomy_code] } { output: [ benchmark_values_by_distribution_mv_next.benchmark_id, benchmark_values_by_distribution_mv_next.fact_date, benchmark_values_by_distribution_mv_next.distribution_type, benchmark_values_by_distribution_mv_next.taxonomy_node_id, benchmark_values_by_distribution_mv_next.weight, benchmark_values_by_distribution_mv_next.taxonomy_code ], stream key: [ benchmark_values_by_distribution_mv_next.benchmark_id, benchmark_values_by_distribution_mv_next.fact_date, benchmark_values_by_distribution_mv_next.distribution_type, benchmark_values_by_distribution_mv_next.taxonomy_node_id, benchmark_values_by_distribution_mv_next.taxonomy_code ] }
    ├── Upstream { output: [ benchmark_id, fact_date, distribution_type, taxonomy_node_id, weight, taxonomy_code ], stream key: [] }
    └── BatchPlanNode { output: [ benchmark_id, fact_date, distribution_type, taxonomy_node_id, weight, taxonomy_code ], stream key: [] }

Fragment 64334 (Actor 747502,747503)
StreamLocalityProvider { locality_columns: [opportunity_conditions_mv_next.activity_name] } { output: [ opportunity_conditions_mv_next.opportunity_id, opportunity_conditions_mv_next.activity_name, opportunity_conditions_mv_next.op, opportunity_conditions_mv_next.threshold, opportunity_conditions_mv_next._rw_projected_row_id, opportunity_conditions_mv_next._rw_projected_row_id#1 ], stream key: [ opportunity_conditions_mv_next.activity_name, opportunity_conditions_mv_next.opportunity_id, opportunity_conditions_mv_next._rw_projected_row_id, opportunity_conditions_mv_next._rw_projected_row_id#1 ] }
└── MergeExecutor { output: [ opportunity_conditions_mv_next.opportunity_id, opportunity_conditions_mv_next.activity_name, opportunity_conditions_mv_next.op, opportunity_conditions_mv_next.threshold, opportunity_conditions_mv_next._rw_projected_row_id, opportunity_conditions_mv_next._rw_projected_row_id#1 ], stream key: [ opportunity_conditions_mv_next.opportunity_id, opportunity_conditions_mv_next._rw_projected_row_id, opportunity_conditions_mv_next._rw_projected_row_id#1 ] }

Fragment 64335 (Actor 747338,747337)
StreamTableScan { table: opportunity_conditions_mv_next, columns: [opportunity_id, activity_name, op, threshold, _rw_projected_row_id, _rw_projected_row_id#1] } { output: [ opportunity_conditions_mv_next.opportunity_id, opportunity_conditions_mv_next.activity_name, opportunity_conditions_mv_next.op, opportunity_conditions_mv_next.threshold, opportunity_conditions_mv_next._rw_projected_row_id, opportunity_conditions_mv_next._rw_projected_row_id#1 ], stream key: [ opportunity_conditions_mv_next.opportunity_id, opportunity_conditions_mv_next._rw_projected_row_id, opportunity_conditions_mv_next._rw_projected_row_id#1 ] }
├── Upstream { output: [ opportunity_id, activity_name, op, threshold, _rw_projected_row_id, _rw_projected_row_id#1 ], stream key: [] }
└── BatchPlanNode { output: [ opportunity_id, activity_name, op, threshold, _rw_projected_row_id, _rw_projected_row_id#1 ], stream key: [] }