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

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

Job is idle — throughput ~0; structure shown.

Stateful hash join (4 state tables) — consider a temporal join for dimension lookupsAggregation state — unbounded unless keyed or temporally filtered
116 operators
Materialize · insights.account_groups_mv
0% idle 2 actors
Union
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
Project · Not(IsNull(min(lifecycle_profiles.base_currency_code)))
2 actors
Filter · Not(IsNull(min(lifecycle_profiles.base_currency_code)))
0% idle 2 actors
Project · Not(IsNull(min(lifecycle_profiles.base_currency_code)))
2 actors
HashAgg · Not(IsNull(min(lifecycle_profiles.base_currency_code))) Aggregation state — unbounded unless keyed or temporally filtered
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore · LeftOuter · party_account_direct_mv_next.customer_relationship_id = lif…
2 actors
HashJoin · LeftOuter · party_account_direct_mv_next.customer_relationship_id = lif… 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 · lifecycle_profiles
2 actors
Filter · lifecycle_profiles
0% idle 2 actors
StreamScan · lifecycle_profiles
0% idle 2 actors
BatchPlan
2 actors
Merge
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore · Inner · party_account_direct_mv_next.account_id = open_accounts_mv.…
2 actors
HashJoin · Inner · party_account_direct_mv_next.account_id = open_accounts_mv.… 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 · open_accounts_mv
0% idle 2 actors
BatchPlan
2 actors
Merge
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
Union
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
Project · party_account_via_portfolio_mv_next
2 actors
StreamScan · party_account_via_portfolio_mv_next
0% idle 2 actors
BatchPlan
2 actors
Merge
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
Project · party_account_direct_mv_next
2 actors
StreamScan · party_account_direct_mv_next
0% idle 2 actors
BatchPlan
2 actors
Merge
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
Project
2 actors
HashAgg Aggregation state — unbounded unless keyed or temporally filtered
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore · Inner · user_account_membership_mv.account_id = open_accounts_mv.ac…
2 actors
HashJoin · Inner · user_account_membership_mv.account_id = open_accounts_mv.ac… 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 · open_accounts_mv
0% idle 2 actors
BatchPlan
2 actors
Merge
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore · Inner · user_account_membership_mv.user_id = users_dm.user_id
2 actors
HashJoin · Inner · user_account_membership_mv.user_id = users_dm.user_id Stateful hash join (4 state tables) — consider a temporal join for dimension lookups
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
StreamScan · users_dm
0% idle 2 actors
BatchPlan
2 actors
Merge
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
StreamScan · user_account_membership_mv
0% idle 2 actors
BatchPlan
2 actors
Merge
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
Project
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore · Inner · portfolios_dm.portfolio_id = portfolio_account_group_types_…
2 actors
HashJoin · Inner · portfolios_dm.portfolio_id = portfolio_account_group_types_… 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
Filter · portfolio_account_group_types_mv
0% idle 2 actors
StreamScan · portfolio_account_group_types_mv
0% idle 2 actors
BatchPlan
2 actors
Merge
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
Project · portfolios_dm
2 actors
Filter · portfolios_dm
0% idle 2 actors
StreamScan · portfolios_dm
0% idle 2 actors
BatchPlan
2 actors
Merge
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
Project
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore · Inner · clients_dm.id = client_account_group_types_mv.client_id
2 actors
HashJoin · Inner · clients_dm.id = client_account_group_types_mv.client_id Stateful hash join (4 state tables) — consider a temporal join for dimension lookups
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
Filter · client_account_group_types_mv
0% idle 2 actors
StreamScan · client_account_group_types_mv
0% idle 2 actors
BatchPlan
2 actors
Merge
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
Project · clients_dm
2 actors
Filter · clients_dm
0% idle 2 actors
StreamScan · clients_dm
0% idle 2 actors
BatchPlan
2 actors
Merge
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
Project · open_accounts_mv
2 actors
StreamScan · open_accounts_mv
0% idle 2 actors
BatchPlan
2 actors
Merge
2 actors
Heat = the operator's output-buffer backpressure over the sampling window. Click a node to fold its subtree.
Materialize · insights.account_groups_mv Materialize insights.account_groups… idle · 2 actors Union Union idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors Project · Not(IsNull(min(lifecycle_profiles.base_currency_code))) Project Not(IsNull(min(lifecycl… — · 2 actors Filter · Not(IsNull(min(lifecycle_profiles.base_currency_code))) Filter Not(IsNull(min(lifecycl… idle · 2 actors Project · Not(IsNull(min(lifecycle_profiles.base_currency_code))) Project Not(IsNull(min(lifecycl… — · 2 actors HashAgg · Not(IsNull(min(lifecycle_profiles.base_currency_code))) HashAgg Not(IsNull(min(lifecycl… idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore · LeftOuter · party_account_direct_mv_next.customer_relationship_id = lif… SyncLogStore LeftOuter · party_accou… — · 2 actors HashJoin · LeftOuter · party_account_direct_mv_next.customer_relationship_id = lif… HashJoin LeftOuter · party_accou… idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors Project · lifecycle_profiles Project lifecycle_profiles — · 2 actors Filter · lifecycle_profiles Filter lifecycle_profiles idle · 2 actors StreamScan · lifecycle_profiles StreamScan lifecycle_profiles idle · 2 actors BatchPlan BatchPlan — · 2 actors Merge Merge — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore · Inner · party_account_direct_mv_next.account_id = open_accounts_mv.… SyncLogStore Inner · party_account_d… — · 2 actors HashJoin · Inner · party_account_direct_mv_next.account_id = open_accounts_mv.… HashJoin Inner · party_account_d… idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors StreamScan · open_accounts_mv StreamScan open_accounts_mv idle · 2 actors BatchPlan BatchPlan — · 2 actors Merge Merge — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors Union Union idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors Project · party_account_via_portfolio_mv_next Project party_account_via_portf… — · 2 actors StreamScan · party_account_via_portfolio_mv_next StreamScan party_account_via_portf… idle · 2 actors BatchPlan BatchPlan — · 2 actors Merge Merge — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors Project · party_account_direct_mv_next Project party_account_direct_mv… — · 2 actors StreamScan · party_account_direct_mv_next StreamScan party_account_direct_mv… idle · 2 actors BatchPlan BatchPlan — · 2 actors Merge Merge — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors Project Project — · 2 actors HashAgg HashAgg idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore · Inner · user_account_membership_mv.account_id = open_accounts_mv.ac… SyncLogStore Inner · user_account_me… — · 2 actors HashJoin · Inner · user_account_membership_mv.account_id = open_accounts_mv.ac… HashJoin Inner · user_account_me… idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors StreamScan · open_accounts_mv StreamScan open_accounts_mv idle · 2 actors BatchPlan BatchPlan — · 2 actors Merge Merge — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore · Inner · user_account_membership_mv.user_id = users_dm.user_id SyncLogStore Inner · user_account_me… — · 2 actors HashJoin · Inner · user_account_membership_mv.user_id = users_dm.user_id HashJoin Inner · user_account_me… idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors StreamScan · users_dm StreamScan users_dm idle · 2 actors BatchPlan BatchPlan — · 2 actors Merge Merge — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors StreamScan · user_account_membership_mv StreamScan user_account_membership… idle · 2 actors BatchPlan BatchPlan — · 2 actors Merge Merge — · 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 · portfolios_dm.portfolio_id = portfolio_account_group_types_… SyncLogStore Inner · portfolios_dm.p… — · 2 actors HashJoin · Inner · portfolios_dm.portfolio_id = portfolio_account_group_types_… HashJoin Inner · portfolios_dm.p… idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors Filter · portfolio_account_group_types_mv Filter portfolio_account_group… idle · 2 actors StreamScan · portfolio_account_group_types_mv StreamScan portfolio_account_group… idle · 2 actors BatchPlan BatchPlan — · 2 actors Merge Merge — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors Project · portfolios_dm Project portfolios_dm — · 2 actors Filter · portfolios_dm Filter portfolios_dm idle · 2 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 Project Project — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore · Inner · clients_dm.id = client_account_group_types_mv.client_id SyncLogStore Inner · clients_dm.id =… — · 2 actors HashJoin · Inner · clients_dm.id = client_account_group_types_mv.client_id HashJoin Inner · clients_dm.id =… idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors Filter · client_account_group_types_mv Filter client_account_group_ty… idle · 2 actors StreamScan · client_account_group_types_mv StreamScan client_account_group_ty… idle · 2 actors BatchPlan BatchPlan — · 2 actors Merge Merge — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors Project · clients_dm Project clients_dm — · 2 actors Filter · clients_dm Filter clients_dm idle · 2 actors StreamScan · clients_dm StreamScan clients_dm idle · 2 actors BatchPlan BatchPlan — · 2 actors Merge Merge — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors Project · open_accounts_mv Project open_accounts_mv — · 2 actors StreamScan · open_accounts_mv StreamScan open_accounts_mv 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 25315 (Actor 123349,123350)
StreamMaterialize { columns: [account_group_id, base_currency, opening_date, source_entity_type, open_accounts_mv.account_id(hidden), null:Varchar(hidden), null:Varchar#1(hidden), $src(hidden)], stream_key: [open_accounts_mv.account_id, null:Varchar, null:Varchar#1, $src], pk_columns: [open_accounts_mv.account_id, null:Varchar, null:Varchar#1, $src], pk_conflict: NoCheck }
├── output: [ $expr1, open_accounts_mv.base_currency_code, open_accounts_mv.opening_date, 'account':Varchar, open_accounts_mv.account_id, null:Varchar, null:Varchar, $src ]
├── stream key: [ open_accounts_mv.account_id, null:Varchar, null:Varchar, $src ]
└── StreamUnion { all: true } { output: [ $expr1, open_accounts_mv.base_currency_code, open_accounts_mv.opening_date, 'account':Varchar, open_accounts_mv.account_id, null:Varchar, null:Varchar, $src ], stream key: [ open_accounts_mv.account_id, null:Varchar, null:Varchar, $src ] }
    ├── MergeExecutor { output: [ $expr1, open_accounts_mv.base_currency_code, open_accounts_mv.opening_date, 'account':Varchar, open_accounts_mv.account_id, null:Varchar, null:Varchar, 0:Int32 ], stream key: [ open_accounts_mv.account_id ] }
    ├── MergeExecutor { output: [ $expr2, clients_dm.base_currency_code, clients_dm.onboarding_date, 'client':Varchar, clients_dm.id, client_account_group_types_mv.type, null:Varchar, 1:Int32 ], stream key: [ clients_dm.id, client_account_group_types_mv.type ] }
    ├── MergeExecutor { output: [ $expr3, portfolios_dm.base_currency_code, portfolios_dm.opening_date, 'portfolio':Varchar, portfolios_dm.portfolio_id, portfolio_account_group_types_mv.type, null:Varchar, 2:Int32 ], stream key: [ portfolios_dm.portfolio_id, portfolio_account_group_types_mv.type ] }
    ├── MergeExecutor { output: [ $expr4, users_dm.base_currency_code, min(open_accounts_mv.opening_date), 'user':Varchar, user_account_membership_mv.user_id, user_account_membership_mv.type, users_dm.base_currency_code, 3:Int32 ], stream key: [ user_account_membership_mv.user_id, user_account_membership_mv.type, users_dm.base_currency_code ] }
    └── MergeExecutor { output: [ $expr5, min(lifecycle_profiles.base_currency_code), min(open_accounts_mv.opening_date), 'party':Varchar, party_account_direct_mv_next.party_id, party_account_direct_mv_next.type, null:Varchar, 4:Int32 ], stream key: [ party_account_direct_mv_next.party_id, party_account_direct_mv_next.type ] }

Fragment 25316 (Actor 123348,123347)
StreamProject { exprs: [ConcatOp('account_group_':Varchar, Md5(ConcatOp(open_accounts_mv.account_id, 'all':Varchar)::Bytea)) as $expr1, open_accounts_mv.base_currency_code, open_accounts_mv.opening_date, 'account':Varchar, open_accounts_mv.account_id, null:Varchar, null:Varchar, 0:Int32] }
├── output: [ $expr1, open_accounts_mv.base_currency_code, open_accounts_mv.opening_date, 'account':Varchar, open_accounts_mv.account_id, null:Varchar, null:Varchar, 0:Int32 ]
├── stream key: [ open_accounts_mv.account_id ]
└── StreamTableScan { table: open_accounts_mv, columns: [account_id, base_currency_code, opening_date] } { output: [ open_accounts_mv.account_id, open_accounts_mv.base_currency_code, open_accounts_mv.opening_date ], stream key: [ open_accounts_mv.account_id ] }
    ├── Upstream { output: [ account_id, base_currency_code, opening_date ], stream key: [] }
    └── BatchPlanNode { output: [ account_id, base_currency_code, opening_date ], stream key: [] }

Fragment 25317 (Actor 123352,123351)
StreamProject { exprs: [ConcatOp('account_group_':Varchar, Md5(ConcatOp(clients_dm.id, 'all':Varchar)::Bytea)) as $expr2, clients_dm.base_currency_code, clients_dm.onboarding_date, 'client':Varchar, clients_dm.id, client_account_group_types_mv.type, null:Varchar, 1:Int32] }
├── output: [ $expr2, clients_dm.base_currency_code, clients_dm.onboarding_date, 'client':Varchar, clients_dm.id, client_account_group_types_mv.type, null:Varchar, 1:Int32 ]
├── stream key: [ clients_dm.id, client_account_group_types_mv.type ]
└── MergeExecutor { output: [ clients_dm.id, clients_dm.base_currency_code, clients_dm.onboarding_date, client_account_group_types_mv.client_id, client_account_group_types_mv.type ], stream key: [ clients_dm.id, client_account_group_types_mv.type ] }

Fragment 25318 (Actor 123354,123353)
StreamSyncLogStore { output: [ clients_dm.id, clients_dm.base_currency_code, clients_dm.onboarding_date, client_account_group_types_mv.client_id, client_account_group_types_mv.type ], stream key: [ clients_dm.id, client_account_group_types_mv.type ] }
└── StreamHashJoin { type: Inner, predicate: clients_dm.id = client_account_group_types_mv.client_id } { output: [ clients_dm.id, clients_dm.base_currency_code, clients_dm.onboarding_date, client_account_group_types_mv.client_id, client_account_group_types_mv.type ], stream key: [ clients_dm.id, client_account_group_types_mv.type ] }
    ├── MergeExecutor { output: [ clients_dm.id, clients_dm.base_currency_code, clients_dm.onboarding_date ], stream key: [ clients_dm.id ] }
    └── MergeExecutor { output: [ client_account_group_types_mv.client_id, client_account_group_types_mv.type ], stream key: [ client_account_group_types_mv.client_id, client_account_group_types_mv.type ] }

Fragment 25319 (Actor 123373,123374)
StreamProject { exprs: [clients_dm.id, clients_dm.base_currency_code, clients_dm.onboarding_date] } { output: [ clients_dm.id, clients_dm.base_currency_code, clients_dm.onboarding_date ], stream key: [ clients_dm.id ] }
└── StreamFilter { predicate: IsNull(clients_dm.closing_date) AND Not(IsTrue(clients_dm.m_is_stub)) } { output: [ clients_dm.id, clients_dm.base_currency_code, clients_dm.onboarding_date, clients_dm.closing_date, clients_dm.m_is_stub ], stream key: [ clients_dm.id ] }
    └── StreamTableScan { table: clients_dm, columns: [id, base_currency_code, onboarding_date, closing_date, m_is_stub] } { output: [ clients_dm.id, clients_dm.base_currency_code, clients_dm.onboarding_date, clients_dm.closing_date, clients_dm.m_is_stub ], stream key: [ clients_dm.id ] }
        ├── Upstream { output: [ id, base_currency_code, onboarding_date, closing_date, m_is_stub ], stream key: [] }
        └── BatchPlanNode { output: [ id, base_currency_code, onboarding_date, closing_date, m_is_stub ], stream key: [] }

Fragment 25320 (Actor 123375,123376)
StreamFilter { predicate: (client_account_group_types_mv.type = 'all':Varchar) } { output: [ client_account_group_types_mv.client_id, client_account_group_types_mv.type ], stream key: [ client_account_group_types_mv.client_id, client_account_group_types_mv.type ] }
└── StreamTableScan { table: client_account_group_types_mv, columns: [client_id, type] } { output: [ client_account_group_types_mv.client_id, client_account_group_types_mv.type ], stream key: [ client_account_group_types_mv.client_id, client_account_group_types_mv.type ] }
    ├── Upstream { output: [ client_id, type ], stream key: [] }
    └── BatchPlanNode { output: [ client_id, type ], stream key: [] }

Fragment 25321 (Actor 123357,123358)
StreamProject { exprs: [ConcatOp('account_group_':Varchar, Md5(ConcatOp(portfolios_dm.portfolio_id, 'all':Varchar)::Bytea)) as $expr3, portfolios_dm.base_currency_code, portfolios_dm.opening_date, 'portfolio':Varchar, portfolios_dm.portfolio_id, portfolio_account_group_types_mv.type, null:Varchar, 2:Int32] }
├── output: [ $expr3, portfolios_dm.base_currency_code, portfolios_dm.opening_date, 'portfolio':Varchar, portfolios_dm.portfolio_id, portfolio_account_group_types_mv.type, null:Varchar, 2:Int32 ]
├── stream key: [ portfolios_dm.portfolio_id, portfolio_account_group_types_mv.type ]
└── MergeExecutor { output: [ portfolios_dm.portfolio_id, portfolios_dm.base_currency_code, portfolios_dm.opening_date, portfolio_account_group_types_mv.portfolio_id, portfolio_account_group_types_mv.type ], stream key: [ portfolios_dm.portfolio_id, portfolio_account_group_types_mv.type ] }

Fragment 25322 (Actor 123355,123356)
StreamSyncLogStore { output: [ portfolios_dm.portfolio_id, portfolios_dm.base_currency_code, portfolios_dm.opening_date, portfolio_account_group_types_mv.portfolio_id, portfolio_account_group_types_mv.type ], stream key: [ portfolios_dm.portfolio_id, portfolio_account_group_types_mv.type ] }
└── StreamHashJoin { type: Inner, predicate: portfolios_dm.portfolio_id = portfolio_account_group_types_mv.portfolio_id }
    ├── output: [ portfolios_dm.portfolio_id, portfolios_dm.base_currency_code, portfolios_dm.opening_date, portfolio_account_group_types_mv.portfolio_id, portfolio_account_group_types_mv.type ]
    ├── stream key: [ portfolios_dm.portfolio_id, portfolio_account_group_types_mv.type ]
    ├── MergeExecutor { output: [ portfolios_dm.portfolio_id, portfolios_dm.base_currency_code, portfolios_dm.opening_date ], stream key: [ portfolios_dm.portfolio_id ] }
    └── MergeExecutor { output: [ portfolio_account_group_types_mv.portfolio_id, portfolio_account_group_types_mv.type ], stream key: [ portfolio_account_group_types_mv.portfolio_id, portfolio_account_group_types_mv.type ] }

Fragment 25323 (Actor 123378,123377)
StreamProject { exprs: [portfolios_dm.portfolio_id, portfolios_dm.base_currency_code, portfolios_dm.opening_date] } { output: [ portfolios_dm.portfolio_id, portfolios_dm.base_currency_code, portfolios_dm.opening_date ], stream key: [ portfolios_dm.portfolio_id ] }
└── StreamFilter { predicate: IsNull(portfolios_dm.disabled_at) AND Not(IsTrue(portfolios_dm.m_is_stub)) } { output: [ portfolios_dm.portfolio_id, portfolios_dm.base_currency_code, portfolios_dm.opening_date, portfolios_dm.disabled_at, portfolios_dm.m_is_stub ], stream key: [ portfolios_dm.portfolio_id ] }
    └── StreamTableScan { table: portfolios_dm, columns: [portfolio_id, base_currency_code, opening_date, disabled_at, m_is_stub] } { output: [ portfolios_dm.portfolio_id, portfolios_dm.base_currency_code, portfolios_dm.opening_date, portfolios_dm.disabled_at, portfolios_dm.m_is_stub ], stream key: [ portfolios_dm.portfolio_id ] }
        ├── Upstream { output: [ portfolio_id, base_currency_code, opening_date, disabled_at, m_is_stub ], stream key: [] }
        └── BatchPlanNode { output: [ portfolio_id, base_currency_code, opening_date, disabled_at, m_is_stub ], stream key: [] }

Fragment 25324 (Actor 123380,123379)
StreamFilter { predicate: (portfolio_account_group_types_mv.type = 'all':Varchar) } { output: [ portfolio_account_group_types_mv.portfolio_id, portfolio_account_group_types_mv.type ], stream key: [ portfolio_account_group_types_mv.portfolio_id, portfolio_account_group_types_mv.type ] }
└── StreamTableScan { table: portfolio_account_group_types_mv, columns: [portfolio_id, type] } { output: [ portfolio_account_group_types_mv.portfolio_id, portfolio_account_group_types_mv.type ], stream key: [ portfolio_account_group_types_mv.portfolio_id, portfolio_account_group_types_mv.type ] }
    ├── Upstream { output: [ portfolio_id, type ], stream key: [] }
    └── BatchPlanNode { output: [ portfolio_id, type ], stream key: [] }

Fragment 25325 (Actor 123360,123359)
StreamProject { exprs: [ConcatOp('account_group_':Varchar, Md5(ConcatOp(user_account_membership_mv.user_id, user_account_membership_mv.type)::Bytea)) as $expr4, users_dm.base_currency_code, min(open_accounts_mv.opening_date), 'user':Varchar, user_account_membership_mv.user_id, user_account_membership_mv.type, users_dm.base_currency_code, 3:Int32] }
├── output: [ $expr4, users_dm.base_currency_code, min(open_accounts_mv.opening_date), 'user':Varchar, user_account_membership_mv.user_id, user_account_membership_mv.type, users_dm.base_currency_code, 3:Int32 ]
├── stream key: [ user_account_membership_mv.user_id, user_account_membership_mv.type, users_dm.base_currency_code ]
└── StreamHashAgg { group_key: [user_account_membership_mv.user_id, user_account_membership_mv.type, users_dm.base_currency_code], aggs: [min(open_accounts_mv.opening_date), count] }
    ├── output: [ user_account_membership_mv.user_id, user_account_membership_mv.type, users_dm.base_currency_code, min(open_accounts_mv.opening_date), count ]
    ├── stream key: [ user_account_membership_mv.user_id, user_account_membership_mv.type, users_dm.base_currency_code ]
    └── MergeExecutor { output: [ user_account_membership_mv.user_id, user_account_membership_mv.type, users_dm.base_currency_code, open_accounts_mv.opening_date, user_account_membership_mv.account_id, open_accounts_mv.account_id ], stream key: [ user_account_membership_mv.user_id, user_account_membership_mv.account_id ] }

Fragment 25326 (Actor 123361,123362)
StreamSyncLogStore { output: [ user_account_membership_mv.user_id, user_account_membership_mv.type, users_dm.base_currency_code, open_accounts_mv.opening_date, user_account_membership_mv.account_id, open_accounts_mv.account_id ], stream key: [ user_account_membership_mv.user_id, user_account_membership_mv.account_id ] }
└── StreamHashJoin { type: Inner, predicate: user_account_membership_mv.account_id = open_accounts_mv.account_id }
    ├── output: [ user_account_membership_mv.user_id, user_account_membership_mv.type, users_dm.base_currency_code, open_accounts_mv.opening_date, user_account_membership_mv.account_id, open_accounts_mv.account_id ]
    ├── stream key: [ user_account_membership_mv.user_id, user_account_membership_mv.account_id ]
    ├── MergeExecutor { output: [ user_account_membership_mv.user_id, user_account_membership_mv.account_id, user_account_membership_mv.type, users_dm.base_currency_code, users_dm.user_id ], stream key: [ user_account_membership_mv.user_id, user_account_membership_mv.account_id ] }
    └── MergeExecutor { output: [ open_accounts_mv.account_id, open_accounts_mv.opening_date ], stream key: [ open_accounts_mv.account_id ] }

Fragment 25327 (Actor 123364,123363)
StreamSyncLogStore { output: [ user_account_membership_mv.user_id, user_account_membership_mv.account_id, user_account_membership_mv.type, users_dm.base_currency_code, users_dm.user_id ], stream key: [ user_account_membership_mv.user_id, user_account_membership_mv.account_id ] }
└── StreamHashJoin { type: Inner, predicate: user_account_membership_mv.user_id = users_dm.user_id } { output: [ user_account_membership_mv.user_id, user_account_membership_mv.account_id, user_account_membership_mv.type, users_dm.base_currency_code, users_dm.user_id ], stream key: [ user_account_membership_mv.user_id, user_account_membership_mv.account_id ] }
    ├── MergeExecutor { output: [ user_account_membership_mv.user_id, user_account_membership_mv.account_id, user_account_membership_mv.type ], stream key: [ user_account_membership_mv.user_id, user_account_membership_mv.account_id ] }
    └── MergeExecutor { output: [ users_dm.user_id, users_dm.base_currency_code ], stream key: [ users_dm.user_id ] }

Fragment 25328 (Actor 123382,123381)
StreamTableScan { table: user_account_membership_mv, columns: [user_id, account_id, type] } { output: [ user_account_membership_mv.user_id, user_account_membership_mv.account_id, user_account_membership_mv.type ], stream key: [ user_account_membership_mv.user_id, user_account_membership_mv.account_id ] }
├── Upstream { output: [ user_id, account_id, type ], stream key: [] }
└── BatchPlanNode { output: [ user_id, account_id, type ], stream key: [] }

Fragment 25329 (Actor 123383,123384)
StreamTableScan { table: users_dm, columns: [user_id, base_currency_code] } { output: [ users_dm.user_id, users_dm.base_currency_code ], stream key: [ users_dm.user_id ] }
├── Upstream { output: [ user_id, base_currency_code ], stream key: [] }
└── BatchPlanNode { output: [ user_id, base_currency_code ], stream key: [] }

Fragment 25330 (Actor 123386,123385)
StreamTableScan { table: open_accounts_mv, columns: [account_id, opening_date] } { output: [ open_accounts_mv.account_id, open_accounts_mv.opening_date ], stream key: [ open_accounts_mv.account_id ] }
├── Upstream { output: [ account_id, opening_date ], stream key: [] }
└── BatchPlanNode { output: [ account_id, opening_date ], stream key: [] }

Fragment 25331 (Actor 123366,123365)
StreamProject { exprs: [ConcatOp('account_group_':Varchar, Md5(ConcatOp(party_account_direct_mv_next.party_id, party_account_direct_mv_next.type)::Bytea)) as $expr5, min(lifecycle_profiles.base_currency_code), min(open_accounts_mv.opening_date), 'party':Varchar, party_account_direct_mv_next.party_id, party_account_direct_mv_next.type, null:Varchar, 4:Int32] }
├── output: [ $expr5, min(lifecycle_profiles.base_currency_code), min(open_accounts_mv.opening_date), 'party':Varchar, party_account_direct_mv_next.party_id, party_account_direct_mv_next.type, null:Varchar, 4:Int32 ]
├── stream key: [ party_account_direct_mv_next.party_id, party_account_direct_mv_next.type ]
└── StreamFilter { predicate: Not(IsNull(min(lifecycle_profiles.base_currency_code))) } { output: [ party_account_direct_mv_next.party_id, party_account_direct_mv_next.type, min(lifecycle_profiles.base_currency_code), min(open_accounts_mv.opening_date) ], stream key: [ party_account_direct_mv_next.party_id, party_account_direct_mv_next.type ] }
    └── StreamProject { exprs: [party_account_direct_mv_next.party_id, party_account_direct_mv_next.type, min(lifecycle_profiles.base_currency_code), min(open_accounts_mv.opening_date)] }
        ├── output: [ party_account_direct_mv_next.party_id, party_account_direct_mv_next.type, min(lifecycle_profiles.base_currency_code), min(open_accounts_mv.opening_date) ]
        ├── stream key: [ party_account_direct_mv_next.party_id, party_account_direct_mv_next.type ]
        └── StreamHashAgg { group_key: [party_account_direct_mv_next.party_id, party_account_direct_mv_next.type], aggs: [min(lifecycle_profiles.base_currency_code), min(open_accounts_mv.opening_date), count] }
            ├── output: [ party_account_direct_mv_next.party_id, party_account_direct_mv_next.type, min(lifecycle_profiles.base_currency_code), min(open_accounts_mv.opening_date), count ]
            ├── stream key: [ party_account_direct_mv_next.party_id, party_account_direct_mv_next.type ]
            └── MergeExecutor
                ├── output:
                │   ┌── party_account_direct_mv_next.party_id
                │   ├── party_account_direct_mv_next.type
                │   ├── lifecycle_profiles.base_currency_code
                │   ├── open_accounts_mv.opening_date
                │   ├── party_account_direct_mv_next.party_involvements_dm.id
                │   ├── party_account_direct_mv_next.party_involvements_dm.entity_id
                │   ├── party_account_direct_mv_next.party_involvements_dm.customer_relationship_id
                │   ├── party_account_direct_mv_next.$src
                │   ├── null:Date
                │   ├── null:Varchar
                │   ├── null:Varchar
                │   ├── null:Varchar
                │   ├── $src
                │   ├── party_account_direct_mv_next.account_id
                │   ├── party_account_direct_mv_next.customer_relationship_id
                │   └── lifecycle_profiles.id
                └── stream key:
                    ┌── party_account_direct_mv_next.party_involvements_dm.id
                    ├── party_account_direct_mv_next.party_involvements_dm.entity_id
                    ├── party_account_direct_mv_next.party_involvements_dm.customer_relationship_id
                    ├── party_account_direct_mv_next.$src
                    ├── null:Date
                    ├── null:Varchar
                    ├── null:Varchar
                    ├── null:Varchar
                    ├── $src
                    ├── party_account_direct_mv_next.account_id
                    ├── lifecycle_profiles.id
                    └── party_account_direct_mv_next.customer_relationship_id

Fragment 25332 (Actor 123367,123368)
StreamSyncLogStore
├── output:
│   ┌── party_account_direct_mv_next.party_id
│   ├── party_account_direct_mv_next.type
│   ├── lifecycle_profiles.base_currency_code
│   ├── open_accounts_mv.opening_date
│   ├── party_account_direct_mv_next.party_involvements_dm.id
│   ├── party_account_direct_mv_next.party_involvements_dm.entity_id
│   ├── party_account_direct_mv_next.party_involvements_dm.customer_relationship_id
│   ├── party_account_direct_mv_next.$src
│   ├── null:Date
│   ├── null:Varchar
│   ├── null:Varchar
│   ├── null:Varchar
│   ├── $src
│   ├── party_account_direct_mv_next.account_id
│   ├── party_account_direct_mv_next.customer_relationship_id
│   └── lifecycle_profiles.id
├── stream key:
│   ┌── party_account_direct_mv_next.party_involvements_dm.id
│   ├── party_account_direct_mv_next.party_involvements_dm.entity_id
│   ├── party_account_direct_mv_next.party_involvements_dm.customer_relationship_id
│   ├── party_account_direct_mv_next.$src
│   ├── null:Date
│   ├── null:Varchar
│   ├── null:Varchar
│   ├── null:Varchar
│   ├── $src
│   ├── party_account_direct_mv_next.account_id
│   ├── lifecycle_profiles.id
│   └── party_account_direct_mv_next.customer_relationship_id
└── StreamHashJoin { type: LeftOuter, predicate: party_account_direct_mv_next.customer_relationship_id = lifecycle_profiles.customer_relationship_id }
    ├── output:
    │   ┌── party_account_direct_mv_next.party_id
    │   ├── party_account_direct_mv_next.type
    │   ├── lifecycle_profiles.base_currency_code
    │   ├── open_accounts_mv.opening_date
    │   ├── party_account_direct_mv_next.party_involvements_dm.id
    │   ├── party_account_direct_mv_next.party_involvements_dm.entity_id
    │   ├── party_account_direct_mv_next.party_involvements_dm.customer_relationship_id
    │   ├── party_account_direct_mv_next.$src
    │   ├── null:Date
    │   ├── null:Varchar
    │   ├── null:Varchar
    │   ├── null:Varchar
    │   ├── $src
    │   ├── party_account_direct_mv_next.account_id
    │   ├── party_account_direct_mv_next.customer_relationship_id
    │   └── lifecycle_profiles.id
    ├── stream key:
    │   ┌── party_account_direct_mv_next.party_involvements_dm.id
    │   ├── party_account_direct_mv_next.party_involvements_dm.entity_id
    │   ├── party_account_direct_mv_next.party_involvements_dm.customer_relationship_id
    │   ├── party_account_direct_mv_next.$src
    │   ├── null:Date
    │   ├── null:Varchar
    │   ├── null:Varchar
    │   ├── null:Varchar
    │   ├── $src
    │   ├── party_account_direct_mv_next.account_id
    │   ├── lifecycle_profiles.id
    │   └── party_account_direct_mv_next.customer_relationship_id
    ├── MergeExecutor
    │   ├── output:
    │   │   ┌── party_account_direct_mv_next.party_id
    │   │   ├── party_account_direct_mv_next.customer_relationship_id
    │   │   ├── party_account_direct_mv_next.type
    │   │   ├── open_accounts_mv.opening_date
    │   │   ├── party_account_direct_mv_next.party_involvements_dm.id
    │   │   ├── party_account_direct_mv_next.party_involvements_dm.entity_id
    │   │   ├── party_account_direct_mv_next.party_involvements_dm.customer_relationship_id
    │   │   ├── party_account_direct_mv_next.$src
    │   │   ├── null:Date
    │   │   ├── null:Varchar
    │   │   ├── null:Varchar
    │   │   ├── null:Varchar
    │   │   ├── $src
    │   │   ├── party_account_direct_mv_next.account_id
    │   │   └── open_accounts_mv.account_id
    │   └── stream key: [ party_account_direct_mv_next.party_involvements_dm.id, party_account_direct_mv_next.party_involvements_dm.entity_id, party_account_direct_mv_next.party_involvements_dm.customer_relationship_id, party_account_direct_mv_next.$src, null:Date, null:Varchar, null:Varchar, null:Varchar, $src, party_account_direct_mv_next.account_id ]
    └── MergeExecutor { output: [ lifecycle_profiles.customer_relationship_id, lifecycle_profiles.base_currency_code, lifecycle_profiles.id ], stream key: [ lifecycle_profiles.id ] }

Fragment 25333 (Actor 123369,123370)
StreamSyncLogStore
├── output:
│   ┌── party_account_direct_mv_next.party_id
│   ├── party_account_direct_mv_next.customer_relationship_id
│   ├── party_account_direct_mv_next.type
│   ├── open_accounts_mv.opening_date
│   ├── party_account_direct_mv_next.party_involvements_dm.id
│   ├── party_account_direct_mv_next.party_involvements_dm.entity_id
│   ├── party_account_direct_mv_next.party_involvements_dm.customer_relationship_id
│   ├── party_account_direct_mv_next.$src
│   ├── null:Date
│   ├── null:Varchar
│   ├── null:Varchar
│   ├── null:Varchar
│   ├── $src
│   ├── party_account_direct_mv_next.account_id
│   └── open_accounts_mv.account_id
├── stream key: [ party_account_direct_mv_next.party_involvements_dm.id, party_account_direct_mv_next.party_involvements_dm.entity_id, party_account_direct_mv_next.party_involvements_dm.customer_relationship_id, party_account_direct_mv_next.$src, null:Date, null:Varchar, null:Varchar, null:Varchar, $src, party_account_direct_mv_next.account_id ]
└── StreamHashJoin { type: Inner, predicate: party_account_direct_mv_next.account_id = open_accounts_mv.account_id }
    ├── output:
    │   ┌── party_account_direct_mv_next.party_id
    │   ├── party_account_direct_mv_next.customer_relationship_id
    │   ├── party_account_direct_mv_next.type
    │   ├── open_accounts_mv.opening_date
    │   ├── party_account_direct_mv_next.party_involvements_dm.id
    │   ├── party_account_direct_mv_next.party_involvements_dm.entity_id
    │   ├── party_account_direct_mv_next.party_involvements_dm.customer_relationship_id
    │   ├── party_account_direct_mv_next.$src
    │   ├── null:Date
    │   ├── null:Varchar
    │   ├── null:Varchar
    │   ├── null:Varchar
    │   ├── $src
    │   ├── party_account_direct_mv_next.account_id
    │   └── open_accounts_mv.account_id
    ├── stream key: [ party_account_direct_mv_next.party_involvements_dm.id, party_account_direct_mv_next.party_involvements_dm.entity_id, party_account_direct_mv_next.party_involvements_dm.customer_relationship_id, party_account_direct_mv_next.$src, null:Date, null:Varchar, null:Varchar, null:Varchar, $src, party_account_direct_mv_next.account_id ]
    ├── MergeExecutor
    │   ├── output:
    │   │   ┌── party_account_direct_mv_next.party_id
    │   │   ├── party_account_direct_mv_next.customer_relationship_id
    │   │   ├── party_account_direct_mv_next.account_id
    │   │   ├── party_account_direct_mv_next.type
    │   │   ├── null:Date
    │   │   ├── party_account_direct_mv_next.party_involvements_dm.id
    │   │   ├── party_account_direct_mv_next.party_involvements_dm.entity_id
    │   │   ├── party_account_direct_mv_next.party_involvements_dm.customer_relationship_id
    │   │   ├── null:Varchar
    │   │   ├── null:Varchar
    │   │   ├── null:Varchar
    │   │   ├── party_account_direct_mv_next.$src
    │   │   └── $src
    │   └── stream key: [ party_account_direct_mv_next.party_involvements_dm.id, party_account_direct_mv_next.party_involvements_dm.entity_id, party_account_direct_mv_next.party_involvements_dm.customer_relationship_id, party_account_direct_mv_next.$src, null:Date, null:Varchar, null:Varchar, null:Varchar, $src ]
    └── MergeExecutor { output: [ open_accounts_mv.account_id, open_accounts_mv.opening_date ], stream key: [ open_accounts_mv.account_id ] }

Fragment 25334 (Actor 123372,123371)
StreamUnion { all: true }
├── output:
│   ┌── party_account_direct_mv_next.party_id
│   ├── party_account_direct_mv_next.customer_relationship_id
│   ├── party_account_direct_mv_next.account_id
│   ├── party_account_direct_mv_next.type
│   ├── null:Date
│   ├── party_account_direct_mv_next.party_involvements_dm.id
│   ├── party_account_direct_mv_next.party_involvements_dm.entity_id
│   ├── party_account_direct_mv_next.party_involvements_dm.customer_relationship_id
│   ├── null:Varchar
│   ├── null:Varchar
│   ├── null:Varchar
│   ├── party_account_direct_mv_next.$src
│   └── $src
├── stream key: [ party_account_direct_mv_next.party_involvements_dm.id, party_account_direct_mv_next.party_involvements_dm.entity_id, party_account_direct_mv_next.party_involvements_dm.customer_relationship_id, party_account_direct_mv_next.$src, null:Date, null:Varchar, null:Varchar, null:Varchar, $src ]
├── MergeExecutor
│   ├── output:
│   │   ┌── party_account_direct_mv_next.party_id
│   │   ├── party_account_direct_mv_next.customer_relationship_id
│   │   ├── party_account_direct_mv_next.account_id
│   │   ├── party_account_direct_mv_next.type
│   │   ├── null:Date
│   │   ├── party_account_direct_mv_next.party_involvements_dm.id
│   │   ├── party_account_direct_mv_next.party_involvements_dm.entity_id
│   │   ├── party_account_direct_mv_next.party_involvements_dm.customer_relationship_id
│   │   ├── null:Varchar
│   │   ├── null:Varchar
│   │   ├── null:Varchar
│   │   ├── party_account_direct_mv_next.$src
│   │   └── 0:Int32
│   └── stream key: [ party_account_direct_mv_next.party_involvements_dm.id, party_account_direct_mv_next.party_involvements_dm.entity_id, party_account_direct_mv_next.party_involvements_dm.customer_relationship_id, party_account_direct_mv_next.$src ]
└── MergeExecutor
    ├── output:
    │   ┌── party_account_via_portfolio_mv_next.party_id
    │   ├── party_account_via_portfolio_mv_next.customer_relationship_id
    │   ├── party_account_via_portfolio_mv_next.account_id
    │   ├── party_account_via_portfolio_mv_next.type
    │   ├── party_account_via_portfolio_mv_next.account_to_portfolios_dm.effective_start_date
    │   ├── party_account_via_portfolio_mv_next.open_accounts_mv.account_id
    │   ├── party_account_via_portfolio_mv_next.account_to_portfolios_dm.portfolio_id
    │   ├── party_account_via_portfolio_mv_next.customer_relationships_next.id
    │   ├── party_account_via_portfolio_mv_next.party_involvements_dm.id
    │   ├── party_account_via_portfolio_mv_next.account_to_portfolios_dm.account_id
    │   ├── party_account_via_portfolio_mv_next.party_involvements_dm.party_id
    │   ├── party_account_via_portfolio_mv_next.$src
    │   └── 1:Int32
    └── stream key:
        ┌── party_account_via_portfolio_mv_next.open_accounts_mv.account_id
        ├── party_account_via_portfolio_mv_next.account_to_portfolios_dm.portfolio_id
        ├── party_account_via_portfolio_mv_next.account_to_portfolios_dm.effective_start_date
        ├── party_account_via_portfolio_mv_next.customer_relationships_next.id
        ├── party_account_via_portfolio_mv_next.party_involvements_dm.id
        ├── party_account_via_portfolio_mv_next.account_to_portfolios_dm.account_id
        ├── party_account_via_portfolio_mv_next.party_involvements_dm.party_id
        └── party_account_via_portfolio_mv_next.$src

Fragment 25335 (Actor 123387,123388)
StreamProject { exprs: [party_account_direct_mv_next.party_id, party_account_direct_mv_next.customer_relationship_id, party_account_direct_mv_next.account_id, party_account_direct_mv_next.type, null:Date, party_account_direct_mv_next.party_involvements_dm.id, party_account_direct_mv_next.party_involvements_dm.entity_id, party_account_direct_mv_next.party_involvements_dm.customer_relationship_id, null:Varchar, null:Varchar, null:Varchar, party_account_direct_mv_next.$src, 0:Int32] }
├── output: [ party_account_direct_mv_next.party_id, party_account_direct_mv_next.customer_relationship_id, party_account_direct_mv_next.account_id, party_account_direct_mv_next.type, null:Date, party_account_direct_mv_next.party_involvements_dm.id, party_account_direct_mv_next.party_involvements_dm.entity_id, party_account_direct_mv_next.party_involvements_dm.customer_relationship_id, null:Varchar, null:Varchar, null:Varchar, party_account_direct_mv_next.$src, 0:Int32 ]
├── stream key: [ party_account_direct_mv_next.party_involvements_dm.id, party_account_direct_mv_next.party_involvements_dm.entity_id, party_account_direct_mv_next.party_involvements_dm.customer_relationship_id, party_account_direct_mv_next.$src ]
└── StreamTableScan { table: party_account_direct_mv_next, columns: [party_id, customer_relationship_id, account_id, type, party_involvements_dm.id, party_involvements_dm.entity_id, party_involvements_dm.customer_relationship_id, $src] }
    ├── output: [ party_account_direct_mv_next.party_id, party_account_direct_mv_next.customer_relationship_id, party_account_direct_mv_next.account_id, party_account_direct_mv_next.type, party_account_direct_mv_next.party_involvements_dm.id, party_account_direct_mv_next.party_involvements_dm.entity_id, party_account_direct_mv_next.party_involvements_dm.customer_relationship_id, party_account_direct_mv_next.$src ]
    ├── stream key: [ party_account_direct_mv_next.party_involvements_dm.id, party_account_direct_mv_next.party_involvements_dm.entity_id, party_account_direct_mv_next.party_involvements_dm.customer_relationship_id, party_account_direct_mv_next.$src ]
    ├── Upstream { output: [ party_id, customer_relationship_id, account_id, type, party_involvements_dm.id, party_involvements_dm.entity_id, party_involvements_dm.customer_relationship_id, $src ], stream key: [] }
    └── BatchPlanNode { output: [ party_id, customer_relationship_id, account_id, type, party_involvements_dm.id, party_involvements_dm.entity_id, party_involvements_dm.customer_relationship_id, $src ], stream key: [] }

Fragment 25336 (Actor 123390,123389)
StreamProject { exprs: [party_account_via_portfolio_mv_next.party_id, party_account_via_portfolio_mv_next.customer_relationship_id, party_account_via_portfolio_mv_next.account_id, party_account_via_portfolio_mv_next.type, party_account_via_portfolio_mv_next.account_to_portfolios_dm.effective_start_date, party_account_via_portfolio_mv_next.open_accounts_mv.account_id, party_account_via_portfolio_mv_next.account_to_portfolios_dm.portfolio_id, party_account_via_portfolio_mv_next.customer_relationships_next.id, party_account_via_portfolio_mv_next.party_involvements_dm.id, party_account_via_portfolio_mv_next.account_to_portfolios_dm.account_id, party_account_via_portfolio_mv_next.party_involvements_dm.party_id, party_account_via_portfolio_mv_next.$src, 1:Int32] }
├── output: [ party_account_via_portfolio_mv_next.party_id, party_account_via_portfolio_mv_next.customer_relationship_id, party_account_via_portfolio_mv_next.account_id, party_account_via_portfolio_mv_next.type, party_account_via_portfolio_mv_next.account_to_portfolios_dm.effective_start_date, party_account_via_portfolio_mv_next.open_accounts_mv.account_id, party_account_via_portfolio_mv_next.account_to_portfolios_dm.portfolio_id, party_account_via_portfolio_mv_next.customer_relationships_next.id, party_account_via_portfolio_mv_next.party_involvements_dm.id, party_account_via_portfolio_mv_next.account_to_portfolios_dm.account_id, party_account_via_portfolio_mv_next.party_involvements_dm.party_id, party_account_via_portfolio_mv_next.$src, 1:Int32 ]
├── stream key: [ party_account_via_portfolio_mv_next.open_accounts_mv.account_id, party_account_via_portfolio_mv_next.account_to_portfolios_dm.portfolio_id, party_account_via_portfolio_mv_next.account_to_portfolios_dm.effective_start_date, party_account_via_portfolio_mv_next.customer_relationships_next.id, party_account_via_portfolio_mv_next.party_involvements_dm.id, party_account_via_portfolio_mv_next.account_to_portfolios_dm.account_id, party_account_via_portfolio_mv_next.party_involvements_dm.party_id, party_account_via_portfolio_mv_next.$src ]
└── StreamTableScan { table: party_account_via_portfolio_mv_next, columns: [party_id, customer_relationship_id, account_id, type, open_accounts_mv.account_id, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.effective_start_date, customer_relationships_next.id, party_involvements_dm.id, account_to_portfolios_dm.account_id, party_involvements_dm.party_id, $src] }
    ├── output: [ party_account_via_portfolio_mv_next.party_id, party_account_via_portfolio_mv_next.customer_relationship_id, party_account_via_portfolio_mv_next.account_id, party_account_via_portfolio_mv_next.type, party_account_via_portfolio_mv_next.open_accounts_mv.account_id, party_account_via_portfolio_mv_next.account_to_portfolios_dm.portfolio_id, party_account_via_portfolio_mv_next.account_to_portfolios_dm.effective_start_date, party_account_via_portfolio_mv_next.customer_relationships_next.id, party_account_via_portfolio_mv_next.party_involvements_dm.id, party_account_via_portfolio_mv_next.account_to_portfolios_dm.account_id, party_account_via_portfolio_mv_next.party_involvements_dm.party_id, party_account_via_portfolio_mv_next.$src ]
    ├── stream key: [ party_account_via_portfolio_mv_next.open_accounts_mv.account_id, party_account_via_portfolio_mv_next.account_to_portfolios_dm.portfolio_id, party_account_via_portfolio_mv_next.account_to_portfolios_dm.effective_start_date, party_account_via_portfolio_mv_next.customer_relationships_next.id, party_account_via_portfolio_mv_next.party_involvements_dm.id, party_account_via_portfolio_mv_next.account_to_portfolios_dm.account_id, party_account_via_portfolio_mv_next.party_involvements_dm.party_id, party_account_via_portfolio_mv_next.$src ]
    ├── Upstream { output: [ party_id, customer_relationship_id, account_id, type, open_accounts_mv.account_id, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.effective_start_date, customer_relationships_next.id, party_involvements_dm.id, account_to_portfolios_dm.account_id, party_involvements_dm.party_id, $src ], stream key: [] }
    └── BatchPlanNode { output: [ party_id, customer_relationship_id, account_id, type, open_accounts_mv.account_id, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.effective_start_date, customer_relationships_next.id, party_involvements_dm.id, account_to_portfolios_dm.account_id, party_involvements_dm.party_id, $src ], stream key: [] }

Fragment 25337 (Actor 123391,123392)
StreamTableScan { table: open_accounts_mv, columns: [account_id, opening_date] } { output: [ open_accounts_mv.account_id, open_accounts_mv.opening_date ], stream key: [ open_accounts_mv.account_id ] }
├── Upstream { output: [ account_id, opening_date ], stream key: [] }
└── BatchPlanNode { output: [ account_id, opening_date ], stream key: [] }

Fragment 25338 (Actor 123393,123394)
StreamProject { exprs: [lifecycle_profiles.customer_relationship_id, lifecycle_profiles.base_currency_code, lifecycle_profiles.id] } { output: [ lifecycle_profiles.customer_relationship_id, lifecycle_profiles.base_currency_code, lifecycle_profiles.id ], stream key: [ lifecycle_profiles.id ] }
└── StreamFilter { predicate: IsNull(lifecycle_profiles.disabled_at) } { output: [ lifecycle_profiles.customer_relationship_id, lifecycle_profiles.base_currency_code, lifecycle_profiles.id, lifecycle_profiles.disabled_at ], stream key: [ lifecycle_profiles.id ] }
    └── StreamTableScan { table: lifecycle_profiles, columns: [customer_relationship_id, base_currency_code, id, disabled_at] } { output: [ lifecycle_profiles.customer_relationship_id, lifecycle_profiles.base_currency_code, lifecycle_profiles.id, lifecycle_profiles.disabled_at ], stream key: [ lifecycle_profiles.id ] }
        ├── Upstream { output: [ customer_relationship_id, base_currency_code, id, disabled_at ], stream key: [] }
        └── BatchPlanNode { output: [ customer_relationship_id, base_currency_code, id, disabled_at ], stream key: [] }