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

← cluster insights objects user_account_membership_mv explain
Overview Objects Graph History
materialized view · insights.user_account_membership_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
210 operators
Materialize · insights.user_account_membership_mv
0% idle 2 actors
Union
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
Project · Not(IsTrue(bool_or(open_accounts_mv.is_restricted)))
2 actors
Filter · Not(IsTrue(bool_or(open_accounts_mv.is_restricted)))
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore · Inner · user_to_portfolios_mv.user_id = users_dm.user_id
2 actors
HashJoin · Inner · user_to_portfolios_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
Project · users_dm
2 actors
Filter · users_dm
0% idle 2 actors
StreamScan · users_dm
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
LocalityProvider
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
Union
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
Project
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore · Inner · clients_portfolios_dm.portfolio_id = account_to_portfolios_…
2 actors
HashJoin · Inner · clients_portfolios_dm.portfolio_id = account_to_portfolios_… 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
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore · Inner · open_accounts_mv.account_id = account_to_portfolios_dm.acco…
2 actors
HashJoin · Inner · open_accounts_mv.account_id = account_to_portfolios_dm.acco… 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 · account_to_portfolios_dm
2 actors
Filter · account_to_portfolios_dm
0% idle 2 actors
StreamScan · account_to_portfolios_dm
0% idle 2 actors
BatchPlan
2 actors
Merge
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
LocalityProvider
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore · Inner · user_to_clients_mv.client_id = clients_portfolios_dm.client…
2 actors
HashJoin · Inner · user_to_clients_mv.client_id = clients_portfolios_dm.client… 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 · clients_portfolios_dm
2 actors
Filter · clients_portfolios_dm
0% idle 2 actors
StreamScan · clients_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
StreamScan · user_to_clients_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
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore · Inner · accounts_to_clients_dm.account_id = open_accounts_mv.accoun…
2 actors
HashJoin · Inner · accounts_to_clients_dm.account_id = open_accounts_mv.accoun… 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
LocalityProvider
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore · Inner · user_to_clients_mv.client_id = accounts_to_clients_dm.clien…
2 actors
HashJoin · Inner · user_to_clients_mv.client_id = accounts_to_clients_dm.clien… 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 · accounts_to_clients_dm
2 actors
Filter · accounts_to_clients_dm
0% idle 2 actors
StreamScan · accounts_to_clients_dm
0% idle 2 actors
BatchPlan
2 actors
Merge
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
LocalityProvider
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
StreamScan · user_to_clients_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
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore · Inner · account_to_portfolios_dm.account_id = open_accounts_mv.acco…
2 actors
HashJoin · Inner · account_to_portfolios_dm.account_id = open_accounts_mv.acco… 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
LocalityProvider
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore · Inner · user_to_portfolios_mv.portfolio_id = account_to_portfolios_…
2 actors
HashJoin · Inner · user_to_portfolios_mv.portfolio_id = account_to_portfolios_… 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 · account_to_portfolios_dm
2 actors
Filter · account_to_portfolios_dm
0% idle 2 actors
StreamScan · account_to_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
StreamScan · user_to_portfolios_mv
0% idle 2 actors
BatchPlan
2 actors
Merge
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
Project · (bool_or(open_accounts_mv.is_restricted) = true:Boolean)
2 actors
Filter · (bool_or(open_accounts_mv.is_restricted) = true:Boolean)
0% idle 2 actors
Merge
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
Project
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.user_account_membership_mv Materialize insights.user_account_m… idle · 2 actors Union Union idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors Project · Not(IsTrue(bool_or(open_accounts_mv.is_restricted))) Project Not(IsTrue(bool_or(open… — · 2 actors Filter · Not(IsTrue(bool_or(open_accounts_mv.is_restricted))) Filter Not(IsTrue(bool_or(open… idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore SyncLogStore — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore SyncLogStore — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore · Inner · user_to_portfolios_mv.user_id = users_dm.user_id SyncLogStore Inner · user_to_portfol… — · 2 actors HashJoin · Inner · user_to_portfolios_mv.user_id = users_dm.user_id HashJoin Inner · user_to_portfol… idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors Project · users_dm Project users_dm — · 2 actors Filter · users_dm Filter users_dm idle · 2 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 Project Project — · 2 actors HashAgg HashAgg idle · 2 actors LocalityProvider LocalityProvider idle · 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 Project — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore SyncLogStore — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore SyncLogStore — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore · Inner · clients_portfolios_dm.portfolio_id = account_to_portfolios_… SyncLogStore Inner · clients_portfol… — · 2 actors HashJoin · Inner · clients_portfolios_dm.portfolio_id = account_to_portfolios_… HashJoin Inner · clients_portfol… 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 SyncLogStore — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore SyncLogStore — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore · Inner · open_accounts_mv.account_id = account_to_portfolios_dm.acco… SyncLogStore Inner · open_accounts_m… — · 2 actors HashJoin · Inner · open_accounts_mv.account_id = account_to_portfolios_dm.acco… HashJoin Inner · open_accounts_m… 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 · account_to_portfolios_dm Project account_to_portfolios_dm — · 2 actors Filter · account_to_portfolios_dm Filter account_to_portfolios_dm idle · 2 actors StreamScan · account_to_portfolios_dm StreamScan account_to_portfolios_dm idle · 2 actors BatchPlan BatchPlan — · 2 actors Merge Merge — · 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 LocalityProvider LocalityProvider idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore SyncLogStore — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore SyncLogStore — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore · Inner · user_to_clients_mv.client_id = clients_portfolios_dm.client… SyncLogStore Inner · user_to_clients… — · 2 actors HashJoin · Inner · user_to_clients_mv.client_id = clients_portfolios_dm.client… HashJoin Inner · user_to_clients… 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 · clients_portfolios_dm Project clients_portfolios_dm — · 2 actors Filter · clients_portfolios_dm Filter clients_portfolios_dm idle · 2 actors StreamScan · clients_portfolios_dm StreamScan clients_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 StreamScan · user_to_clients_mv StreamScan user_to_clients_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 Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore SyncLogStore — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore SyncLogStore — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore · Inner · accounts_to_clients_dm.account_id = open_accounts_mv.accoun… SyncLogStore Inner · accounts_to_cli… — · 2 actors HashJoin · Inner · accounts_to_clients_dm.account_id = open_accounts_mv.accoun… HashJoin Inner · accounts_to_cli… 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 LocalityProvider LocalityProvider idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore SyncLogStore — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore SyncLogStore — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore · Inner · user_to_clients_mv.client_id = accounts_to_clients_dm.clien… SyncLogStore Inner · user_to_clients… — · 2 actors HashJoin · Inner · user_to_clients_mv.client_id = accounts_to_clients_dm.clien… HashJoin Inner · user_to_clients… 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 · accounts_to_clients_dm Project accounts_to_clients_dm — · 2 actors Filter · accounts_to_clients_dm Filter accounts_to_clients_dm idle · 2 actors StreamScan · accounts_to_clients_dm StreamScan accounts_to_clients_dm idle · 2 actors BatchPlan BatchPlan — · 2 actors Merge Merge — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors LocalityProvider LocalityProvider idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors StreamScan · user_to_clients_mv StreamScan user_to_clients_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 Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore SyncLogStore — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore SyncLogStore — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore · Inner · account_to_portfolios_dm.account_id = open_accounts_mv.acco… SyncLogStore Inner · account_to_port… — · 2 actors HashJoin · Inner · account_to_portfolios_dm.account_id = open_accounts_mv.acco… HashJoin Inner · account_to_port… 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 LocalityProvider LocalityProvider idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore SyncLogStore — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore SyncLogStore — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore · Inner · user_to_portfolios_mv.portfolio_id = account_to_portfolios_… SyncLogStore Inner · user_to_portfol… — · 2 actors HashJoin · Inner · user_to_portfolios_mv.portfolio_id = account_to_portfolios_… HashJoin Inner · user_to_portfol… 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 · account_to_portfolios_dm Project account_to_portfolios_dm — · 2 actors Filter · account_to_portfolios_dm Filter account_to_portfolios_dm idle · 2 actors StreamScan · account_to_portfolios_dm StreamScan account_to_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 StreamScan · user_to_portfolios_mv StreamScan user_to_portfolios_mv idle · 2 actors BatchPlan BatchPlan — · 2 actors Merge Merge — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors Project · (bool_or(open_accounts_mv.is_restricted) = true:Boolean) Project (bool_or(open_accounts_… — · 2 actors Filter · (bool_or(open_accounts_mv.is_restricted) = true:Boolean) Filter (bool_or(open_accounts_… idle · 2 actors Merge Merge — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors Project Project — · 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 51955 (Actor 736957,736956)
StreamMaterialize { columns: [user_id, account_id, type, $src(hidden)], stream_key: [user_id, account_id, $src], pk_columns: [user_id, account_id, $src], pk_conflict: NoCheck }
├── output: [ user_to_portfolios_mv.user_id, open_accounts_mv.account_id, 'all':Varchar, $src ]
├── stream key: [ user_to_portfolios_mv.user_id, open_accounts_mv.account_id, $src ]
└── StreamUnion { all: true }
    ├── output: [ user_to_portfolios_mv.user_id, open_accounts_mv.account_id, 'all':Varchar, $src ]
    ├── stream key: [ user_to_portfolios_mv.user_id, open_accounts_mv.account_id, $src ]
    ├── MergeExecutor
    │   ├── output: [ user_to_portfolios_mv.user_id, open_accounts_mv.account_id, 'all':Varchar, 0:Int32 ]
    │   └── stream key: [ user_to_portfolios_mv.user_id, open_accounts_mv.account_id ]
    ├── MergeExecutor
    │   ├── output: [ user_to_portfolios_mv.user_id, open_accounts_mv.account_id, 'restricted':Varchar, 1:Int32 ]
    │   └── stream key: [ user_to_portfolios_mv.user_id, open_accounts_mv.account_id ]
    └── MergeExecutor
        ├── output: [ user_to_portfolios_mv.user_id, open_accounts_mv.account_id, 'un_restricted':Varchar, 2:Int32 ]
        └── stream key: [ user_to_portfolios_mv.user_id, open_accounts_mv.account_id ]

Fragment 51956 (Actor 737002,737001)
StreamProject { exprs: [user_to_portfolios_mv.user_id, open_accounts_mv.account_id, 'all':Varchar, 0:Int32] }
├── output: [ user_to_portfolios_mv.user_id, open_accounts_mv.account_id, 'all':Varchar, 0:Int32 ]
├── stream key: [ user_to_portfolios_mv.user_id, open_accounts_mv.account_id ]
└── MergeExecutor
    ├── output: [ user_to_portfolios_mv.user_id, open_accounts_mv.account_id, bool_or(open_accounts_mv.is_restricted), users_dm.user_id ]
    └── stream key: [ user_to_portfolios_mv.user_id, open_accounts_mv.account_id ]

Fragment 51957 (Actor 737000,736999)
StreamSyncLogStore
├── output: [ user_to_portfolios_mv.user_id, open_accounts_mv.account_id, bool_or(open_accounts_mv.is_restricted), users_dm.user_id ]
├── stream key: [ user_to_portfolios_mv.user_id, open_accounts_mv.account_id ]
└── MergeExecutor
    ├── output: [ user_to_portfolios_mv.user_id, open_accounts_mv.account_id, bool_or(open_accounts_mv.is_restricted), users_dm.user_id ]
    └── stream key: [ user_to_portfolios_mv.user_id, open_accounts_mv.account_id ]

Fragment 51958 (Actor 736997,736998)
StreamSyncLogStore
├── output: [ user_to_portfolios_mv.user_id, open_accounts_mv.account_id, bool_or(open_accounts_mv.is_restricted), users_dm.user_id ]
├── stream key: [ user_to_portfolios_mv.user_id, open_accounts_mv.account_id ]
└── MergeExecutor
    ├── output: [ user_to_portfolios_mv.user_id, open_accounts_mv.account_id, bool_or(open_accounts_mv.is_restricted), users_dm.user_id ]
    └── stream key: [ user_to_portfolios_mv.user_id, open_accounts_mv.account_id ]

Fragment 51959 (Actor 736994,736993)
StreamSyncLogStore
├── output: [ user_to_portfolios_mv.user_id, open_accounts_mv.account_id, bool_or(open_accounts_mv.is_restricted), users_dm.user_id ]
├── stream key: [ user_to_portfolios_mv.user_id, open_accounts_mv.account_id ]
└── StreamHashJoin { type: Inner, predicate: user_to_portfolios_mv.user_id = users_dm.user_id }
    ├── output: [ user_to_portfolios_mv.user_id, open_accounts_mv.account_id, bool_or(open_accounts_mv.is_restricted), users_dm.user_id ]
    ├── stream key: [ user_to_portfolios_mv.user_id, open_accounts_mv.account_id ]
    ├── MergeExecutor
    │   ├── output: [ user_to_portfolios_mv.user_id, open_accounts_mv.account_id, bool_or(open_accounts_mv.is_restricted) ]
    │   └── stream key: [ user_to_portfolios_mv.user_id, open_accounts_mv.account_id ]
    └── MergeExecutor { output: [ users_dm.user_id ], stream key: [ users_dm.user_id ] }

Fragment 51960 (Actor 737006,737005)
StreamProject { exprs: [user_to_portfolios_mv.user_id, open_accounts_mv.account_id, bool_or(open_accounts_mv.is_restricted)] }
├── output: [ user_to_portfolios_mv.user_id, open_accounts_mv.account_id, bool_or(open_accounts_mv.is_restricted) ]
├── stream key: [ user_to_portfolios_mv.user_id, open_accounts_mv.account_id ]
└── StreamHashAgg { group_key: [user_to_portfolios_mv.user_id, open_accounts_mv.account_id], aggs: [bool_or(open_accounts_mv.is_restricted), count] }
    ├── output: [ user_to_portfolios_mv.user_id, open_accounts_mv.account_id, bool_or(open_accounts_mv.is_restricted), count ]
    ├── stream key: [ user_to_portfolios_mv.user_id, open_accounts_mv.account_id ]
    └── StreamLocalityProvider { locality_columns: [user_to_portfolios_mv.user_id, open_accounts_mv.account_id] }
        ├── output:
        │   ┌── user_to_portfolios_mv.user_id
        │   ├── open_accounts_mv.account_id
        │   ├── open_accounts_mv.is_restricted
        │   ├── account_to_portfolios_dm.account_id
        │   ├── user_to_portfolios_mv.portfolio_id
        │   ├── user_to_portfolios_mv.user_id
        │   ├── null:Varchar
        │   ├── account_to_portfolios_dm.effective_start_date
        │   ├── null:Date
        │   └── $src
        ├── stream key:
        │   ┌── user_to_portfolios_mv.user_id
        │   ├── open_accounts_mv.account_id
        │   ├── account_to_portfolios_dm.account_id
        │   ├── user_to_portfolios_mv.portfolio_id
        │   ├── user_to_portfolios_mv.user_id
        │   ├── account_to_portfolios_dm.effective_start_date
        │   ├── null:Varchar
        │   ├── null:Date
        │   └── $src
        └── MergeExecutor
            ├── output:
            │   ┌── user_to_portfolios_mv.user_id
            │   ├── open_accounts_mv.account_id
            │   ├── open_accounts_mv.is_restricted
            │   ├── account_to_portfolios_dm.account_id
            │   ├── user_to_portfolios_mv.portfolio_id
            │   ├── user_to_portfolios_mv.user_id
            │   ├── null:Varchar
            │   ├── account_to_portfolios_dm.effective_start_date
            │   ├── null:Date
            │   └── $src
            └── stream key:
                ┌── account_to_portfolios_dm.account_id
                ├── user_to_portfolios_mv.portfolio_id
                ├── user_to_portfolios_mv.user_id
                ├── account_to_portfolios_dm.effective_start_date
                ├── null:Varchar
                ├── null:Date
                └── $src

Fragment 51961 (Actor 737008,737007)
StreamUnion { all: true }
├── output:
│   ┌── user_to_portfolios_mv.user_id
│   ├── open_accounts_mv.account_id
│   ├── open_accounts_mv.is_restricted
│   ├── account_to_portfolios_dm.account_id
│   ├── user_to_portfolios_mv.portfolio_id
│   ├── user_to_portfolios_mv.user_id
│   ├── null:Varchar
│   ├── account_to_portfolios_dm.effective_start_date
│   ├── null:Date
│   └── $src
├── stream key:
│   ┌── account_to_portfolios_dm.account_id
│   ├── user_to_portfolios_mv.portfolio_id
│   ├── user_to_portfolios_mv.user_id
│   ├── account_to_portfolios_dm.effective_start_date
│   ├── null:Varchar
│   ├── null:Date
│   └── $src
├── MergeExecutor
│   ├── output:
│   │   ┌── user_to_portfolios_mv.user_id
│   │   ├── open_accounts_mv.account_id
│   │   ├── open_accounts_mv.is_restricted
│   │   ├── account_to_portfolios_dm.account_id
│   │   ├── user_to_portfolios_mv.portfolio_id
│   │   ├── user_to_portfolios_mv.user_id
│   │   ├── null:Varchar
│   │   ├── account_to_portfolios_dm.effective_start_date
│   │   ├── null:Date
│   │   └── 0:Int32
│   └── stream key: [ account_to_portfolios_dm.account_id, user_to_portfolios_mv.portfolio_id, user_to_portfolios_mv.user_id, account_to_portfolios_dm.effective_start_date ]
├── MergeExecutor
│   ├── output:
│   │   ┌── user_to_clients_mv.user_id
│   │   ├── open_accounts_mv.account_id
│   │   ├── open_accounts_mv.is_restricted
│   │   ├── accounts_to_clients_dm.account_id
│   │   ├── user_to_clients_mv.client_id
│   │   ├── user_to_clients_mv.user_id
│   │   ├── null:Varchar
│   │   ├── accounts_to_clients_dm.effective_start_date
│   │   ├── null:Date
│   │   └── 1:Int32
│   └── stream key: [ accounts_to_clients_dm.account_id, user_to_clients_mv.client_id, user_to_clients_mv.user_id, accounts_to_clients_dm.effective_start_date ]
└── MergeExecutor
    ├── output:
    │   ┌── user_to_clients_mv.user_id
    │   ├── open_accounts_mv.account_id
    │   ├── open_accounts_mv.is_restricted
    │   ├── clients_portfolios_dm.portfolio_id
    │   ├── user_to_clients_mv.client_id
    │   ├── user_to_clients_mv.user_id
    │   ├── open_accounts_mv.account_id
    │   ├── clients_portfolios_dm.effective_start_date
    │   ├── account_to_portfolios_dm.effective_start_date
    │   └── 2:Int32
    └── stream key:
        ┌── clients_portfolios_dm.portfolio_id
        ├── user_to_clients_mv.client_id
        ├── user_to_clients_mv.user_id
        ├── clients_portfolios_dm.effective_start_date
        ├── open_accounts_mv.account_id
        └── account_to_portfolios_dm.effective_start_date

Fragment 51962 (Actor 737013,737014)
StreamProject { exprs: [user_to_portfolios_mv.user_id, open_accounts_mv.account_id, open_accounts_mv.is_restricted, account_to_portfolios_dm.account_id, user_to_portfolios_mv.portfolio_id, user_to_portfolios_mv.user_id, null:Varchar, account_to_portfolios_dm.effective_start_date, null:Date, 0:Int32] }
├── output: [ user_to_portfolios_mv.user_id, open_accounts_mv.account_id, open_accounts_mv.is_restricted, account_to_portfolios_dm.account_id, user_to_portfolios_mv.portfolio_id, user_to_portfolios_mv.user_id, null:Varchar, account_to_portfolios_dm.effective_start_date, null:Date, 0:Int32 ]
├── stream key: [ account_to_portfolios_dm.account_id, user_to_portfolios_mv.portfolio_id, user_to_portfolios_mv.user_id, account_to_portfolios_dm.effective_start_date ]
└── MergeExecutor
    ├── output: [ user_to_portfolios_mv.user_id, open_accounts_mv.account_id, open_accounts_mv.is_restricted, account_to_portfolios_dm.account_id, user_to_portfolios_mv.portfolio_id, account_to_portfolios_dm.effective_start_date ]
    └── stream key: [ account_to_portfolios_dm.account_id, user_to_portfolios_mv.portfolio_id, user_to_portfolios_mv.user_id, account_to_portfolios_dm.effective_start_date ]

Fragment 51963 (Actor 737015,737016)
StreamSyncLogStore
├── output: [ user_to_portfolios_mv.user_id, open_accounts_mv.account_id, open_accounts_mv.is_restricted, account_to_portfolios_dm.account_id, user_to_portfolios_mv.portfolio_id, account_to_portfolios_dm.effective_start_date ]
├── stream key: [ account_to_portfolios_dm.account_id, user_to_portfolios_mv.portfolio_id, user_to_portfolios_mv.user_id, account_to_portfolios_dm.effective_start_date ]
└── MergeExecutor
    ├── output: [ user_to_portfolios_mv.user_id, open_accounts_mv.account_id, open_accounts_mv.is_restricted, account_to_portfolios_dm.account_id, user_to_portfolios_mv.portfolio_id, account_to_portfolios_dm.effective_start_date ]
    └── stream key: [ account_to_portfolios_dm.account_id, user_to_portfolios_mv.portfolio_id, user_to_portfolios_mv.user_id, account_to_portfolios_dm.effective_start_date ]

Fragment 51964 (Actor 737010,737009)
StreamSyncLogStore
├── output: [ user_to_portfolios_mv.user_id, open_accounts_mv.account_id, open_accounts_mv.is_restricted, account_to_portfolios_dm.account_id, user_to_portfolios_mv.portfolio_id, account_to_portfolios_dm.effective_start_date ]
├── stream key: [ account_to_portfolios_dm.account_id, user_to_portfolios_mv.portfolio_id, user_to_portfolios_mv.user_id, account_to_portfolios_dm.effective_start_date ]
└── MergeExecutor
    ├── output: [ user_to_portfolios_mv.user_id, open_accounts_mv.account_id, open_accounts_mv.is_restricted, account_to_portfolios_dm.account_id, user_to_portfolios_mv.portfolio_id, account_to_portfolios_dm.effective_start_date ]
    └── stream key: [ account_to_portfolios_dm.account_id, user_to_portfolios_mv.portfolio_id, user_to_portfolios_mv.user_id, account_to_portfolios_dm.effective_start_date ]

Fragment 51965 (Actor 737012,737011)
StreamSyncLogStore
├── output: [ user_to_portfolios_mv.user_id, open_accounts_mv.account_id, open_accounts_mv.is_restricted, account_to_portfolios_dm.account_id, user_to_portfolios_mv.portfolio_id, account_to_portfolios_dm.effective_start_date ]
├── stream key: [ account_to_portfolios_dm.account_id, user_to_portfolios_mv.portfolio_id, user_to_portfolios_mv.user_id, account_to_portfolios_dm.effective_start_date ]
└── StreamHashJoin { type: Inner, predicate: account_to_portfolios_dm.account_id = open_accounts_mv.account_id }
    ├── output: [ user_to_portfolios_mv.user_id, open_accounts_mv.account_id, open_accounts_mv.is_restricted, account_to_portfolios_dm.account_id, user_to_portfolios_mv.portfolio_id, account_to_portfolios_dm.effective_start_date ]
    ├── stream key: [ account_to_portfolios_dm.account_id, user_to_portfolios_mv.portfolio_id, user_to_portfolios_mv.user_id, account_to_portfolios_dm.effective_start_date ]
    ├── MergeExecutor
    │   ├── output: [ user_to_portfolios_mv.user_id, account_to_portfolios_dm.account_id, user_to_portfolios_mv.portfolio_id, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.effective_start_date ]
    │   └── stream key: [ account_to_portfolios_dm.account_id, user_to_portfolios_mv.portfolio_id, user_to_portfolios_mv.user_id, account_to_portfolios_dm.effective_start_date ]
    └── MergeExecutor { output: [ open_accounts_mv.account_id, open_accounts_mv.is_restricted ], stream key: [ open_accounts_mv.account_id ] }

Fragment 51966 (Actor 737018,737017)
StreamLocalityProvider { locality_columns: [account_to_portfolios_dm.account_id] }
├── output: [ user_to_portfolios_mv.user_id, account_to_portfolios_dm.account_id, user_to_portfolios_mv.portfolio_id, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.effective_start_date ]
├── stream key: [ account_to_portfolios_dm.account_id, user_to_portfolios_mv.portfolio_id, user_to_portfolios_mv.user_id, account_to_portfolios_dm.effective_start_date ]
└── MergeExecutor
    ├── output: [ user_to_portfolios_mv.user_id, account_to_portfolios_dm.account_id, user_to_portfolios_mv.portfolio_id, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.effective_start_date ]
    └── stream key: [ user_to_portfolios_mv.portfolio_id, user_to_portfolios_mv.user_id, account_to_portfolios_dm.account_id, account_to_portfolios_dm.effective_start_date ]

Fragment 51967 (Actor 737020,737019)
StreamSyncLogStore
├── output: [ user_to_portfolios_mv.user_id, account_to_portfolios_dm.account_id, user_to_portfolios_mv.portfolio_id, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.effective_start_date ]
├── stream key: [ user_to_portfolios_mv.portfolio_id, user_to_portfolios_mv.user_id, account_to_portfolios_dm.account_id, account_to_portfolios_dm.effective_start_date ]
└── MergeExecutor
    ├── output: [ user_to_portfolios_mv.user_id, account_to_portfolios_dm.account_id, user_to_portfolios_mv.portfolio_id, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.effective_start_date ]
    └── stream key: [ user_to_portfolios_mv.portfolio_id, user_to_portfolios_mv.user_id, account_to_portfolios_dm.account_id, account_to_portfolios_dm.effective_start_date ]

Fragment 51968 (Actor 737021,737022)
StreamSyncLogStore
├── output: [ user_to_portfolios_mv.user_id, account_to_portfolios_dm.account_id, user_to_portfolios_mv.portfolio_id, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.effective_start_date ]
├── stream key: [ user_to_portfolios_mv.portfolio_id, user_to_portfolios_mv.user_id, account_to_portfolios_dm.account_id, account_to_portfolios_dm.effective_start_date ]
└── MergeExecutor
    ├── output: [ user_to_portfolios_mv.user_id, account_to_portfolios_dm.account_id, user_to_portfolios_mv.portfolio_id, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.effective_start_date ]
    └── stream key: [ user_to_portfolios_mv.portfolio_id, user_to_portfolios_mv.user_id, account_to_portfolios_dm.account_id, account_to_portfolios_dm.effective_start_date ]

Fragment 51969 (Actor 737023,737024)
StreamSyncLogStore
├── output: [ user_to_portfolios_mv.user_id, account_to_portfolios_dm.account_id, user_to_portfolios_mv.portfolio_id, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.effective_start_date ]
├── stream key: [ user_to_portfolios_mv.portfolio_id, user_to_portfolios_mv.user_id, account_to_portfolios_dm.account_id, account_to_portfolios_dm.effective_start_date ]
└── StreamHashJoin { type: Inner, predicate: user_to_portfolios_mv.portfolio_id = account_to_portfolios_dm.portfolio_id }
    ├── output: [ user_to_portfolios_mv.user_id, account_to_portfolios_dm.account_id, user_to_portfolios_mv.portfolio_id, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.effective_start_date ]
    ├── stream key: [ user_to_portfolios_mv.portfolio_id, user_to_portfolios_mv.user_id, account_to_portfolios_dm.account_id, account_to_portfolios_dm.effective_start_date ]
    ├── MergeExecutor { output: [ user_to_portfolios_mv.user_id, user_to_portfolios_mv.portfolio_id ], stream key: [ user_to_portfolios_mv.portfolio_id, user_to_portfolios_mv.user_id ] }
    └── MergeExecutor { output: [ account_to_portfolios_dm.account_id, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.effective_start_date ], stream key: [ account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.account_id, account_to_portfolios_dm.effective_start_date ] }

Fragment 51970 (Actor 737025,737026)
StreamLocalityProvider { locality_columns: [user_to_portfolios_mv.portfolio_id] } { output: [ user_to_portfolios_mv.user_id, user_to_portfolios_mv.portfolio_id ], stream key: [ user_to_portfolios_mv.portfolio_id, user_to_portfolios_mv.user_id ] }
└── MergeExecutor { output: [ user_to_portfolios_mv.user_id, user_to_portfolios_mv.portfolio_id ], stream key: [ user_to_portfolios_mv.user_id, user_to_portfolios_mv.portfolio_id ] }

Fragment 51971 (Actor 736908,736909)
StreamTableScan { table: user_to_portfolios_mv, columns: [user_id, portfolio_id] } { output: [ user_to_portfolios_mv.user_id, user_to_portfolios_mv.portfolio_id ], stream key: [ user_to_portfolios_mv.user_id, user_to_portfolios_mv.portfolio_id ] }
├── Upstream { output: [ user_id, portfolio_id ], stream key: [] }
└── BatchPlanNode { output: [ user_id, portfolio_id ], stream key: [] }

Fragment 51972 (Actor 737027,737028)
StreamLocalityProvider { locality_columns: [account_to_portfolios_dm.portfolio_id] }
├── output: [ account_to_portfolios_dm.account_id, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.effective_start_date ]
├── stream key: [ account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.account_id, account_to_portfolios_dm.effective_start_date ]
└── MergeExecutor { output: [ account_to_portfolios_dm.account_id, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.effective_start_date ], stream key: [ account_to_portfolios_dm.account_id, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.effective_start_date ] }

Fragment 51973 (Actor 736910,736911)
StreamProject { exprs: [account_to_portfolios_dm.account_id, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.effective_start_date] }
├── output: [ account_to_portfolios_dm.account_id, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.effective_start_date ]
├── stream key: [ account_to_portfolios_dm.account_id, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.effective_start_date ]
└── StreamFilter { predicate: IsNull(account_to_portfolios_dm.disabled_at) }
    ├── output: [ account_to_portfolios_dm.account_id, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.effective_start_date, account_to_portfolios_dm.disabled_at ]
    ├── stream key: [ account_to_portfolios_dm.account_id, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.effective_start_date ]
    └── StreamTableScan { table: account_to_portfolios_dm, columns: [account_id, portfolio_id, effective_start_date, disabled_at] }
        ├── output: [ account_to_portfolios_dm.account_id, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.effective_start_date, account_to_portfolios_dm.disabled_at ]
        ├── stream key: [ account_to_portfolios_dm.account_id, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.effective_start_date ]
        ├── Upstream { output: [ account_id, portfolio_id, effective_start_date, disabled_at ], stream key: [] }
        └── BatchPlanNode { output: [ account_id, portfolio_id, effective_start_date, disabled_at ], stream key: [] }

Fragment 51974 (Actor 737090,737089)
StreamTableScan { table: open_accounts_mv, columns: [account_id, is_restricted] } { output: [ open_accounts_mv.account_id, open_accounts_mv.is_restricted ], stream key: [ open_accounts_mv.account_id ] }
├── Upstream { output: [ account_id, is_restricted ], stream key: [] }
└── BatchPlanNode { output: [ account_id, is_restricted ], stream key: [] }

Fragment 51975 (Actor 737036,737035)
StreamProject { exprs: [user_to_clients_mv.user_id, open_accounts_mv.account_id, open_accounts_mv.is_restricted, accounts_to_clients_dm.account_id, user_to_clients_mv.client_id, user_to_clients_mv.user_id, null:Varchar, accounts_to_clients_dm.effective_start_date, null:Date, 1:Int32] }
├── output: [ user_to_clients_mv.user_id, open_accounts_mv.account_id, open_accounts_mv.is_restricted, accounts_to_clients_dm.account_id, user_to_clients_mv.client_id, user_to_clients_mv.user_id, null:Varchar, accounts_to_clients_dm.effective_start_date, null:Date, 1:Int32 ]
├── stream key: [ accounts_to_clients_dm.account_id, user_to_clients_mv.client_id, user_to_clients_mv.user_id, accounts_to_clients_dm.effective_start_date ]
└── MergeExecutor
    ├── output: [ user_to_clients_mv.user_id, open_accounts_mv.account_id, open_accounts_mv.is_restricted, accounts_to_clients_dm.account_id, user_to_clients_mv.client_id, accounts_to_clients_dm.effective_start_date ]
    └── stream key: [ accounts_to_clients_dm.account_id, user_to_clients_mv.client_id, user_to_clients_mv.user_id, accounts_to_clients_dm.effective_start_date ]

Fragment 51976 (Actor 737040,737039)
StreamSyncLogStore
├── output: [ user_to_clients_mv.user_id, open_accounts_mv.account_id, open_accounts_mv.is_restricted, accounts_to_clients_dm.account_id, user_to_clients_mv.client_id, accounts_to_clients_dm.effective_start_date ]
├── stream key: [ accounts_to_clients_dm.account_id, user_to_clients_mv.client_id, user_to_clients_mv.user_id, accounts_to_clients_dm.effective_start_date ]
└── MergeExecutor
    ├── output: [ user_to_clients_mv.user_id, open_accounts_mv.account_id, open_accounts_mv.is_restricted, accounts_to_clients_dm.account_id, user_to_clients_mv.client_id, accounts_to_clients_dm.effective_start_date ]
    └── stream key: [ accounts_to_clients_dm.account_id, user_to_clients_mv.client_id, user_to_clients_mv.user_id, accounts_to_clients_dm.effective_start_date ]

Fragment 51977 (Actor 737033,737034)
StreamSyncLogStore
├── output: [ user_to_clients_mv.user_id, open_accounts_mv.account_id, open_accounts_mv.is_restricted, accounts_to_clients_dm.account_id, user_to_clients_mv.client_id, accounts_to_clients_dm.effective_start_date ]
├── stream key: [ accounts_to_clients_dm.account_id, user_to_clients_mv.client_id, user_to_clients_mv.user_id, accounts_to_clients_dm.effective_start_date ]
└── MergeExecutor
    ├── output: [ user_to_clients_mv.user_id, open_accounts_mv.account_id, open_accounts_mv.is_restricted, accounts_to_clients_dm.account_id, user_to_clients_mv.client_id, accounts_to_clients_dm.effective_start_date ]
    └── stream key: [ accounts_to_clients_dm.account_id, user_to_clients_mv.client_id, user_to_clients_mv.user_id, accounts_to_clients_dm.effective_start_date ]

Fragment 51978 (Actor 737038,737037)
StreamSyncLogStore
├── output: [ user_to_clients_mv.user_id, open_accounts_mv.account_id, open_accounts_mv.is_restricted, accounts_to_clients_dm.account_id, user_to_clients_mv.client_id, accounts_to_clients_dm.effective_start_date ]
├── stream key: [ accounts_to_clients_dm.account_id, user_to_clients_mv.client_id, user_to_clients_mv.user_id, accounts_to_clients_dm.effective_start_date ]
└── StreamHashJoin { type: Inner, predicate: accounts_to_clients_dm.account_id = open_accounts_mv.account_id }
    ├── output: [ user_to_clients_mv.user_id, open_accounts_mv.account_id, open_accounts_mv.is_restricted, accounts_to_clients_dm.account_id, user_to_clients_mv.client_id, accounts_to_clients_dm.effective_start_date ]
    ├── stream key: [ accounts_to_clients_dm.account_id, user_to_clients_mv.client_id, user_to_clients_mv.user_id, accounts_to_clients_dm.effective_start_date ]
    ├── MergeExecutor
    │   ├── output: [ user_to_clients_mv.user_id, accounts_to_clients_dm.account_id, user_to_clients_mv.client_id, accounts_to_clients_dm.client_id, accounts_to_clients_dm.effective_start_date ]
    │   └── stream key: [ accounts_to_clients_dm.account_id, user_to_clients_mv.client_id, user_to_clients_mv.user_id, accounts_to_clients_dm.effective_start_date ]
    └── MergeExecutor { output: [ open_accounts_mv.account_id, open_accounts_mv.is_restricted ], stream key: [ open_accounts_mv.account_id ] }

Fragment 51979 (Actor 737042,737041)
StreamLocalityProvider { locality_columns: [accounts_to_clients_dm.account_id] }
├── output: [ user_to_clients_mv.user_id, accounts_to_clients_dm.account_id, user_to_clients_mv.client_id, accounts_to_clients_dm.client_id, accounts_to_clients_dm.effective_start_date ]
├── stream key: [ accounts_to_clients_dm.account_id, user_to_clients_mv.client_id, user_to_clients_mv.user_id, accounts_to_clients_dm.effective_start_date ]
└── MergeExecutor
    ├── output: [ user_to_clients_mv.user_id, accounts_to_clients_dm.account_id, user_to_clients_mv.client_id, accounts_to_clients_dm.client_id, accounts_to_clients_dm.effective_start_date ]
    └── stream key: [ user_to_clients_mv.client_id, user_to_clients_mv.user_id, accounts_to_clients_dm.account_id, accounts_to_clients_dm.effective_start_date ]

Fragment 51980 (Actor 737049,737050)
StreamSyncLogStore
├── output: [ user_to_clients_mv.user_id, accounts_to_clients_dm.account_id, user_to_clients_mv.client_id, accounts_to_clients_dm.client_id, accounts_to_clients_dm.effective_start_date ]
├── stream key: [ user_to_clients_mv.client_id, user_to_clients_mv.user_id, accounts_to_clients_dm.account_id, accounts_to_clients_dm.effective_start_date ]
└── MergeExecutor
    ├── output: [ user_to_clients_mv.user_id, accounts_to_clients_dm.account_id, user_to_clients_mv.client_id, accounts_to_clients_dm.client_id, accounts_to_clients_dm.effective_start_date ]
    └── stream key: [ user_to_clients_mv.client_id, user_to_clients_mv.user_id, accounts_to_clients_dm.account_id, accounts_to_clients_dm.effective_start_date ]

Fragment 51981 (Actor 737048,737047)
StreamSyncLogStore
├── output: [ user_to_clients_mv.user_id, accounts_to_clients_dm.account_id, user_to_clients_mv.client_id, accounts_to_clients_dm.client_id, accounts_to_clients_dm.effective_start_date ]
├── stream key: [ user_to_clients_mv.client_id, user_to_clients_mv.user_id, accounts_to_clients_dm.account_id, accounts_to_clients_dm.effective_start_date ]
└── MergeExecutor
    ├── output: [ user_to_clients_mv.user_id, accounts_to_clients_dm.account_id, user_to_clients_mv.client_id, accounts_to_clients_dm.client_id, accounts_to_clients_dm.effective_start_date ]
    └── stream key: [ user_to_clients_mv.client_id, user_to_clients_mv.user_id, accounts_to_clients_dm.account_id, accounts_to_clients_dm.effective_start_date ]

Fragment 51982 (Actor 737045,737046)
StreamSyncLogStore
├── output: [ user_to_clients_mv.user_id, accounts_to_clients_dm.account_id, user_to_clients_mv.client_id, accounts_to_clients_dm.client_id, accounts_to_clients_dm.effective_start_date ]
├── stream key: [ user_to_clients_mv.client_id, user_to_clients_mv.user_id, accounts_to_clients_dm.account_id, accounts_to_clients_dm.effective_start_date ]
└── StreamHashJoin { type: Inner, predicate: user_to_clients_mv.client_id = accounts_to_clients_dm.client_id }
    ├── output: [ user_to_clients_mv.user_id, accounts_to_clients_dm.account_id, user_to_clients_mv.client_id, accounts_to_clients_dm.client_id, accounts_to_clients_dm.effective_start_date ]
    ├── stream key: [ user_to_clients_mv.client_id, user_to_clients_mv.user_id, accounts_to_clients_dm.account_id, accounts_to_clients_dm.effective_start_date ]
    ├── MergeExecutor { output: [ user_to_clients_mv.user_id, user_to_clients_mv.client_id ], stream key: [ user_to_clients_mv.client_id, user_to_clients_mv.user_id ] }
    └── MergeExecutor { output: [ accounts_to_clients_dm.account_id, accounts_to_clients_dm.client_id, accounts_to_clients_dm.effective_start_date ], stream key: [ accounts_to_clients_dm.client_id, accounts_to_clients_dm.account_id, accounts_to_clients_dm.effective_start_date ] }

Fragment 51983 (Actor 737052,737051)
StreamLocalityProvider { locality_columns: [user_to_clients_mv.client_id] } { output: [ user_to_clients_mv.user_id, user_to_clients_mv.client_id ], stream key: [ user_to_clients_mv.client_id, user_to_clients_mv.user_id ] }
└── MergeExecutor { output: [ user_to_clients_mv.user_id, user_to_clients_mv.client_id ], stream key: [ user_to_clients_mv.user_id, user_to_clients_mv.client_id ] }

Fragment 51984 (Actor 737092,737091)
StreamTableScan { table: user_to_clients_mv, columns: [user_id, client_id] } { output: [ user_to_clients_mv.user_id, user_to_clients_mv.client_id ], stream key: [ user_to_clients_mv.user_id, user_to_clients_mv.client_id ] }
├── Upstream { output: [ user_id, client_id ], stream key: [] }
└── BatchPlanNode { output: [ user_id, client_id ], stream key: [] }

Fragment 51985 (Actor 737053,737054)
StreamLocalityProvider { locality_columns: [accounts_to_clients_dm.client_id] }
├── output: [ accounts_to_clients_dm.account_id, accounts_to_clients_dm.client_id, accounts_to_clients_dm.effective_start_date ]
├── stream key: [ accounts_to_clients_dm.client_id, accounts_to_clients_dm.account_id, accounts_to_clients_dm.effective_start_date ]
└── MergeExecutor { output: [ accounts_to_clients_dm.account_id, accounts_to_clients_dm.client_id, accounts_to_clients_dm.effective_start_date ], stream key: [ accounts_to_clients_dm.account_id, accounts_to_clients_dm.client_id, accounts_to_clients_dm.effective_start_date ] }

Fragment 51986 (Actor 737094,737093)
StreamProject { exprs: [accounts_to_clients_dm.account_id, accounts_to_clients_dm.client_id, accounts_to_clients_dm.effective_start_date] }
├── output: [ accounts_to_clients_dm.account_id, accounts_to_clients_dm.client_id, accounts_to_clients_dm.effective_start_date ]
├── stream key: [ accounts_to_clients_dm.account_id, accounts_to_clients_dm.client_id, accounts_to_clients_dm.effective_start_date ]
└── StreamFilter { predicate: IsNull(accounts_to_clients_dm.disabled_at) }
    ├── output: [ accounts_to_clients_dm.account_id, accounts_to_clients_dm.client_id, accounts_to_clients_dm.effective_start_date, accounts_to_clients_dm.disabled_at ]
    ├── stream key: [ accounts_to_clients_dm.account_id, accounts_to_clients_dm.client_id, accounts_to_clients_dm.effective_start_date ]
    └── StreamTableScan { table: accounts_to_clients_dm, columns: [account_id, client_id, effective_start_date, disabled_at] }
        ├── output: [ accounts_to_clients_dm.account_id, accounts_to_clients_dm.client_id, accounts_to_clients_dm.effective_start_date, accounts_to_clients_dm.disabled_at ]
        ├── stream key: [ accounts_to_clients_dm.account_id, accounts_to_clients_dm.client_id, accounts_to_clients_dm.effective_start_date ]
        ├── Upstream { output: [ account_id, client_id, effective_start_date, disabled_at ], stream key: [] }
        └── BatchPlanNode { output: [ account_id, client_id, effective_start_date, disabled_at ], stream key: [] }

Fragment 51987 (Actor 737095,737096)
StreamTableScan { table: open_accounts_mv, columns: [account_id, is_restricted] } { output: [ open_accounts_mv.account_id, open_accounts_mv.is_restricted ], stream key: [ open_accounts_mv.account_id ] }
├── Upstream { output: [ account_id, is_restricted ], stream key: [] }
└── BatchPlanNode { output: [ account_id, is_restricted ], stream key: [] }

Fragment 51988 (Actor 737056,737055)
StreamProject { exprs: [user_to_clients_mv.user_id, open_accounts_mv.account_id, open_accounts_mv.is_restricted, clients_portfolios_dm.portfolio_id, user_to_clients_mv.client_id, user_to_clients_mv.user_id, open_accounts_mv.account_id, clients_portfolios_dm.effective_start_date, account_to_portfolios_dm.effective_start_date, 2:Int32] }
├── output: [ user_to_clients_mv.user_id, open_accounts_mv.account_id, open_accounts_mv.is_restricted, clients_portfolios_dm.portfolio_id, user_to_clients_mv.client_id, user_to_clients_mv.user_id, open_accounts_mv.account_id, clients_portfolios_dm.effective_start_date, account_to_portfolios_dm.effective_start_date, 2:Int32 ]
├── stream key: [ clients_portfolios_dm.portfolio_id, user_to_clients_mv.client_id, user_to_clients_mv.user_id, clients_portfolios_dm.effective_start_date, open_accounts_mv.account_id, account_to_portfolios_dm.effective_start_date ]
└── MergeExecutor
    ├── output: [ user_to_clients_mv.user_id, open_accounts_mv.account_id, open_accounts_mv.is_restricted, clients_portfolios_dm.portfolio_id, user_to_clients_mv.client_id, clients_portfolios_dm.effective_start_date, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.effective_start_date ]
    └── stream key: [ clients_portfolios_dm.portfolio_id, user_to_clients_mv.client_id, user_to_clients_mv.user_id, clients_portfolios_dm.effective_start_date, open_accounts_mv.account_id, account_to_portfolios_dm.effective_start_date ]

Fragment 51989 (Actor 737059,737060)
StreamSyncLogStore
├── output: [ user_to_clients_mv.user_id, open_accounts_mv.account_id, open_accounts_mv.is_restricted, clients_portfolios_dm.portfolio_id, user_to_clients_mv.client_id, clients_portfolios_dm.effective_start_date, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.effective_start_date ]
├── stream key: [ clients_portfolios_dm.portfolio_id, user_to_clients_mv.client_id, user_to_clients_mv.user_id, clients_portfolios_dm.effective_start_date, open_accounts_mv.account_id, account_to_portfolios_dm.effective_start_date ]
└── MergeExecutor
    ├── output: [ user_to_clients_mv.user_id, open_accounts_mv.account_id, open_accounts_mv.is_restricted, clients_portfolios_dm.portfolio_id, user_to_clients_mv.client_id, clients_portfolios_dm.effective_start_date, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.effective_start_date ]
    └── stream key: [ clients_portfolios_dm.portfolio_id, user_to_clients_mv.client_id, user_to_clients_mv.user_id, clients_portfolios_dm.effective_start_date, open_accounts_mv.account_id, account_to_portfolios_dm.effective_start_date ]

Fragment 51990 (Actor 737061,737062)
StreamSyncLogStore
├── output: [ user_to_clients_mv.user_id, open_accounts_mv.account_id, open_accounts_mv.is_restricted, clients_portfolios_dm.portfolio_id, user_to_clients_mv.client_id, clients_portfolios_dm.effective_start_date, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.effective_start_date ]
├── stream key: [ clients_portfolios_dm.portfolio_id, user_to_clients_mv.client_id, user_to_clients_mv.user_id, clients_portfolios_dm.effective_start_date, open_accounts_mv.account_id, account_to_portfolios_dm.effective_start_date ]
└── MergeExecutor
    ├── output: [ user_to_clients_mv.user_id, open_accounts_mv.account_id, open_accounts_mv.is_restricted, clients_portfolios_dm.portfolio_id, user_to_clients_mv.client_id, clients_portfolios_dm.effective_start_date, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.effective_start_date ]
    └── stream key: [ clients_portfolios_dm.portfolio_id, user_to_clients_mv.client_id, user_to_clients_mv.user_id, clients_portfolios_dm.effective_start_date, open_accounts_mv.account_id, account_to_portfolios_dm.effective_start_date ]

Fragment 51991 (Actor 737058,737057)
StreamSyncLogStore
├── output: [ user_to_clients_mv.user_id, open_accounts_mv.account_id, open_accounts_mv.is_restricted, clients_portfolios_dm.portfolio_id, user_to_clients_mv.client_id, clients_portfolios_dm.effective_start_date, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.effective_start_date ]
├── stream key: [ clients_portfolios_dm.portfolio_id, user_to_clients_mv.client_id, user_to_clients_mv.user_id, clients_portfolios_dm.effective_start_date, open_accounts_mv.account_id, account_to_portfolios_dm.effective_start_date ]
└── StreamHashJoin { type: Inner, predicate: clients_portfolios_dm.portfolio_id = account_to_portfolios_dm.portfolio_id }
    ├── output: [ user_to_clients_mv.user_id, open_accounts_mv.account_id, open_accounts_mv.is_restricted, clients_portfolios_dm.portfolio_id, user_to_clients_mv.client_id, clients_portfolios_dm.effective_start_date, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.effective_start_date ]
    ├── stream key: [ clients_portfolios_dm.portfolio_id, user_to_clients_mv.client_id, user_to_clients_mv.user_id, clients_portfolios_dm.effective_start_date, open_accounts_mv.account_id, account_to_portfolios_dm.effective_start_date ]
    ├── MergeExecutor
    │   ├── output: [ user_to_clients_mv.user_id, clients_portfolios_dm.portfolio_id, user_to_clients_mv.client_id, clients_portfolios_dm.client_id, clients_portfolios_dm.effective_start_date ]
    │   └── stream key: [ clients_portfolios_dm.portfolio_id, user_to_clients_mv.client_id, user_to_clients_mv.user_id, clients_portfolios_dm.effective_start_date ]
    └── MergeExecutor
        ├── output: [ open_accounts_mv.account_id, open_accounts_mv.is_restricted, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.account_id, account_to_portfolios_dm.effective_start_date ]
        └── stream key: [ account_to_portfolios_dm.portfolio_id, open_accounts_mv.account_id, account_to_portfolios_dm.effective_start_date ]

Fragment 51992 (Actor 737064,737063)
StreamLocalityProvider { locality_columns: [clients_portfolios_dm.portfolio_id] }
├── output: [ user_to_clients_mv.user_id, clients_portfolios_dm.portfolio_id, user_to_clients_mv.client_id, clients_portfolios_dm.client_id, clients_portfolios_dm.effective_start_date ]
├── stream key: [ clients_portfolios_dm.portfolio_id, user_to_clients_mv.client_id, user_to_clients_mv.user_id, clients_portfolios_dm.effective_start_date ]
└── MergeExecutor
    ├── output: [ user_to_clients_mv.user_id, clients_portfolios_dm.portfolio_id, user_to_clients_mv.client_id, clients_portfolios_dm.client_id, clients_portfolios_dm.effective_start_date ]
    └── stream key: [ user_to_clients_mv.client_id, user_to_clients_mv.user_id, clients_portfolios_dm.portfolio_id, clients_portfolios_dm.effective_start_date ]

Fragment 51993 (Actor 737070,737069)
StreamSyncLogStore
├── output: [ user_to_clients_mv.user_id, clients_portfolios_dm.portfolio_id, user_to_clients_mv.client_id, clients_portfolios_dm.client_id, clients_portfolios_dm.effective_start_date ]
├── stream key: [ user_to_clients_mv.client_id, user_to_clients_mv.user_id, clients_portfolios_dm.portfolio_id, clients_portfolios_dm.effective_start_date ]
└── MergeExecutor
    ├── output: [ user_to_clients_mv.user_id, clients_portfolios_dm.portfolio_id, user_to_clients_mv.client_id, clients_portfolios_dm.client_id, clients_portfolios_dm.effective_start_date ]
    └── stream key: [ user_to_clients_mv.client_id, user_to_clients_mv.user_id, clients_portfolios_dm.portfolio_id, clients_portfolios_dm.effective_start_date ]

Fragment 51994 (Actor 737066,737065)
StreamSyncLogStore
├── output: [ user_to_clients_mv.user_id, clients_portfolios_dm.portfolio_id, user_to_clients_mv.client_id, clients_portfolios_dm.client_id, clients_portfolios_dm.effective_start_date ]
├── stream key: [ user_to_clients_mv.client_id, user_to_clients_mv.user_id, clients_portfolios_dm.portfolio_id, clients_portfolios_dm.effective_start_date ]
└── MergeExecutor
    ├── output: [ user_to_clients_mv.user_id, clients_portfolios_dm.portfolio_id, user_to_clients_mv.client_id, clients_portfolios_dm.client_id, clients_portfolios_dm.effective_start_date ]
    └── stream key: [ user_to_clients_mv.client_id, user_to_clients_mv.user_id, clients_portfolios_dm.portfolio_id, clients_portfolios_dm.effective_start_date ]

Fragment 51995 (Actor 737067,737068)
StreamSyncLogStore
├── output: [ user_to_clients_mv.user_id, clients_portfolios_dm.portfolio_id, user_to_clients_mv.client_id, clients_portfolios_dm.client_id, clients_portfolios_dm.effective_start_date ]
├── stream key: [ user_to_clients_mv.client_id, user_to_clients_mv.user_id, clients_portfolios_dm.portfolio_id, clients_portfolios_dm.effective_start_date ]
└── StreamHashJoin { type: Inner, predicate: user_to_clients_mv.client_id = clients_portfolios_dm.client_id }
    ├── output: [ user_to_clients_mv.user_id, clients_portfolios_dm.portfolio_id, user_to_clients_mv.client_id, clients_portfolios_dm.client_id, clients_portfolios_dm.effective_start_date ]
    ├── stream key: [ user_to_clients_mv.client_id, user_to_clients_mv.user_id, clients_portfolios_dm.portfolio_id, clients_portfolios_dm.effective_start_date ]
    ├── MergeExecutor { output: [ user_to_clients_mv.user_id, user_to_clients_mv.client_id ], stream key: [ user_to_clients_mv.client_id, user_to_clients_mv.user_id ] }
    └── MergeExecutor { output: [ clients_portfolios_dm.client_id, clients_portfolios_dm.portfolio_id, clients_portfolios_dm.effective_start_date ], stream key: [ clients_portfolios_dm.client_id, clients_portfolios_dm.portfolio_id, clients_portfolios_dm.effective_start_date ] }

Fragment 51996 (Actor 737071,737072)
StreamLocalityProvider { locality_columns: [user_to_clients_mv.client_id] } { output: [ user_to_clients_mv.user_id, user_to_clients_mv.client_id ], stream key: [ user_to_clients_mv.client_id, user_to_clients_mv.user_id ] }
└── MergeExecutor { output: [ user_to_clients_mv.user_id, user_to_clients_mv.client_id ], stream key: [ user_to_clients_mv.user_id, user_to_clients_mv.client_id ] }

Fragment 51997 (Actor 737073,737074)
StreamTableScan { table: user_to_clients_mv, columns: [user_id, client_id] } { output: [ user_to_clients_mv.user_id, user_to_clients_mv.client_id ], stream key: [ user_to_clients_mv.user_id, user_to_clients_mv.client_id ] }
├── Upstream { output: [ user_id, client_id ], stream key: [] }
└── BatchPlanNode { output: [ user_id, client_id ], stream key: [] }

Fragment 51998 (Actor 737076,737075)
StreamLocalityProvider { locality_columns: [clients_portfolios_dm.client_id] } { output: [ clients_portfolios_dm.client_id, clients_portfolios_dm.portfolio_id, clients_portfolios_dm.effective_start_date ], stream key: [ clients_portfolios_dm.client_id, clients_portfolios_dm.portfolio_id, clients_portfolios_dm.effective_start_date ] }
└── MergeExecutor { output: [ clients_portfolios_dm.client_id, clients_portfolios_dm.portfolio_id, clients_portfolios_dm.effective_start_date ], stream key: [ clients_portfolios_dm.client_id, clients_portfolios_dm.portfolio_id, clients_portfolios_dm.effective_start_date ] }

Fragment 51999 (Actor 737097,737098)
StreamProject { exprs: [clients_portfolios_dm.client_id, clients_portfolios_dm.portfolio_id, clients_portfolios_dm.effective_start_date] }
├── output: [ clients_portfolios_dm.client_id, clients_portfolios_dm.portfolio_id, clients_portfolios_dm.effective_start_date ]
├── stream key: [ clients_portfolios_dm.client_id, clients_portfolios_dm.portfolio_id, clients_portfolios_dm.effective_start_date ]
└── StreamFilter { predicate: IsNull(clients_portfolios_dm.disabled_at) }
    ├── output: [ clients_portfolios_dm.client_id, clients_portfolios_dm.portfolio_id, clients_portfolios_dm.effective_start_date, clients_portfolios_dm.disabled_at ]
    ├── stream key: [ clients_portfolios_dm.client_id, clients_portfolios_dm.portfolio_id, clients_portfolios_dm.effective_start_date ]
    └── StreamTableScan { table: clients_portfolios_dm, columns: [client_id, portfolio_id, effective_start_date, disabled_at] }
        ├── output: [ clients_portfolios_dm.client_id, clients_portfolios_dm.portfolio_id, clients_portfolios_dm.effective_start_date, clients_portfolios_dm.disabled_at ]
        ├── stream key: [ clients_portfolios_dm.client_id, clients_portfolios_dm.portfolio_id, clients_portfolios_dm.effective_start_date ]
        ├── Upstream { output: [ client_id, portfolio_id, effective_start_date, disabled_at ], stream key: [] }
        └── BatchPlanNode { output: [ client_id, portfolio_id, effective_start_date, disabled_at ], stream key: [] }

Fragment 52000 (Actor 737080,737079)
StreamLocalityProvider { locality_columns: [account_to_portfolios_dm.portfolio_id] }
├── output: [ open_accounts_mv.account_id, open_accounts_mv.is_restricted, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.account_id, account_to_portfolios_dm.effective_start_date ]
├── stream key: [ account_to_portfolios_dm.portfolio_id, open_accounts_mv.account_id, account_to_portfolios_dm.effective_start_date ]
└── MergeExecutor
    ├── output: [ open_accounts_mv.account_id, open_accounts_mv.is_restricted, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.account_id, account_to_portfolios_dm.effective_start_date ]
    └── stream key: [ open_accounts_mv.account_id, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.effective_start_date ]

Fragment 52001 (Actor 737085,737086)
StreamSyncLogStore
├── output: [ open_accounts_mv.account_id, open_accounts_mv.is_restricted, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.account_id, account_to_portfolios_dm.effective_start_date ]
├── stream key: [ open_accounts_mv.account_id, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.effective_start_date ]
└── MergeExecutor
    ├── output: [ open_accounts_mv.account_id, open_accounts_mv.is_restricted, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.account_id, account_to_portfolios_dm.effective_start_date ]
    └── stream key: [ open_accounts_mv.account_id, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.effective_start_date ]

Fragment 52002 (Actor 737084,737083)
StreamSyncLogStore
├── output: [ open_accounts_mv.account_id, open_accounts_mv.is_restricted, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.account_id, account_to_portfolios_dm.effective_start_date ]
├── stream key: [ open_accounts_mv.account_id, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.effective_start_date ]
└── MergeExecutor
    ├── output: [ open_accounts_mv.account_id, open_accounts_mv.is_restricted, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.account_id, account_to_portfolios_dm.effective_start_date ]
    └── stream key: [ open_accounts_mv.account_id, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.effective_start_date ]

Fragment 52003 (Actor 737081,737082)
StreamSyncLogStore
├── output: [ open_accounts_mv.account_id, open_accounts_mv.is_restricted, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.account_id, account_to_portfolios_dm.effective_start_date ]
├── stream key: [ open_accounts_mv.account_id, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.effective_start_date ]
└── StreamHashJoin { type: Inner, predicate: open_accounts_mv.account_id = account_to_portfolios_dm.account_id }
    ├── output: [ open_accounts_mv.account_id, open_accounts_mv.is_restricted, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.account_id, account_to_portfolios_dm.effective_start_date ]
    ├── stream key: [ open_accounts_mv.account_id, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.effective_start_date ]
    ├── MergeExecutor { output: [ open_accounts_mv.account_id, open_accounts_mv.is_restricted ], stream key: [ open_accounts_mv.account_id ] }
    └── MergeExecutor { output: [ account_to_portfolios_dm.account_id, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.effective_start_date ], stream key: [ account_to_portfolios_dm.account_id, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.effective_start_date ] }

Fragment 52004 (Actor 737100,737099)
StreamTableScan { table: open_accounts_mv, columns: [account_id, is_restricted] } { output: [ open_accounts_mv.account_id, open_accounts_mv.is_restricted ], stream key: [ open_accounts_mv.account_id ] }
├── Upstream { output: [ account_id, is_restricted ], stream key: [] }
└── BatchPlanNode { output: [ account_id, is_restricted ], stream key: [] }

Fragment 52005 (Actor 737088,737087)
StreamLocalityProvider { locality_columns: [account_to_portfolios_dm.account_id] }
├── output: [ account_to_portfolios_dm.account_id, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.effective_start_date ]
├── stream key: [ account_to_portfolios_dm.account_id, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.effective_start_date ]
└── MergeExecutor { output: [ account_to_portfolios_dm.account_id, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.effective_start_date ], stream key: [ account_to_portfolios_dm.account_id, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.effective_start_date ] }

Fragment 52006 (Actor 737101,737102)
StreamProject { exprs: [account_to_portfolios_dm.account_id, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.effective_start_date] }
├── output: [ account_to_portfolios_dm.account_id, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.effective_start_date ]
├── stream key: [ account_to_portfolios_dm.account_id, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.effective_start_date ]
└── StreamFilter { predicate: IsNull(account_to_portfolios_dm.disabled_at) }
    ├── output: [ account_to_portfolios_dm.account_id, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.effective_start_date, account_to_portfolios_dm.disabled_at ]
    ├── stream key: [ account_to_portfolios_dm.account_id, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.effective_start_date ]
    └── StreamTableScan { table: account_to_portfolios_dm, columns: [account_id, portfolio_id, effective_start_date, disabled_at] }
        ├── output: [ account_to_portfolios_dm.account_id, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.effective_start_date, account_to_portfolios_dm.disabled_at ]
        ├── stream key: [ account_to_portfolios_dm.account_id, account_to_portfolios_dm.portfolio_id, account_to_portfolios_dm.effective_start_date ]
        ├── Upstream { output: [ account_id, portfolio_id, effective_start_date, disabled_at ], stream key: [] }
        └── BatchPlanNode { output: [ account_id, portfolio_id, effective_start_date, disabled_at ], stream key: [] }

Fragment 52007 (Actor 737104,737103)
StreamProject { exprs: [users_dm.user_id] } { output: [ users_dm.user_id ], stream key: [ users_dm.user_id ] }
└── StreamFilter { predicate: IsNull(users_dm.disabled_at) } { output: [ users_dm.user_id, users_dm.disabled_at ], stream key: [ users_dm.user_id ] }
    └── StreamTableScan { table: users_dm, columns: [user_id, disabled_at] } { output: [ users_dm.user_id, users_dm.disabled_at ], stream key: [ users_dm.user_id ] }
        ├── Upstream { output: [ user_id, disabled_at ], stream key: [] }
        └── BatchPlanNode { output: [ user_id, disabled_at ], stream key: [] }

Fragment 52008 (Actor 736996,736995)
StreamProject { exprs: [user_to_portfolios_mv.user_id, open_accounts_mv.account_id, 'restricted':Varchar, 1:Int32] } { output: [ user_to_portfolios_mv.user_id, open_accounts_mv.account_id, 'restricted':Varchar, 1:Int32 ], stream key: [ user_to_portfolios_mv.user_id, open_accounts_mv.account_id ] }
└── StreamFilter { predicate: (bool_or(open_accounts_mv.is_restricted) = true:Boolean) } { output: [ user_to_portfolios_mv.user_id, open_accounts_mv.account_id, bool_or(open_accounts_mv.is_restricted), users_dm.user_id ], stream key: [ user_to_portfolios_mv.user_id, open_accounts_mv.account_id ] }
    └── MergeExecutor { output: [ user_to_portfolios_mv.user_id, open_accounts_mv.account_id, bool_or(open_accounts_mv.is_restricted), users_dm.user_id ], stream key: [ user_to_portfolios_mv.user_id, open_accounts_mv.account_id ] }

Fragment 52009 (Actor 737003,737004)
StreamProject { exprs: [user_to_portfolios_mv.user_id, open_accounts_mv.account_id, 'un_restricted':Varchar, 2:Int32] } { output: [ user_to_portfolios_mv.user_id, open_accounts_mv.account_id, 'un_restricted':Varchar, 2:Int32 ], stream key: [ user_to_portfolios_mv.user_id, open_accounts_mv.account_id ] }
└── StreamFilter { predicate: Not(IsTrue(bool_or(open_accounts_mv.is_restricted))) } { output: [ user_to_portfolios_mv.user_id, open_accounts_mv.account_id, bool_or(open_accounts_mv.is_restricted), users_dm.user_id ], stream key: [ user_to_portfolios_mv.user_id, open_accounts_mv.account_id ] }
    └── MergeExecutor { output: [ user_to_portfolios_mv.user_id, open_accounts_mv.account_id, bool_or(open_accounts_mv.is_restricted), users_dm.user_id ], stream key: [ user_to_portfolios_mv.user_id, open_accounts_mv.account_id ] }