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

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

Job is idle — throughput ~0; structure shown.

Stateful hash join (4 state tables) — consider a temporal join for dimension lookups
39 operators
Materialize · insights.holding_values_with_accruals_mv
0% idle 2 actors
Project · (Not(IsNull(foreign_exchange_rates_eod_ft.rate)) OR (holdin…
2 actors
Filter · (Not(IsNull(foreign_exchange_rates_eod_ft.rate)) OR (holdin…
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore · LeftOuter · holding_values_raw_mv.currency_code = foreign_exchange_rate…
2 actors
HashJoin · LeftOuter · holding_values_raw_mv.currency_code = foreign_exchange_rate… Stateful hash join (4 state tables) — consider a temporal join for dimension lookups
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
LocalityProvider
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
Filter · foreign_exchange_rates_eod_ft
0% idle 2 actors
StreamScan · foreign_exchange_rates_eod_ft
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 · LeftOuter · holding_values_raw_mv.account_id = accruals_agg_mv_next.acc…
2 actors
HashJoin · LeftOuter · holding_values_raw_mv.account_id = accruals_agg_mv_next.acc… Stateful hash join (4 state tables) — consider a temporal join for dimension lookups
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
LocalityProvider
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
StreamScan · accruals_agg_mv_next
0% idle 2 actors
BatchPlan
2 actors
Merge
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
LocalityProvider
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
StreamScan · holding_values_raw_mv
0% idle 2 actors
BatchPlan
2 actors
Merge
2 actors
Heat = the operator's output-buffer backpressure over the sampling window. Click a node to fold its subtree.
Materialize · insights.holding_values_with_accruals_mv Materialize insights.holding_values… idle · 2 actors Project · (Not(IsNull(foreign_exchange_rates_eod_ft.rate)) OR (holdin… Project (Not(IsNull(foreign_exc… — · 2 actors Filter · (Not(IsNull(foreign_exchange_rates_eod_ft.rate)) OR (holdin… Filter (Not(IsNull(foreign_exc… idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore · LeftOuter · holding_values_raw_mv.currency_code = foreign_exchange_rate… SyncLogStore LeftOuter · holding_val… — · 2 actors HashJoin · LeftOuter · holding_values_raw_mv.currency_code = foreign_exchange_rate… HashJoin LeftOuter · holding_val… idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors LocalityProvider LocalityProvider idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors Filter · foreign_exchange_rates_eod_ft Filter foreign_exchange_rates_… idle · 2 actors StreamScan · foreign_exchange_rates_eod_ft StreamScan foreign_exchange_rates_… 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 · LeftOuter · holding_values_raw_mv.account_id = accruals_agg_mv_next.acc… SyncLogStore LeftOuter · holding_val… — · 2 actors HashJoin · LeftOuter · holding_values_raw_mv.account_id = accruals_agg_mv_next.acc… HashJoin LeftOuter · holding_val… idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors LocalityProvider LocalityProvider idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors StreamScan · accruals_agg_mv_next StreamScan accruals_agg_mv_next 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 · holding_values_raw_mv StreamScan holding_values_raw_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 62769 (Actor 744415,744416)
StreamMaterialize { columns: [account_id, asset_id, dim_value_date, type, currency_code, market_value, average_cost, average_cost_per_unit, purchased_quantity, fair_value, accrued_value, accrued_value_system_currency, market_value_system_currency, average_cost_system_currency, average_cost_per_unit_system_currency, fair_value_system_currency, foreign_exchange_rates_eod_ft.target_currency_code(hidden)], stream_key: [currency_code, dim_value_date, account_id, asset_id, type, foreign_exchange_rates_eod_ft.target_currency_code], pk_columns: [currency_code, dim_value_date, account_id, asset_id, type, foreign_exchange_rates_eod_ft.target_currency_code], pk_conflict: NoCheck } { output: [ holding_values_raw_mv.account_id, holding_values_raw_mv.asset_id, holding_values_raw_mv.dim_value_date, holding_values_raw_mv.type, holding_values_raw_mv.currency_code, holding_values_raw_mv.market_value, $expr1, holding_values_raw_mv.average_cost_per_unit, holding_values_raw_mv.purchased_quantity, $expr2, $expr3, $expr4, $expr5, $expr6, $expr7, $expr8, foreign_exchange_rates_eod_ft.target_currency_code ], stream key: [ holding_values_raw_mv.currency_code, holding_values_raw_mv.dim_value_date, holding_values_raw_mv.account_id, holding_values_raw_mv.asset_id, holding_values_raw_mv.type, foreign_exchange_rates_eod_ft.target_currency_code ] }
└── StreamProject
└─exprs:
  ┌─holding_values_raw_mv.account_id
  ├─holding_values_raw_mv.asset_id
  ├─holding_values_raw_mv.dim_value_date
  ├─holding_values_raw_mv.type
  ├─holding_values_raw_mv.currency_code
  ├─holding_values_raw_mv.market_value
  ├─(holding_values_raw_mv.average_cost_per_unit * holding_values_raw_mv.purchased_quantity) as $expr1
  ├─holding_values_raw_mv.average_cost_per_unit
  ├─holding_values_raw_mv.purchased_quantity
  ├─Case(Not(IsNull(accruals_agg_mv_next.account_id)), (holding_values_raw_mv.market_value + accruals_agg_mv_next.accrued_amount), Not(IsNull(holding_values_raw_mv.deposit_profit_accrued)), (holding_values_raw_mv.market_value + holding_values_raw_mv.deposit_profit_accrued), holding_values_raw_mv.market_value) as $expr2
  ├─Case(Not(IsNull(accruals_agg_mv_next.account_id)), accruals_agg_mv_next.accrued_amount, Not(IsNull(holding_values_raw_mv.deposit_profit_accrued)), holding_values_raw_mv.deposit_profit_accrued, 0:Decimal) as $expr3
  ├─Case(Not(IsNull(accruals_agg_mv_next.account_id)), accruals_agg_mv_next.accrued_value_system_currency, Not(IsNull(holding_values_raw_mv.deposit_profit_accrued)), (holding_values_raw_mv.deposit_profit_accrued * Coalesce(foreign_exchange_rates_eod_ft.rate, Case((holding_values_raw_mv.currency_code = 'SAR':Varchar), 1:Int32, null:Int32)::Decimal)), 0:Decimal) as $expr4
  ├─(holding_values_raw_mv.market_value * Coalesce(foreign_exchange_rates_eod_ft.rate, Case((holding_values_raw_mv.currency_code = 'SAR':Varchar), 1:Int32, null:Int32)::Decimal)) as $expr5
  ├─Coalesce(holding_values_raw_mv.total_cost_system_currency, ((holding_values_raw_mv.average_cost_per_unit * holding_values_raw_mv.purchased_quantity) * Coalesce(foreign_exchange_rates_eod_ft.rate, Case((holding_values_raw_mv.currency_code = 'SAR':Varchar), 1:Int32, null:Int32)::Decimal))) as $expr6
  ├─Coalesce(holding_values_raw_mv.average_cost_per_unit_system_currency, (holding_values_raw_mv.average_cost_per_unit * Coalesce(foreign_exchange_rates_eod_ft.rate, Case((holding_values_raw_mv.currency_code = 'SAR':Varchar), 1:Int32, null:Int32)::Decimal))) as $expr7
  ├─Case(Not(IsNull(accruals_agg_mv_next.account_id)), ((holding_values_raw_mv.market_value + accruals_agg_mv_next.accrued_amount) * Coalesce(foreign_exchange_rates_eod_ft.rate, Case((holding_values_raw_mv.currency_code = 'SAR':Varchar), 1:Int32, null:Int32)::Decimal)), Not(IsNull(holding_values_raw_mv.deposit_profit_accrued)), ((holding_values_raw_mv.market_value + holding_values_raw_mv.deposit_profit_accrued) * Coalesce(foreign_exchange_rates_eod_ft.rate, Case((holding_values_raw_mv.currency_code = 'SAR':Varchar), 1:Int32, null:Int32)::Decimal)), (holding_values_raw_mv.market_value * Coalesce(foreign_exchange_rates_eod_ft.rate, Case((holding_values_raw_mv.currency_code = 'SAR':Varchar), 1:Int32, null:Int32)::Decimal))) as $expr8
  └─foreign_exchange_rates_eod_ft.target_currency_code
    ├── output: [ holding_values_raw_mv.account_id, holding_values_raw_mv.asset_id, holding_values_raw_mv.dim_value_date, holding_values_raw_mv.type, holding_values_raw_mv.currency_code, holding_values_raw_mv.market_value, $expr1, holding_values_raw_mv.average_cost_per_unit, holding_values_raw_mv.purchased_quantity, $expr2, $expr3, $expr4, $expr5, $expr6, $expr7, $expr8, foreign_exchange_rates_eod_ft.target_currency_code ]
    ├── stream key: [ holding_values_raw_mv.currency_code, holding_values_raw_mv.dim_value_date, holding_values_raw_mv.account_id, holding_values_raw_mv.asset_id, holding_values_raw_mv.type, foreign_exchange_rates_eod_ft.target_currency_code ]
    └── StreamFilter { predicate: (Not(IsNull(foreign_exchange_rates_eod_ft.rate)) OR (holding_values_raw_mv.currency_code = 'SAR':Varchar)) } { output: [ holding_values_raw_mv.account_id, holding_values_raw_mv.asset_id, holding_values_raw_mv.dim_value_date, holding_values_raw_mv.type, holding_values_raw_mv.currency_code, holding_values_raw_mv.market_value, holding_values_raw_mv.average_cost_per_unit, holding_values_raw_mv.purchased_quantity, holding_values_raw_mv.average_cost_per_unit_system_currency, holding_values_raw_mv.total_cost_system_currency, holding_values_raw_mv.deposit_profit_accrued, accruals_agg_mv_next.account_id, accruals_agg_mv_next.accrued_amount, accruals_agg_mv_next.accrued_value_system_currency, foreign_exchange_rates_eod_ft.rate, foreign_exchange_rates_eod_ft.source_currency_code, foreign_exchange_rates_eod_ft.date, foreign_exchange_rates_eod_ft.target_currency_code ], stream key: [ holding_values_raw_mv.currency_code, holding_values_raw_mv.dim_value_date, holding_values_raw_mv.account_id, holding_values_raw_mv.asset_id, holding_values_raw_mv.type, foreign_exchange_rates_eod_ft.target_currency_code ] }
        └── MergeExecutor { output: [ holding_values_raw_mv.account_id, holding_values_raw_mv.asset_id, holding_values_raw_mv.dim_value_date, holding_values_raw_mv.type, holding_values_raw_mv.currency_code, holding_values_raw_mv.market_value, holding_values_raw_mv.average_cost_per_unit, holding_values_raw_mv.purchased_quantity, holding_values_raw_mv.average_cost_per_unit_system_currency, holding_values_raw_mv.total_cost_system_currency, holding_values_raw_mv.deposit_profit_accrued, accruals_agg_mv_next.account_id, accruals_agg_mv_next.accrued_amount, accruals_agg_mv_next.accrued_value_system_currency, foreign_exchange_rates_eod_ft.rate, foreign_exchange_rates_eod_ft.source_currency_code, foreign_exchange_rates_eod_ft.date, foreign_exchange_rates_eod_ft.target_currency_code ], stream key: [ holding_values_raw_mv.currency_code, holding_values_raw_mv.dim_value_date, holding_values_raw_mv.account_id, holding_values_raw_mv.asset_id, holding_values_raw_mv.type, foreign_exchange_rates_eod_ft.target_currency_code ] }

Fragment 62770 (Actor 744417,744418)
StreamSyncLogStore { output: [ holding_values_raw_mv.account_id, holding_values_raw_mv.asset_id, holding_values_raw_mv.dim_value_date, holding_values_raw_mv.type, holding_values_raw_mv.currency_code, holding_values_raw_mv.market_value, holding_values_raw_mv.average_cost_per_unit, holding_values_raw_mv.purchased_quantity, holding_values_raw_mv.average_cost_per_unit_system_currency, holding_values_raw_mv.total_cost_system_currency, holding_values_raw_mv.deposit_profit_accrued, accruals_agg_mv_next.account_id, accruals_agg_mv_next.accrued_amount, accruals_agg_mv_next.accrued_value_system_currency, foreign_exchange_rates_eod_ft.rate, foreign_exchange_rates_eod_ft.source_currency_code, foreign_exchange_rates_eod_ft.date, foreign_exchange_rates_eod_ft.target_currency_code ], stream key: [ holding_values_raw_mv.currency_code, holding_values_raw_mv.dim_value_date, holding_values_raw_mv.account_id, holding_values_raw_mv.asset_id, holding_values_raw_mv.type, foreign_exchange_rates_eod_ft.target_currency_code ] }
└── StreamHashJoin { type: LeftOuter, predicate: holding_values_raw_mv.currency_code = foreign_exchange_rates_eod_ft.source_currency_code AND holding_values_raw_mv.dim_value_date = foreign_exchange_rates_eod_ft.date } { output: [ holding_values_raw_mv.account_id, holding_values_raw_mv.asset_id, holding_values_raw_mv.dim_value_date, holding_values_raw_mv.type, holding_values_raw_mv.currency_code, holding_values_raw_mv.market_value, holding_values_raw_mv.average_cost_per_unit, holding_values_raw_mv.purchased_quantity, holding_values_raw_mv.average_cost_per_unit_system_currency, holding_values_raw_mv.total_cost_system_currency, holding_values_raw_mv.deposit_profit_accrued, accruals_agg_mv_next.account_id, accruals_agg_mv_next.accrued_amount, accruals_agg_mv_next.accrued_value_system_currency, foreign_exchange_rates_eod_ft.rate, foreign_exchange_rates_eod_ft.source_currency_code, foreign_exchange_rates_eod_ft.date, foreign_exchange_rates_eod_ft.target_currency_code ], stream key: [ holding_values_raw_mv.currency_code, holding_values_raw_mv.dim_value_date, holding_values_raw_mv.account_id, holding_values_raw_mv.asset_id, holding_values_raw_mv.type, foreign_exchange_rates_eod_ft.target_currency_code ] }
    ├── MergeExecutor { output: [ holding_values_raw_mv.account_id, holding_values_raw_mv.asset_id, holding_values_raw_mv.dim_value_date, holding_values_raw_mv.type, holding_values_raw_mv.currency_code, holding_values_raw_mv.market_value, holding_values_raw_mv.average_cost_per_unit, holding_values_raw_mv.purchased_quantity, holding_values_raw_mv.average_cost_per_unit_system_currency, holding_values_raw_mv.total_cost_system_currency, holding_values_raw_mv.deposit_profit_accrued, accruals_agg_mv_next.account_id, accruals_agg_mv_next.accrued_amount, accruals_agg_mv_next.accrued_value_system_currency, accruals_agg_mv_next.asset_id, accruals_agg_mv_next.dim_value_date, accruals_agg_mv_next.type, accruals_agg_mv_next.currency_code ], stream key: [ holding_values_raw_mv.currency_code, holding_values_raw_mv.dim_value_date, holding_values_raw_mv.account_id, holding_values_raw_mv.asset_id, holding_values_raw_mv.type ] }
    └── MergeExecutor { output: [ foreign_exchange_rates_eod_ft.source_currency_code, foreign_exchange_rates_eod_ft.date, foreign_exchange_rates_eod_ft.rate, foreign_exchange_rates_eod_ft.target_currency_code ], stream key: [ foreign_exchange_rates_eod_ft.source_currency_code, foreign_exchange_rates_eod_ft.date, foreign_exchange_rates_eod_ft.target_currency_code ] }

Fragment 62771 (Actor 744419,744420)
StreamLocalityProvider { locality_columns: [holding_values_raw_mv.currency_code, holding_values_raw_mv.dim_value_date] } { output: [ holding_values_raw_mv.account_id, holding_values_raw_mv.asset_id, holding_values_raw_mv.dim_value_date, holding_values_raw_mv.type, holding_values_raw_mv.currency_code, holding_values_raw_mv.market_value, holding_values_raw_mv.average_cost_per_unit, holding_values_raw_mv.purchased_quantity, holding_values_raw_mv.average_cost_per_unit_system_currency, holding_values_raw_mv.total_cost_system_currency, holding_values_raw_mv.deposit_profit_accrued, accruals_agg_mv_next.account_id, accruals_agg_mv_next.accrued_amount, accruals_agg_mv_next.accrued_value_system_currency, accruals_agg_mv_next.asset_id, accruals_agg_mv_next.dim_value_date, accruals_agg_mv_next.type, accruals_agg_mv_next.currency_code ], stream key: [ holding_values_raw_mv.currency_code, holding_values_raw_mv.dim_value_date, holding_values_raw_mv.account_id, holding_values_raw_mv.asset_id, holding_values_raw_mv.type ] }
└── MergeExecutor { output: [ holding_values_raw_mv.account_id, holding_values_raw_mv.asset_id, holding_values_raw_mv.dim_value_date, holding_values_raw_mv.type, holding_values_raw_mv.currency_code, holding_values_raw_mv.market_value, holding_values_raw_mv.average_cost_per_unit, holding_values_raw_mv.purchased_quantity, holding_values_raw_mv.average_cost_per_unit_system_currency, holding_values_raw_mv.total_cost_system_currency, holding_values_raw_mv.deposit_profit_accrued, accruals_agg_mv_next.account_id, accruals_agg_mv_next.accrued_amount, accruals_agg_mv_next.accrued_value_system_currency, accruals_agg_mv_next.asset_id, accruals_agg_mv_next.dim_value_date, accruals_agg_mv_next.type, accruals_agg_mv_next.currency_code ], stream key: [ holding_values_raw_mv.account_id, holding_values_raw_mv.asset_id, holding_values_raw_mv.dim_value_date, holding_values_raw_mv.type, holding_values_raw_mv.currency_code ] }

Fragment 62772 (Actor 744422,744421)
StreamSyncLogStore { output: [ holding_values_raw_mv.account_id, holding_values_raw_mv.asset_id, holding_values_raw_mv.dim_value_date, holding_values_raw_mv.type, holding_values_raw_mv.currency_code, holding_values_raw_mv.market_value, holding_values_raw_mv.average_cost_per_unit, holding_values_raw_mv.purchased_quantity, holding_values_raw_mv.average_cost_per_unit_system_currency, holding_values_raw_mv.total_cost_system_currency, holding_values_raw_mv.deposit_profit_accrued, accruals_agg_mv_next.account_id, accruals_agg_mv_next.accrued_amount, accruals_agg_mv_next.accrued_value_system_currency, accruals_agg_mv_next.asset_id, accruals_agg_mv_next.dim_value_date, accruals_agg_mv_next.type, accruals_agg_mv_next.currency_code ], stream key: [ holding_values_raw_mv.account_id, holding_values_raw_mv.asset_id, holding_values_raw_mv.dim_value_date, holding_values_raw_mv.type, holding_values_raw_mv.currency_code ] }
└── StreamHashJoin { type: LeftOuter, predicate: holding_values_raw_mv.account_id = accruals_agg_mv_next.account_id AND holding_values_raw_mv.asset_id = accruals_agg_mv_next.asset_id AND holding_values_raw_mv.dim_value_date = accruals_agg_mv_next.dim_value_date AND holding_values_raw_mv.type = accruals_agg_mv_next.type AND holding_values_raw_mv.currency_code = accruals_agg_mv_next.currency_code } { output: [ holding_values_raw_mv.account_id, holding_values_raw_mv.asset_id, holding_values_raw_mv.dim_value_date, holding_values_raw_mv.type, holding_values_raw_mv.currency_code, holding_values_raw_mv.market_value, holding_values_raw_mv.average_cost_per_unit, holding_values_raw_mv.purchased_quantity, holding_values_raw_mv.average_cost_per_unit_system_currency, holding_values_raw_mv.total_cost_system_currency, holding_values_raw_mv.deposit_profit_accrued, accruals_agg_mv_next.account_id, accruals_agg_mv_next.accrued_amount, accruals_agg_mv_next.accrued_value_system_currency, accruals_agg_mv_next.asset_id, accruals_agg_mv_next.dim_value_date, accruals_agg_mv_next.type, accruals_agg_mv_next.currency_code ], stream key: [ holding_values_raw_mv.account_id, holding_values_raw_mv.asset_id, holding_values_raw_mv.dim_value_date, holding_values_raw_mv.type, holding_values_raw_mv.currency_code ] }
    ├── MergeExecutor { output: [ holding_values_raw_mv.account_id, holding_values_raw_mv.asset_id, holding_values_raw_mv.dim_value_date, holding_values_raw_mv.type, holding_values_raw_mv.currency_code, holding_values_raw_mv.market_value, holding_values_raw_mv.average_cost_per_unit, holding_values_raw_mv.purchased_quantity, holding_values_raw_mv.average_cost_per_unit_system_currency, holding_values_raw_mv.total_cost_system_currency, holding_values_raw_mv.deposit_profit_accrued ], stream key: [ holding_values_raw_mv.account_id, holding_values_raw_mv.asset_id, holding_values_raw_mv.dim_value_date, holding_values_raw_mv.type, holding_values_raw_mv.currency_code ] }
    └── MergeExecutor { output: [ accruals_agg_mv_next.account_id, accruals_agg_mv_next.asset_id, accruals_agg_mv_next.dim_value_date, accruals_agg_mv_next.currency_code, accruals_agg_mv_next.type, accruals_agg_mv_next.accrued_amount, accruals_agg_mv_next.accrued_value_system_currency ], stream key: [ accruals_agg_mv_next.account_id, accruals_agg_mv_next.asset_id, accruals_agg_mv_next.dim_value_date, accruals_agg_mv_next.type, accruals_agg_mv_next.currency_code ] }

Fragment 62773 (Actor 744424,744423)
StreamLocalityProvider { locality_columns: [holding_values_raw_mv.account_id, holding_values_raw_mv.asset_id, holding_values_raw_mv.dim_value_date, holding_values_raw_mv.type, holding_values_raw_mv.currency_code] } { output: [ holding_values_raw_mv.account_id, holding_values_raw_mv.asset_id, holding_values_raw_mv.dim_value_date, holding_values_raw_mv.type, holding_values_raw_mv.currency_code, holding_values_raw_mv.market_value, holding_values_raw_mv.average_cost_per_unit, holding_values_raw_mv.purchased_quantity, holding_values_raw_mv.average_cost_per_unit_system_currency, holding_values_raw_mv.total_cost_system_currency, holding_values_raw_mv.deposit_profit_accrued ], stream key: [ holding_values_raw_mv.account_id, holding_values_raw_mv.asset_id, holding_values_raw_mv.dim_value_date, holding_values_raw_mv.type, holding_values_raw_mv.currency_code ] }
└── MergeExecutor { output: [ holding_values_raw_mv.account_id, holding_values_raw_mv.asset_id, holding_values_raw_mv.dim_value_date, holding_values_raw_mv.type, holding_values_raw_mv.currency_code, holding_values_raw_mv.market_value, holding_values_raw_mv.average_cost_per_unit, holding_values_raw_mv.purchased_quantity, holding_values_raw_mv.average_cost_per_unit_system_currency, holding_values_raw_mv.total_cost_system_currency, holding_values_raw_mv.deposit_profit_accrued ], stream key: [ holding_values_raw_mv.account_id, holding_values_raw_mv.dim_value_date, holding_values_raw_mv.asset_id, holding_values_raw_mv.type ] }

Fragment 62774 (Actor 744442,744441)
StreamTableScan { table: holding_values_raw_mv, columns: [account_id, asset_id, dim_value_date, type, currency_code, market_value, average_cost_per_unit, purchased_quantity, average_cost_per_unit_system_currency, total_cost_system_currency, deposit_profit_accrued] } { output: [ holding_values_raw_mv.account_id, holding_values_raw_mv.asset_id, holding_values_raw_mv.dim_value_date, holding_values_raw_mv.type, holding_values_raw_mv.currency_code, holding_values_raw_mv.market_value, holding_values_raw_mv.average_cost_per_unit, holding_values_raw_mv.purchased_quantity, holding_values_raw_mv.average_cost_per_unit_system_currency, holding_values_raw_mv.total_cost_system_currency, holding_values_raw_mv.deposit_profit_accrued ], stream key: [ holding_values_raw_mv.account_id, holding_values_raw_mv.dim_value_date, holding_values_raw_mv.asset_id, holding_values_raw_mv.type ] }
├── Upstream { output: [ account_id, asset_id, dim_value_date, type, currency_code, market_value, average_cost_per_unit, purchased_quantity, average_cost_per_unit_system_currency, total_cost_system_currency, deposit_profit_accrued ], stream key: [] }
└── BatchPlanNode { output: [ account_id, asset_id, dim_value_date, type, currency_code, market_value, average_cost_per_unit, purchased_quantity, average_cost_per_unit_system_currency, total_cost_system_currency, deposit_profit_accrued ], stream key: [] }

Fragment 62775 (Actor 744425,744426)
StreamLocalityProvider { locality_columns: [accruals_agg_mv_next.account_id, accruals_agg_mv_next.asset_id, accruals_agg_mv_next.dim_value_date, accruals_agg_mv_next.type, accruals_agg_mv_next.currency_code] } { output: [ accruals_agg_mv_next.account_id, accruals_agg_mv_next.asset_id, accruals_agg_mv_next.dim_value_date, accruals_agg_mv_next.currency_code, accruals_agg_mv_next.type, accruals_agg_mv_next.accrued_amount, accruals_agg_mv_next.accrued_value_system_currency ], stream key: [ accruals_agg_mv_next.account_id, accruals_agg_mv_next.asset_id, accruals_agg_mv_next.dim_value_date, accruals_agg_mv_next.type, accruals_agg_mv_next.currency_code ] }
└── MergeExecutor { output: [ accruals_agg_mv_next.account_id, accruals_agg_mv_next.asset_id, accruals_agg_mv_next.dim_value_date, accruals_agg_mv_next.currency_code, accruals_agg_mv_next.type, accruals_agg_mv_next.accrued_amount, accruals_agg_mv_next.accrued_value_system_currency ], stream key: [ accruals_agg_mv_next.account_id, accruals_agg_mv_next.asset_id, accruals_agg_mv_next.dim_value_date, accruals_agg_mv_next.currency_code, accruals_agg_mv_next.type ] }

Fragment 62776 (Actor 744427,744428)
StreamTableScan { table: accruals_agg_mv_next, columns: [account_id, asset_id, dim_value_date, currency_code, type, accrued_amount, accrued_value_system_currency] } { output: [ accruals_agg_mv_next.account_id, accruals_agg_mv_next.asset_id, accruals_agg_mv_next.dim_value_date, accruals_agg_mv_next.currency_code, accruals_agg_mv_next.type, accruals_agg_mv_next.accrued_amount, accruals_agg_mv_next.accrued_value_system_currency ], stream key: [ accruals_agg_mv_next.account_id, accruals_agg_mv_next.asset_id, accruals_agg_mv_next.dim_value_date, accruals_agg_mv_next.currency_code, accruals_agg_mv_next.type ] }
├── Upstream { output: [ account_id, asset_id, dim_value_date, currency_code, type, accrued_amount, accrued_value_system_currency ], stream key: [] }
└── BatchPlanNode { output: [ account_id, asset_id, dim_value_date, currency_code, type, accrued_amount, accrued_value_system_currency ], stream key: [] }

Fragment 62777 (Actor 744432,744431)
StreamLocalityProvider { locality_columns: [foreign_exchange_rates_eod_ft.source_currency_code, foreign_exchange_rates_eod_ft.date] } { output: [ foreign_exchange_rates_eod_ft.source_currency_code, foreign_exchange_rates_eod_ft.date, foreign_exchange_rates_eod_ft.rate, foreign_exchange_rates_eod_ft.target_currency_code ], stream key: [ foreign_exchange_rates_eod_ft.source_currency_code, foreign_exchange_rates_eod_ft.date, foreign_exchange_rates_eod_ft.target_currency_code ] }
└── MergeExecutor { output: [ foreign_exchange_rates_eod_ft.source_currency_code, foreign_exchange_rates_eod_ft.date, foreign_exchange_rates_eod_ft.rate, foreign_exchange_rates_eod_ft.target_currency_code ], stream key: [ foreign_exchange_rates_eod_ft.source_currency_code, foreign_exchange_rates_eod_ft.target_currency_code, foreign_exchange_rates_eod_ft.date ] }

Fragment 62778 (Actor 744444,744443)
StreamFilter { predicate: (foreign_exchange_rates_eod_ft.target_currency_code = 'SAR':Varchar) } { output: [ foreign_exchange_rates_eod_ft.source_currency_code, foreign_exchange_rates_eod_ft.date, foreign_exchange_rates_eod_ft.rate, foreign_exchange_rates_eod_ft.target_currency_code ], stream key: [ foreign_exchange_rates_eod_ft.source_currency_code, foreign_exchange_rates_eod_ft.target_currency_code, foreign_exchange_rates_eod_ft.date ] }
└── StreamTableScan { table: foreign_exchange_rates_eod_ft, columns: [source_currency_code, date, rate, target_currency_code] } { output: [ foreign_exchange_rates_eod_ft.source_currency_code, foreign_exchange_rates_eod_ft.date, foreign_exchange_rates_eod_ft.rate, foreign_exchange_rates_eod_ft.target_currency_code ], stream key: [ foreign_exchange_rates_eod_ft.source_currency_code, foreign_exchange_rates_eod_ft.target_currency_code, foreign_exchange_rates_eod_ft.date ] }
    ├── Upstream { output: [ source_currency_code, date, rate, target_currency_code ], stream key: [] }
    └── BatchPlanNode { output: [ source_currency_code, date, rate, target_currency_code ], stream key: [] }