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

← cluster opportunity objects portfolio_fx_exposure_delta_mv explain
Overview Objects Graph History
materialized view · opportunity.portfolio_fx_exposure_delta_mv profiled over 5s
seconds (1–30)
Stateful hash join (4 state tables) — consider a temporal join for dimension lookupsAggregation state — unbounded unless keyed or temporally filteredDynamic filter — verify it pairs with a temporal condition to clean state
61 operators
Materialize · opportunity.portfolio_fx_exposure_delta_mv
0% idle 2 actors
Project
2 actors
HashAgg Aggregation state — unbounded unless keyed or temporally filtered
0% idle 2 actors
LocalityProvider
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
Filter · (IsNull(currencies_dm.anchor_currency_code) OR (position_by…
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore · LeftOuter · portfolios_dm.base_currency_code = currencies_dm.code
2 actors
HashJoin · LeftOuter · portfolios_dm.base_currency_code = currencies_dm.code 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 · currencies_dm
0% idle 2 actors
BatchPlan
2 actors
Merge
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
LocalityProvider
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore · Inner · portfolio_to_account_groups_mv.portfolio_id = portfolios_dm…
2 actors
HashJoin · Inner · portfolio_to_account_groups_mv.portfolio_id = portfolios_dm… Stateful hash join (4 state tables) — consider a temporal join for dimension lookups
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
StreamScan · portfolios_dm
0% idle 2 actors
BatchPlan
2 actors
Merge
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
LocalityProvider
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore · Inner · position_by_currency_mv_next.account_group_id = portfolio_t…
2 actors
HashJoin · Inner · position_by_currency_mv_next.account_group_id = portfolio_t… Stateful hash join (4 state tables) — consider a temporal join for dimension lookups
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
LocalityProvider
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
Project · portfolio_to_account_groups_mv
2 actors
Filter · portfolio_to_account_groups_mv
0% idle 2 actors
StreamScan · portfolio_to_account_groups_mv
0% idle 2 actors
BatchPlan
2 actors
Merge
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
LocalityProvider
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
Project · position_by_currency_mv_next
2 actors
DynamicFilter · position_by_currency_mv_next Dynamic filter — verify it pairs with a temporal condition to clean state
0% idle 2 actors
Merge
2 actors
Exchange
0% 2/s 0 actors
Project
1 actor
Now
0% 2/s 1 actor
Project · position_by_currency_mv_next
2 actors
Filter · position_by_currency_mv_next
2% idle 2 actors
StreamScan · position_by_currency_mv_next
2% idle 2 actors
BatchPlan
2 actors
Merge
2 actors
Heat = the operator's output-buffer backpressure over the sampling window. Click a node to fold its subtree.
Materialize · opportunity.portfolio_fx_exposure_delta_mv Materialize opportunity.portfolio_f… idle · 2 actors Project Project — · 2 actors HashAgg HashAgg idle · 2 actors LocalityProvider LocalityProvider idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors Filter · (IsNull(currencies_dm.anchor_currency_code) OR (position_by… Filter (IsNull(currencies_dm.a… idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore · LeftOuter · portfolios_dm.base_currency_code = currencies_dm.code SyncLogStore LeftOuter · portfolios_… — · 2 actors HashJoin · LeftOuter · portfolios_dm.base_currency_code = currencies_dm.code HashJoin LeftOuter · portfolios_… idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors StreamScan · currencies_dm StreamScan currencies_dm idle · 2 actors BatchPlan BatchPlan — · 2 actors Merge Merge — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors LocalityProvider LocalityProvider idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore · Inner · portfolio_to_account_groups_mv.portfolio_id = portfolios_dm… SyncLogStore Inner · portfolio_to_ac… — · 2 actors HashJoin · Inner · portfolio_to_account_groups_mv.portfolio_id = portfolios_dm… HashJoin Inner · portfolio_to_ac… idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors StreamScan · portfolios_dm StreamScan portfolios_dm idle · 2 actors BatchPlan BatchPlan — · 2 actors Merge Merge — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors LocalityProvider LocalityProvider idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore · Inner · position_by_currency_mv_next.account_group_id = portfolio_t… SyncLogStore Inner · position_by_cur… — · 2 actors HashJoin · Inner · position_by_currency_mv_next.account_group_id = portfolio_t… HashJoin Inner · position_by_cur… idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors LocalityProvider LocalityProvider idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors Project · portfolio_to_account_groups_mv Project portfolio_to_account_gr… — · 2 actors Filter · portfolio_to_account_groups_mv Filter portfolio_to_account_gr… idle · 2 actors StreamScan · portfolio_to_account_groups_mv StreamScan portfolio_to_account_gr… idle · 2 actors BatchPlan BatchPlan — · 2 actors Merge Merge — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors LocalityProvider LocalityProvider idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors Project · position_by_currency_mv_next Project position_by_currency_mv… — · 2 actors DynamicFilter · position_by_currency_mv_next DynamicFilter position_by_currency_mv… idle · 2 actors Merge Merge — · 2 actors Exchange Exchange 2/s · 0 actors Project Project — · 1 actor Now Now 2/s · 1 actor Project · position_by_currency_mv_next Project position_by_currency_mv… — · 2 actors Filter · position_by_currency_mv_next Filter position_by_currency_mv… idle · 2 actors StreamScan · position_by_currency_mv_next StreamScan position_by_currency_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 61842 (Actor 740210,740211)
StreamMaterialize { columns: [portfolio_id, dim_balance_date, currency_code, fx_exposure_pct], stream_key: [dim_balance_date, portfolio_id, currency_code], pk_columns: [dim_balance_date, portfolio_id, currency_code], pk_conflict: NoCheck }
├── output: [ portfolio_to_account_groups_mv.portfolio_id, position_by_currency_mv_next.dim_balance_date, portfolios_dm.base_currency_code, sum(position_by_currency_mv_next.weight) ]
├── stream key: [ position_by_currency_mv_next.dim_balance_date, portfolio_to_account_groups_mv.portfolio_id, portfolios_dm.base_currency_code ]
└── StreamProject { exprs: [portfolio_to_account_groups_mv.portfolio_id, position_by_currency_mv_next.dim_balance_date, portfolios_dm.base_currency_code, sum(position_by_currency_mv_next.weight)] }
    ├── output: [ portfolio_to_account_groups_mv.portfolio_id, position_by_currency_mv_next.dim_balance_date, portfolios_dm.base_currency_code, sum(position_by_currency_mv_next.weight) ]
    ├── stream key: [ position_by_currency_mv_next.dim_balance_date, portfolio_to_account_groups_mv.portfolio_id, portfolios_dm.base_currency_code ]
    └── StreamHashAgg { group_key: [position_by_currency_mv_next.dim_balance_date, portfolio_to_account_groups_mv.portfolio_id, portfolios_dm.base_currency_code], aggs: [sum(position_by_currency_mv_next.weight), count] }
        ├── output: [ position_by_currency_mv_next.dim_balance_date, portfolio_to_account_groups_mv.portfolio_id, portfolios_dm.base_currency_code, sum(position_by_currency_mv_next.weight), count ]
        ├── stream key: [ position_by_currency_mv_next.dim_balance_date, portfolio_to_account_groups_mv.portfolio_id, portfolios_dm.base_currency_code ]
        └── StreamLocalityProvider { locality_columns: [position_by_currency_mv_next.dim_balance_date, portfolio_to_account_groups_mv.portfolio_id, portfolios_dm.base_currency_code] }
            ├── output:
            │   ┌── position_by_currency_mv_next.dim_balance_date
            │   ├── position_by_currency_mv_next.item_id
            │   ├── position_by_currency_mv_next.weight
            │   ├── portfolio_to_account_groups_mv.portfolio_id
            │   ├── portfolios_dm.base_currency_code
            │   ├── currencies_dm.anchor_currency_code
            │   ├── position_by_currency_mv_next.account_group_id
            │   ├── position_by_currency_mv_next.position_type
            │   ├── position_by_currency_mv_next.currency_code
            │   ├── position_by_currency_mv_next.source_entity_type
            │   ├── position_by_currency_mv_next.position_values_mv_next.position_type_expanded
            │   ├── position_by_currency_mv_next.flag
            │   ├── position_by_currency_mv_next.position_summary_mv_next.source_entity_type
            │   ├── portfolio_to_account_groups_mv.$src
            │   └── currencies_dm.code
            ├── stream key:
            │   ┌── position_by_currency_mv_next.dim_balance_date
            │   ├── portfolio_to_account_groups_mv.portfolio_id
            │   ├── portfolios_dm.base_currency_code
            │   ├── position_by_currency_mv_next.account_group_id
            │   ├── position_by_currency_mv_next.position_type
            │   ├── position_by_currency_mv_next.currency_code
            │   ├── position_by_currency_mv_next.source_entity_type
            │   ├── position_by_currency_mv_next.position_values_mv_next.position_type_expanded
            │   ├── position_by_currency_mv_next.item_id
            │   ├── position_by_currency_mv_next.flag
            │   ├── position_by_currency_mv_next.position_summary_mv_next.source_entity_type
            │   └── portfolio_to_account_groups_mv.$src
            └── MergeExecutor
                ├── output:
                │   ┌── position_by_currency_mv_next.dim_balance_date
                │   ├── position_by_currency_mv_next.item_id
                │   ├── position_by_currency_mv_next.weight
                │   ├── portfolio_to_account_groups_mv.portfolio_id
                │   ├── portfolios_dm.base_currency_code
                │   ├── currencies_dm.anchor_currency_code
                │   ├── position_by_currency_mv_next.account_group_id
                │   ├── position_by_currency_mv_next.position_type
                │   ├── position_by_currency_mv_next.currency_code
                │   ├── position_by_currency_mv_next.source_entity_type
                │   ├── position_by_currency_mv_next.position_values_mv_next.position_type_expanded
                │   ├── position_by_currency_mv_next.flag
                │   ├── position_by_currency_mv_next.position_summary_mv_next.source_entity_type
                │   ├── portfolio_to_account_groups_mv.$src
                │   └── currencies_dm.code
                └── stream key:
                    ┌── portfolios_dm.base_currency_code
                    ├── portfolio_to_account_groups_mv.portfolio_id
                    ├── position_by_currency_mv_next.account_group_id
                    ├── position_by_currency_mv_next.dim_balance_date
                    ├── position_by_currency_mv_next.position_type
                    ├── position_by_currency_mv_next.currency_code
                    ├── position_by_currency_mv_next.source_entity_type
                    ├── position_by_currency_mv_next.position_values_mv_next.position_type_expanded
                    ├── position_by_currency_mv_next.item_id
                    ├── position_by_currency_mv_next.flag
                    ├── position_by_currency_mv_next.position_summary_mv_next.source_entity_type
                    └── portfolio_to_account_groups_mv.$src

Fragment 61843 (Actor 740310,740311)
StreamFilter { predicate: (IsNull(currencies_dm.anchor_currency_code) OR (position_by_currency_mv_next.item_id <> currencies_dm.anchor_currency_code)) }
├── output:
│   ┌── position_by_currency_mv_next.dim_balance_date
│   ├── position_by_currency_mv_next.item_id
│   ├── position_by_currency_mv_next.weight
│   ├── portfolio_to_account_groups_mv.portfolio_id
│   ├── portfolios_dm.base_currency_code
│   ├── currencies_dm.anchor_currency_code
│   ├── position_by_currency_mv_next.account_group_id
│   ├── position_by_currency_mv_next.position_type
│   ├── position_by_currency_mv_next.currency_code
│   ├── position_by_currency_mv_next.source_entity_type
│   ├── position_by_currency_mv_next.position_values_mv_next.position_type_expanded
│   ├── position_by_currency_mv_next.flag
│   ├── position_by_currency_mv_next.position_summary_mv_next.source_entity_type
│   ├── portfolio_to_account_groups_mv.$src
│   └── currencies_dm.code
├── stream key:
│   ┌── portfolios_dm.base_currency_code
│   ├── portfolio_to_account_groups_mv.portfolio_id
│   ├── position_by_currency_mv_next.account_group_id
│   ├── position_by_currency_mv_next.dim_balance_date
│   ├── position_by_currency_mv_next.position_type
│   ├── position_by_currency_mv_next.currency_code
│   ├── position_by_currency_mv_next.source_entity_type
│   ├── position_by_currency_mv_next.position_values_mv_next.position_type_expanded
│   ├── position_by_currency_mv_next.item_id
│   ├── position_by_currency_mv_next.flag
│   ├── position_by_currency_mv_next.position_summary_mv_next.source_entity_type
│   └── portfolio_to_account_groups_mv.$src
└── MergeExecutor
    ├── output:
    │   ┌── position_by_currency_mv_next.dim_balance_date
    │   ├── position_by_currency_mv_next.item_id
    │   ├── position_by_currency_mv_next.weight
    │   ├── portfolio_to_account_groups_mv.portfolio_id
    │   ├── portfolios_dm.base_currency_code
    │   ├── currencies_dm.anchor_currency_code
    │   ├── position_by_currency_mv_next.account_group_id
    │   ├── position_by_currency_mv_next.position_type
    │   ├── position_by_currency_mv_next.currency_code
    │   ├── position_by_currency_mv_next.source_entity_type
    │   ├── position_by_currency_mv_next.position_values_mv_next.position_type_expanded
    │   ├── position_by_currency_mv_next.flag
    │   ├── position_by_currency_mv_next.position_summary_mv_next.source_entity_type
    │   ├── portfolio_to_account_groups_mv.$src
    │   └── currencies_dm.code
    └── stream key:
        ┌── portfolios_dm.base_currency_code
        ├── portfolio_to_account_groups_mv.portfolio_id
        ├── position_by_currency_mv_next.account_group_id
        ├── position_by_currency_mv_next.dim_balance_date
        ├── position_by_currency_mv_next.position_type
        ├── position_by_currency_mv_next.currency_code
        ├── position_by_currency_mv_next.source_entity_type
        ├── position_by_currency_mv_next.position_values_mv_next.position_type_expanded
        ├── position_by_currency_mv_next.item_id
        ├── position_by_currency_mv_next.flag
        ├── position_by_currency_mv_next.position_summary_mv_next.source_entity_type
        └── portfolio_to_account_groups_mv.$src

Fragment 61844 (Actor 740313,740312)
StreamSyncLogStore
├── output:
│   ┌── position_by_currency_mv_next.dim_balance_date
│   ├── position_by_currency_mv_next.item_id
│   ├── position_by_currency_mv_next.weight
│   ├── portfolio_to_account_groups_mv.portfolio_id
│   ├── portfolios_dm.base_currency_code
│   ├── currencies_dm.anchor_currency_code
│   ├── position_by_currency_mv_next.account_group_id
│   ├── position_by_currency_mv_next.position_type
│   ├── position_by_currency_mv_next.currency_code
│   ├── position_by_currency_mv_next.source_entity_type
│   ├── position_by_currency_mv_next.position_values_mv_next.position_type_expanded
│   ├── position_by_currency_mv_next.flag
│   ├── position_by_currency_mv_next.position_summary_mv_next.source_entity_type
│   ├── portfolio_to_account_groups_mv.$src
│   └── currencies_dm.code
├── stream key:
│   ┌── portfolios_dm.base_currency_code
│   ├── portfolio_to_account_groups_mv.portfolio_id
│   ├── position_by_currency_mv_next.account_group_id
│   ├── position_by_currency_mv_next.dim_balance_date
│   ├── position_by_currency_mv_next.position_type
│   ├── position_by_currency_mv_next.currency_code
│   ├── position_by_currency_mv_next.source_entity_type
│   ├── position_by_currency_mv_next.position_values_mv_next.position_type_expanded
│   ├── position_by_currency_mv_next.item_id
│   ├── position_by_currency_mv_next.flag
│   ├── position_by_currency_mv_next.position_summary_mv_next.source_entity_type
│   └── portfolio_to_account_groups_mv.$src
└── StreamHashJoin { type: LeftOuter, predicate: portfolios_dm.base_currency_code = currencies_dm.code }
    ├── output:
    │   ┌── position_by_currency_mv_next.dim_balance_date
    │   ├── position_by_currency_mv_next.item_id
    │   ├── position_by_currency_mv_next.weight
    │   ├── portfolio_to_account_groups_mv.portfolio_id
    │   ├── portfolios_dm.base_currency_code
    │   ├── currencies_dm.anchor_currency_code
    │   ├── position_by_currency_mv_next.account_group_id
    │   ├── position_by_currency_mv_next.position_type
    │   ├── position_by_currency_mv_next.currency_code
    │   ├── position_by_currency_mv_next.source_entity_type
    │   ├── position_by_currency_mv_next.position_values_mv_next.position_type_expanded
    │   ├── position_by_currency_mv_next.flag
    │   ├── position_by_currency_mv_next.position_summary_mv_next.source_entity_type
    │   ├── portfolio_to_account_groups_mv.$src
    │   └── currencies_dm.code
    ├── stream key:
    │   ┌── portfolios_dm.base_currency_code
    │   ├── portfolio_to_account_groups_mv.portfolio_id
    │   ├── position_by_currency_mv_next.account_group_id
    │   ├── position_by_currency_mv_next.dim_balance_date
    │   ├── position_by_currency_mv_next.position_type
    │   ├── position_by_currency_mv_next.currency_code
    │   ├── position_by_currency_mv_next.source_entity_type
    │   ├── position_by_currency_mv_next.position_values_mv_next.position_type_expanded
    │   ├── position_by_currency_mv_next.item_id
    │   ├── position_by_currency_mv_next.flag
    │   ├── position_by_currency_mv_next.position_summary_mv_next.source_entity_type
    │   └── portfolio_to_account_groups_mv.$src
    ├── MergeExecutor
    │   ├── output:
    │   │   ┌── position_by_currency_mv_next.dim_balance_date
    │   │   ├── position_by_currency_mv_next.item_id
    │   │   ├── position_by_currency_mv_next.weight
    │   │   ├── portfolio_to_account_groups_mv.portfolio_id
    │   │   ├── portfolios_dm.base_currency_code
    │   │   ├── position_by_currency_mv_next.account_group_id
    │   │   ├── position_by_currency_mv_next.position_type
    │   │   ├── position_by_currency_mv_next.currency_code
    │   │   ├── position_by_currency_mv_next.source_entity_type
    │   │   ├── position_by_currency_mv_next.position_values_mv_next.position_type_expanded
    │   │   ├── position_by_currency_mv_next.flag
    │   │   ├── position_by_currency_mv_next.position_summary_mv_next.source_entity_type
    │   │   ├── portfolio_to_account_groups_mv.$src
    │   │   └── portfolios_dm.portfolio_id
    │   └── stream key:
    │       ┌── portfolios_dm.base_currency_code
    │       ├── portfolio_to_account_groups_mv.portfolio_id
    │       ├── position_by_currency_mv_next.account_group_id
    │       ├── position_by_currency_mv_next.dim_balance_date
    │       ├── position_by_currency_mv_next.position_type
    │       ├── position_by_currency_mv_next.currency_code
    │       ├── position_by_currency_mv_next.source_entity_type
    │       ├── position_by_currency_mv_next.position_values_mv_next.position_type_expanded
    │       ├── position_by_currency_mv_next.item_id
    │       ├── position_by_currency_mv_next.flag
    │       ├── position_by_currency_mv_next.position_summary_mv_next.source_entity_type
    │       └── portfolio_to_account_groups_mv.$src
    └── MergeExecutor { output: [ currencies_dm.code, currencies_dm.anchor_currency_code ], stream key: [ currencies_dm.code ] }

Fragment 61845 (Actor 740324,740325)
StreamLocalityProvider { locality_columns: [portfolios_dm.base_currency_code] }
├── output:
│   ┌── position_by_currency_mv_next.dim_balance_date
│   ├── position_by_currency_mv_next.item_id
│   ├── position_by_currency_mv_next.weight
│   ├── portfolio_to_account_groups_mv.portfolio_id
│   ├── portfolios_dm.base_currency_code
│   ├── position_by_currency_mv_next.account_group_id
│   ├── position_by_currency_mv_next.position_type
│   ├── position_by_currency_mv_next.currency_code
│   ├── position_by_currency_mv_next.source_entity_type
│   ├── position_by_currency_mv_next.position_values_mv_next.position_type_expanded
│   ├── position_by_currency_mv_next.flag
│   ├── position_by_currency_mv_next.position_summary_mv_next.source_entity_type
│   ├── portfolio_to_account_groups_mv.$src
│   └── portfolios_dm.portfolio_id
├── stream key:
│   ┌── portfolios_dm.base_currency_code
│   ├── portfolio_to_account_groups_mv.portfolio_id
│   ├── position_by_currency_mv_next.account_group_id
│   ├── position_by_currency_mv_next.dim_balance_date
│   ├── position_by_currency_mv_next.position_type
│   ├── position_by_currency_mv_next.currency_code
│   ├── position_by_currency_mv_next.source_entity_type
│   ├── position_by_currency_mv_next.position_values_mv_next.position_type_expanded
│   ├── position_by_currency_mv_next.item_id
│   ├── position_by_currency_mv_next.flag
│   ├── position_by_currency_mv_next.position_summary_mv_next.source_entity_type
│   └── portfolio_to_account_groups_mv.$src
└── MergeExecutor
    ├── output:
    │   ┌── position_by_currency_mv_next.dim_balance_date
    │   ├── position_by_currency_mv_next.item_id
    │   ├── position_by_currency_mv_next.weight
    │   ├── portfolio_to_account_groups_mv.portfolio_id
    │   ├── portfolios_dm.base_currency_code
    │   ├── position_by_currency_mv_next.account_group_id
    │   ├── position_by_currency_mv_next.position_type
    │   ├── position_by_currency_mv_next.currency_code
    │   ├── position_by_currency_mv_next.source_entity_type
    │   ├── position_by_currency_mv_next.position_values_mv_next.position_type_expanded
    │   ├── position_by_currency_mv_next.flag
    │   ├── position_by_currency_mv_next.position_summary_mv_next.source_entity_type
    │   ├── portfolio_to_account_groups_mv.$src
    │   └── portfolios_dm.portfolio_id
    └── stream key:
        ┌── portfolio_to_account_groups_mv.portfolio_id
        ├── position_by_currency_mv_next.account_group_id
        ├── position_by_currency_mv_next.dim_balance_date
        ├── position_by_currency_mv_next.position_type
        ├── position_by_currency_mv_next.currency_code
        ├── position_by_currency_mv_next.source_entity_type
        ├── position_by_currency_mv_next.position_values_mv_next.position_type_expanded
        ├── position_by_currency_mv_next.item_id
        ├── position_by_currency_mv_next.flag
        ├── position_by_currency_mv_next.position_summary_mv_next.source_entity_type
        └── portfolio_to_account_groups_mv.$src

Fragment 61846 (Actor 740326,740327)
StreamSyncLogStore
├── output:
│   ┌── position_by_currency_mv_next.dim_balance_date
│   ├── position_by_currency_mv_next.item_id
│   ├── position_by_currency_mv_next.weight
│   ├── portfolio_to_account_groups_mv.portfolio_id
│   ├── portfolios_dm.base_currency_code
│   ├── position_by_currency_mv_next.account_group_id
│   ├── position_by_currency_mv_next.position_type
│   ├── position_by_currency_mv_next.currency_code
│   ├── position_by_currency_mv_next.source_entity_type
│   ├── position_by_currency_mv_next.position_values_mv_next.position_type_expanded
│   ├── position_by_currency_mv_next.flag
│   ├── position_by_currency_mv_next.position_summary_mv_next.source_entity_type
│   ├── portfolio_to_account_groups_mv.$src
│   └── portfolios_dm.portfolio_id
├── stream key:
│   ┌── portfolio_to_account_groups_mv.portfolio_id
│   ├── position_by_currency_mv_next.account_group_id
│   ├── position_by_currency_mv_next.dim_balance_date
│   ├── position_by_currency_mv_next.position_type
│   ├── position_by_currency_mv_next.currency_code
│   ├── position_by_currency_mv_next.source_entity_type
│   ├── position_by_currency_mv_next.position_values_mv_next.position_type_expanded
│   ├── position_by_currency_mv_next.item_id
│   ├── position_by_currency_mv_next.flag
│   ├── position_by_currency_mv_next.position_summary_mv_next.source_entity_type
│   └── portfolio_to_account_groups_mv.$src
└── StreamHashJoin { type: Inner, predicate: portfolio_to_account_groups_mv.portfolio_id = portfolios_dm.portfolio_id AND (IsNull(portfolios_dm.base_currency_code) OR (position_by_currency_mv_next.item_id <> portfolios_dm.base_currency_code)) }
    ├── output:
    │   ┌── position_by_currency_mv_next.dim_balance_date
    │   ├── position_by_currency_mv_next.item_id
    │   ├── position_by_currency_mv_next.weight
    │   ├── portfolio_to_account_groups_mv.portfolio_id
    │   ├── portfolios_dm.base_currency_code
    │   ├── position_by_currency_mv_next.account_group_id
    │   ├── position_by_currency_mv_next.position_type
    │   ├── position_by_currency_mv_next.currency_code
    │   ├── position_by_currency_mv_next.source_entity_type
    │   ├── position_by_currency_mv_next.position_values_mv_next.position_type_expanded
    │   ├── position_by_currency_mv_next.flag
    │   ├── position_by_currency_mv_next.position_summary_mv_next.source_entity_type
    │   ├── portfolio_to_account_groups_mv.$src
    │   └── portfolios_dm.portfolio_id
    ├── stream key:
    │   ┌── portfolio_to_account_groups_mv.portfolio_id
    │   ├── position_by_currency_mv_next.account_group_id
    │   ├── position_by_currency_mv_next.dim_balance_date
    │   ├── position_by_currency_mv_next.position_type
    │   ├── position_by_currency_mv_next.currency_code
    │   ├── position_by_currency_mv_next.source_entity_type
    │   ├── position_by_currency_mv_next.position_values_mv_next.position_type_expanded
    │   ├── position_by_currency_mv_next.item_id
    │   ├── position_by_currency_mv_next.flag
    │   ├── position_by_currency_mv_next.position_summary_mv_next.source_entity_type
    │   └── portfolio_to_account_groups_mv.$src
    ├── MergeExecutor
    │   ├── output:
    │   │   ┌── position_by_currency_mv_next.dim_balance_date
    │   │   ├── position_by_currency_mv_next.item_id
    │   │   ├── position_by_currency_mv_next.weight
    │   │   ├── portfolio_to_account_groups_mv.portfolio_id
    │   │   ├── position_by_currency_mv_next.account_group_id
    │   │   ├── position_by_currency_mv_next.position_type
    │   │   ├── position_by_currency_mv_next.currency_code
    │   │   ├── position_by_currency_mv_next.source_entity_type
    │   │   ├── position_by_currency_mv_next.position_values_mv_next.position_type_expanded
    │   │   ├── position_by_currency_mv_next.flag
    │   │   ├── position_by_currency_mv_next.position_summary_mv_next.source_entity_type
    │   │   ├── portfolio_to_account_groups_mv.account_group_id
    │   │   └── portfolio_to_account_groups_mv.$src
    │   └── stream key:
    │       ┌── portfolio_to_account_groups_mv.portfolio_id
    │       ├── position_by_currency_mv_next.account_group_id
    │       ├── position_by_currency_mv_next.dim_balance_date
    │       ├── position_by_currency_mv_next.position_type
    │       ├── position_by_currency_mv_next.currency_code
    │       ├── position_by_currency_mv_next.source_entity_type
    │       ├── position_by_currency_mv_next.position_values_mv_next.position_type_expanded
    │       ├── position_by_currency_mv_next.item_id
    │       ├── position_by_currency_mv_next.flag
    │       ├── position_by_currency_mv_next.position_summary_mv_next.source_entity_type
    │       └── portfolio_to_account_groups_mv.$src
    └── MergeExecutor { output: [ portfolios_dm.portfolio_id, portfolios_dm.base_currency_code ], stream key: [ portfolios_dm.portfolio_id ] }

Fragment 61847 (Actor 740328,740329)
StreamLocalityProvider { locality_columns: [portfolio_to_account_groups_mv.portfolio_id] }
├── output:
│   ┌── position_by_currency_mv_next.dim_balance_date
│   ├── position_by_currency_mv_next.item_id
│   ├── position_by_currency_mv_next.weight
│   ├── portfolio_to_account_groups_mv.portfolio_id
│   ├── position_by_currency_mv_next.account_group_id
│   ├── position_by_currency_mv_next.position_type
│   ├── position_by_currency_mv_next.currency_code
│   ├── position_by_currency_mv_next.source_entity_type
│   ├── position_by_currency_mv_next.position_values_mv_next.position_type_expanded
│   ├── position_by_currency_mv_next.flag
│   ├── position_by_currency_mv_next.position_summary_mv_next.source_entity_type
│   ├── portfolio_to_account_groups_mv.account_group_id
│   └── portfolio_to_account_groups_mv.$src
├── stream key:
│   ┌── portfolio_to_account_groups_mv.portfolio_id
│   ├── position_by_currency_mv_next.account_group_id
│   ├── position_by_currency_mv_next.dim_balance_date
│   ├── position_by_currency_mv_next.position_type
│   ├── position_by_currency_mv_next.currency_code
│   ├── position_by_currency_mv_next.source_entity_type
│   ├── position_by_currency_mv_next.position_values_mv_next.position_type_expanded
│   ├── position_by_currency_mv_next.item_id
│   ├── position_by_currency_mv_next.flag
│   ├── position_by_currency_mv_next.position_summary_mv_next.source_entity_type
│   └── portfolio_to_account_groups_mv.$src
└── MergeExecutor
    ├── output:
    │   ┌── position_by_currency_mv_next.dim_balance_date
    │   ├── position_by_currency_mv_next.item_id
    │   ├── position_by_currency_mv_next.weight
    │   ├── portfolio_to_account_groups_mv.portfolio_id
    │   ├── position_by_currency_mv_next.account_group_id
    │   ├── position_by_currency_mv_next.position_type
    │   ├── position_by_currency_mv_next.currency_code
    │   ├── position_by_currency_mv_next.source_entity_type
    │   ├── position_by_currency_mv_next.position_values_mv_next.position_type_expanded
    │   ├── position_by_currency_mv_next.flag
    │   ├── position_by_currency_mv_next.position_summary_mv_next.source_entity_type
    │   ├── portfolio_to_account_groups_mv.account_group_id
    │   └── portfolio_to_account_groups_mv.$src
    └── stream key:
        ┌── position_by_currency_mv_next.account_group_id
        ├── position_by_currency_mv_next.dim_balance_date
        ├── position_by_currency_mv_next.position_type
        ├── position_by_currency_mv_next.currency_code
        ├── position_by_currency_mv_next.source_entity_type
        ├── position_by_currency_mv_next.position_values_mv_next.position_type_expanded
        ├── position_by_currency_mv_next.item_id
        ├── position_by_currency_mv_next.flag
        ├── position_by_currency_mv_next.position_summary_mv_next.source_entity_type
        ├── portfolio_to_account_groups_mv.portfolio_id
        └── portfolio_to_account_groups_mv.$src

Fragment 61848 (Actor 740330,740331)
StreamSyncLogStore
├── output:
│   ┌── position_by_currency_mv_next.dim_balance_date
│   ├── position_by_currency_mv_next.item_id
│   ├── position_by_currency_mv_next.weight
│   ├── portfolio_to_account_groups_mv.portfolio_id
│   ├── position_by_currency_mv_next.account_group_id
│   ├── position_by_currency_mv_next.position_type
│   ├── position_by_currency_mv_next.currency_code
│   ├── position_by_currency_mv_next.source_entity_type
│   ├── position_by_currency_mv_next.position_values_mv_next.position_type_expanded
│   ├── position_by_currency_mv_next.flag
│   ├── position_by_currency_mv_next.position_summary_mv_next.source_entity_type
│   ├── portfolio_to_account_groups_mv.account_group_id
│   └── portfolio_to_account_groups_mv.$src
├── stream key:
│   ┌── position_by_currency_mv_next.account_group_id
│   ├── position_by_currency_mv_next.dim_balance_date
│   ├── position_by_currency_mv_next.position_type
│   ├── position_by_currency_mv_next.currency_code
│   ├── position_by_currency_mv_next.source_entity_type
│   ├── position_by_currency_mv_next.position_values_mv_next.position_type_expanded
│   ├── position_by_currency_mv_next.item_id
│   ├── position_by_currency_mv_next.flag
│   ├── position_by_currency_mv_next.position_summary_mv_next.source_entity_type
│   ├── portfolio_to_account_groups_mv.portfolio_id
│   └── portfolio_to_account_groups_mv.$src
└── StreamHashJoin { type: Inner, predicate: position_by_currency_mv_next.account_group_id = portfolio_to_account_groups_mv.account_group_id }
    ├── output:
    │   ┌── position_by_currency_mv_next.dim_balance_date
    │   ├── position_by_currency_mv_next.item_id
    │   ├── position_by_currency_mv_next.weight
    │   ├── portfolio_to_account_groups_mv.portfolio_id
    │   ├── position_by_currency_mv_next.account_group_id
    │   ├── position_by_currency_mv_next.position_type
    │   ├── position_by_currency_mv_next.currency_code
    │   ├── position_by_currency_mv_next.source_entity_type
    │   ├── position_by_currency_mv_next.position_values_mv_next.position_type_expanded
    │   ├── position_by_currency_mv_next.flag
    │   ├── position_by_currency_mv_next.position_summary_mv_next.source_entity_type
    │   ├── portfolio_to_account_groups_mv.account_group_id
    │   └── portfolio_to_account_groups_mv.$src
    ├── stream key:
    │   ┌── position_by_currency_mv_next.account_group_id
    │   ├── position_by_currency_mv_next.dim_balance_date
    │   ├── position_by_currency_mv_next.position_type
    │   ├── position_by_currency_mv_next.currency_code
    │   ├── position_by_currency_mv_next.source_entity_type
    │   ├── position_by_currency_mv_next.position_values_mv_next.position_type_expanded
    │   ├── position_by_currency_mv_next.item_id
    │   ├── position_by_currency_mv_next.flag
    │   ├── position_by_currency_mv_next.position_summary_mv_next.source_entity_type
    │   ├── portfolio_to_account_groups_mv.portfolio_id
    │   └── portfolio_to_account_groups_mv.$src
    ├── MergeExecutor
    │   ├── output:
    │   │   ┌── position_by_currency_mv_next.account_group_id
    │   │   ├── position_by_currency_mv_next.dim_balance_date
    │   │   ├── position_by_currency_mv_next.item_id
    │   │   ├── position_by_currency_mv_next.weight
    │   │   ├── position_by_currency_mv_next.position_type
    │   │   ├── position_by_currency_mv_next.currency_code
    │   │   ├── position_by_currency_mv_next.source_entity_type
    │   │   ├── position_by_currency_mv_next.position_values_mv_next.position_type_expanded
    │   │   ├── position_by_currency_mv_next.flag
    │   │   └── position_by_currency_mv_next.position_summary_mv_next.source_entity_type
    │   └── stream key:
    │       ┌── position_by_currency_mv_next.account_group_id
    │       ├── position_by_currency_mv_next.dim_balance_date
    │       ├── position_by_currency_mv_next.position_type
    │       ├── position_by_currency_mv_next.currency_code
    │       ├── position_by_currency_mv_next.source_entity_type
    │       ├── position_by_currency_mv_next.position_values_mv_next.position_type_expanded
    │       ├── position_by_currency_mv_next.item_id
    │       ├── position_by_currency_mv_next.flag
    │       └── position_by_currency_mv_next.position_summary_mv_next.source_entity_type
    └── MergeExecutor
        ├── output: [ portfolio_to_account_groups_mv.portfolio_id, portfolio_to_account_groups_mv.account_group_id, portfolio_to_account_groups_mv.$src ]
        └── stream key: [ portfolio_to_account_groups_mv.account_group_id, portfolio_to_account_groups_mv.portfolio_id, portfolio_to_account_groups_mv.$src ]

Fragment 61849 (Actor 740333,740332)
StreamLocalityProvider { locality_columns: [position_by_currency_mv_next.account_group_id] }
├── output:
│   ┌── position_by_currency_mv_next.account_group_id
│   ├── position_by_currency_mv_next.dim_balance_date
│   ├── position_by_currency_mv_next.item_id
│   ├── position_by_currency_mv_next.weight
│   ├── position_by_currency_mv_next.position_type
│   ├── position_by_currency_mv_next.currency_code
│   ├── position_by_currency_mv_next.source_entity_type
│   ├── position_by_currency_mv_next.position_values_mv_next.position_type_expanded
│   ├── position_by_currency_mv_next.flag
│   └── position_by_currency_mv_next.position_summary_mv_next.source_entity_type
├── stream key:
│   ┌── position_by_currency_mv_next.account_group_id
│   ├── position_by_currency_mv_next.dim_balance_date
│   ├── position_by_currency_mv_next.position_type
│   ├── position_by_currency_mv_next.currency_code
│   ├── position_by_currency_mv_next.source_entity_type
│   ├── position_by_currency_mv_next.position_values_mv_next.position_type_expanded
│   ├── position_by_currency_mv_next.item_id
│   ├── position_by_currency_mv_next.flag
│   └── position_by_currency_mv_next.position_summary_mv_next.source_entity_type
└── MergeExecutor
    ├── output:
    │   ┌── position_by_currency_mv_next.account_group_id
    │   ├── position_by_currency_mv_next.dim_balance_date
    │   ├── position_by_currency_mv_next.item_id
    │   ├── position_by_currency_mv_next.weight
    │   ├── position_by_currency_mv_next.position_type
    │   ├── position_by_currency_mv_next.currency_code
    │   ├── position_by_currency_mv_next.source_entity_type
    │   ├── position_by_currency_mv_next.position_values_mv_next.position_type_expanded
    │   ├── position_by_currency_mv_next.flag
    │   └── position_by_currency_mv_next.position_summary_mv_next.source_entity_type
    └── stream key:
        ┌── position_by_currency_mv_next.account_group_id
        ├── position_by_currency_mv_next.dim_balance_date
        ├── position_by_currency_mv_next.position_type
        ├── position_by_currency_mv_next.currency_code
        ├── position_by_currency_mv_next.source_entity_type
        ├── position_by_currency_mv_next.position_values_mv_next.position_type_expanded
        ├── position_by_currency_mv_next.item_id
        ├── position_by_currency_mv_next.flag
        └── position_by_currency_mv_next.position_summary_mv_next.source_entity_type

Fragment 61850 (Actor 740337,740338)
StreamProject { exprs: [position_by_currency_mv_next.account_group_id, position_by_currency_mv_next.dim_balance_date, position_by_currency_mv_next.item_id, position_by_currency_mv_next.weight, position_by_currency_mv_next.position_type, position_by_currency_mv_next.currency_code, position_by_currency_mv_next.source_entity_type, position_by_currency_mv_next.position_values_mv_next.position_type_expanded, position_by_currency_mv_next.flag, position_by_currency_mv_next.position_summary_mv_next.source_entity_type] }
├── output: [ position_by_currency_mv_next.account_group_id, position_by_currency_mv_next.dim_balance_date, position_by_currency_mv_next.item_id, position_by_currency_mv_next.weight, position_by_currency_mv_next.position_type, position_by_currency_mv_next.currency_code, position_by_currency_mv_next.source_entity_type, position_by_currency_mv_next.position_values_mv_next.position_type_expanded, position_by_currency_mv_next.flag, position_by_currency_mv_next.position_summary_mv_next.source_entity_type ]
├── stream key: [ position_by_currency_mv_next.account_group_id, position_by_currency_mv_next.dim_balance_date, position_by_currency_mv_next.position_type, position_by_currency_mv_next.currency_code, position_by_currency_mv_next.source_entity_type, position_by_currency_mv_next.position_values_mv_next.position_type_expanded, position_by_currency_mv_next.item_id, position_by_currency_mv_next.flag, position_by_currency_mv_next.position_summary_mv_next.source_entity_type ]
└── StreamDynamicFilter { predicate: ($expr1 >= $expr2), output_watermarks: [[$expr1]], output: [position_by_currency_mv_next.account_group_id, position_by_currency_mv_next.dim_balance_date, position_by_currency_mv_next.item_id, position_by_currency_mv_next.weight, $expr1, position_by_currency_mv_next.position_type, position_by_currency_mv_next.currency_code, position_by_currency_mv_next.source_entity_type, position_by_currency_mv_next.position_values_mv_next.position_type_expanded, position_by_currency_mv_next.flag, position_by_currency_mv_next.position_summary_mv_next.source_entity_type], cleaned_by_watermark: true }
    ├── output: [ position_by_currency_mv_next.account_group_id, position_by_currency_mv_next.dim_balance_date, position_by_currency_mv_next.item_id, position_by_currency_mv_next.weight, $expr1, position_by_currency_mv_next.position_type, position_by_currency_mv_next.currency_code, position_by_currency_mv_next.source_entity_type, position_by_currency_mv_next.position_values_mv_next.position_type_expanded, position_by_currency_mv_next.flag, position_by_currency_mv_next.position_summary_mv_next.source_entity_type ]
    ├── stream key: [ position_by_currency_mv_next.account_group_id, position_by_currency_mv_next.dim_balance_date, position_by_currency_mv_next.position_type, position_by_currency_mv_next.currency_code, position_by_currency_mv_next.source_entity_type, position_by_currency_mv_next.position_values_mv_next.position_type_expanded, position_by_currency_mv_next.item_id, position_by_currency_mv_next.flag, position_by_currency_mv_next.position_summary_mv_next.source_entity_type ]
    ├── StreamProject { exprs: [position_by_currency_mv_next.account_group_id, position_by_currency_mv_next.dim_balance_date, position_by_currency_mv_next.item_id, position_by_currency_mv_next.weight, AtTimeZone(position_by_currency_mv_next.dim_balance_date::Timestamp, 'UTC':Varchar) as $expr1, position_by_currency_mv_next.position_type, position_by_currency_mv_next.currency_code, position_by_currency_mv_next.source_entity_type, position_by_currency_mv_next.position_values_mv_next.position_type_expanded, position_by_currency_mv_next.flag, position_by_currency_mv_next.position_summary_mv_next.source_entity_type] }
    │   ├── output: [ position_by_currency_mv_next.account_group_id, position_by_currency_mv_next.dim_balance_date, position_by_currency_mv_next.item_id, position_by_currency_mv_next.weight, $expr1, position_by_currency_mv_next.position_type, position_by_currency_mv_next.currency_code, position_by_currency_mv_next.source_entity_type, position_by_currency_mv_next.position_values_mv_next.position_type_expanded, position_by_currency_mv_next.flag, position_by_currency_mv_next.position_summary_mv_next.source_entity_type ]
    │   ├── stream key: [ position_by_currency_mv_next.account_group_id, position_by_currency_mv_next.dim_balance_date, position_by_currency_mv_next.position_type, position_by_currency_mv_next.currency_code, position_by_currency_mv_next.source_entity_type, position_by_currency_mv_next.position_values_mv_next.position_type_expanded, position_by_currency_mv_next.item_id, position_by_currency_mv_next.flag, position_by_currency_mv_next.position_summary_mv_next.source_entity_type ]
    │   └── StreamFilter { predicate: (position_by_currency_mv_next.position_type = 'POSITION':Varchar) AND (position_by_currency_mv_next.source_entity_type = 'portfolio':Varchar) AND Not(IsNull(position_by_currency_mv_next.item_id)) }
    │       ├── output: [ position_by_currency_mv_next.account_group_id, position_by_currency_mv_next.dim_balance_date, position_by_currency_mv_next.item_id, position_by_currency_mv_next.weight, position_by_currency_mv_next.position_type, position_by_currency_mv_next.currency_code, position_by_currency_mv_next.source_entity_type, position_by_currency_mv_next.position_values_mv_next.position_type_expanded, position_by_currency_mv_next.flag, position_by_currency_mv_next.position_summary_mv_next.source_entity_type ]
    │       ├── stream key: [ position_by_currency_mv_next.account_group_id, position_by_currency_mv_next.dim_balance_date, position_by_currency_mv_next.position_type, position_by_currency_mv_next.currency_code, position_by_currency_mv_next.source_entity_type, position_by_currency_mv_next.position_values_mv_next.position_type_expanded, position_by_currency_mv_next.item_id, position_by_currency_mv_next.flag, position_by_currency_mv_next.position_summary_mv_next.source_entity_type ]
    │       └── StreamTableScan { table: position_by_currency_mv_next, columns: [account_group_id, dim_balance_date, item_id, weight, position_type, currency_code, source_entity_type, position_values_mv_next.position_type_expanded, flag, position_summary_mv_next.source_entity_type] }
    │           ├── output: [ position_by_currency_mv_next.account_group_id, position_by_currency_mv_next.dim_balance_date, position_by_currency_mv_next.item_id, position_by_currency_mv_next.weight, position_by_currency_mv_next.position_type, position_by_currency_mv_next.currency_code, position_by_currency_mv_next.source_entity_type, position_by_currency_mv_next.position_values_mv_next.position_type_expanded, position_by_currency_mv_next.flag, position_by_currency_mv_next.position_summary_mv_next.source_entity_type ]
    │           ├── stream key: [ position_by_currency_mv_next.account_group_id, position_by_currency_mv_next.dim_balance_date, position_by_currency_mv_next.position_type, position_by_currency_mv_next.currency_code, position_by_currency_mv_next.source_entity_type, position_by_currency_mv_next.position_values_mv_next.position_type_expanded, position_by_currency_mv_next.item_id, position_by_currency_mv_next.flag, position_by_currency_mv_next.position_summary_mv_next.source_entity_type ]
    │           ├── Upstream { output: [ account_group_id, dim_balance_date, item_id, weight, position_type, currency_code, source_entity_type, position_values_mv_next.position_type_expanded, flag, position_summary_mv_next.source_entity_type ], stream key: [] }
    │           └── BatchPlanNode { output: [ account_group_id, dim_balance_date, item_id, weight, position_type, currency_code, source_entity_type, position_values_mv_next.position_type_expanded, flag, position_summary_mv_next.source_entity_type ], stream key: [] }
    └── MergeExecutor { output: [ $expr2 ], stream key: [] }

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

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

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

Fragment 61854 (Actor 740345,740346)
StreamTableScan { table: portfolios_dm, columns: [portfolio_id, base_currency_code] } { output: [ portfolios_dm.portfolio_id, portfolios_dm.base_currency_code ], stream key: [ portfolios_dm.portfolio_id ] }
├── Upstream { output: [ portfolio_id, base_currency_code ], stream key: [] }
└── BatchPlanNode { output: [ portfolio_id, base_currency_code ], stream key: [] }

Fragment 61855 (Actor 740340,740339)
StreamTableScan { table: currencies_dm, columns: [code, anchor_currency_code] } { output: [ currencies_dm.code, currencies_dm.anchor_currency_code ], stream key: [ currencies_dm.code ] }
├── Upstream { output: [ code, anchor_currency_code ], stream key: [] }
└── BatchPlanNode { output: [ code, anchor_currency_code ], stream key: [] }