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

← cluster insights objects orphan_accruals_mv explain
Overview Objects Graph History
materialized view · insights.orphan_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
42 operators
Materialize · insights.orphan_accruals_mv
0% idle 2 actors
Project · (Not(IsNull(foreign_exchange_rates_eod_ft.rate)) OR (accrua…
2 actors
Filter · (Not(IsNull(foreign_exchange_rates_eod_ft.rate)) OR (accrua…
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore · LeftOuter · accruals_agg_mv_next.currency_code = foreign_exchange_rates…
2 actors
HashJoin · LeftOuter · accruals_agg_mv_next.currency_code = foreign_exchange_rates… 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
Filter · IsNull(holding_values_raw_mv_next.account_id)
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore · LeftOuter · accruals_agg_mv_next.account_id = holding_values_raw_mv_nex…
2 actors
HashJoin · LeftOuter · accruals_agg_mv_next.account_id = holding_values_raw_mv_nex… 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 · holding_values_raw_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 · accruals_agg_mv_next
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.orphan_accruals_mv Materialize insights.orphan_accrual… idle · 2 actors Project · (Not(IsNull(foreign_exchange_rates_eod_ft.rate)) OR (accrua… Project (Not(IsNull(foreign_exc… — · 2 actors Filter · (Not(IsNull(foreign_exchange_rates_eod_ft.rate)) OR (accrua… Filter (Not(IsNull(foreign_exc… idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore · LeftOuter · accruals_agg_mv_next.currency_code = foreign_exchange_rates… SyncLogStore LeftOuter · accruals_ag… — · 2 actors HashJoin · LeftOuter · accruals_agg_mv_next.currency_code = foreign_exchange_rates… HashJoin LeftOuter · accruals_ag… 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 Filter · IsNull(holding_values_raw_mv_next.account_id) Filter IsNull(holding_values_r… idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore · LeftOuter · accruals_agg_mv_next.account_id = holding_values_raw_mv_nex… SyncLogStore LeftOuter · accruals_ag… — · 2 actors HashJoin · LeftOuter · accruals_agg_mv_next.account_id = holding_values_raw_mv_nex… HashJoin LeftOuter · accruals_ag… 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 · holding_values_raw_mv_next StreamScan holding_values_raw_mv_n… 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 · accruals_agg_mv_next StreamScan accruals_agg_mv_next 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 58863 (Actor 739221,739220)
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: [ 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, 0:Decimal, 0:Decimal, 0:Decimal, 0:Decimal, accruals_agg_mv_next.accrued_amount, accruals_agg_mv_next.accrued_amount, accruals_agg_mv_next.accrued_value_system_currency, 0:Decimal, 0:Decimal, 0:Decimal, $expr1, foreign_exchange_rates_eod_ft.target_currency_code ]
├── stream key: [ accruals_agg_mv_next.currency_code, accruals_agg_mv_next.dim_value_date, accruals_agg_mv_next.account_id, accruals_agg_mv_next.asset_id, accruals_agg_mv_next.type, foreign_exchange_rates_eod_ft.target_currency_code ]
└── StreamProject { exprs: [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, 0:Decimal, 0:Decimal, 0:Decimal, 0:Decimal, accruals_agg_mv_next.accrued_amount, accruals_agg_mv_next.accrued_amount, accruals_agg_mv_next.accrued_value_system_currency, 0:Decimal, 0:Decimal, 0:Decimal, (accruals_agg_mv_next.accrued_amount * Coalesce(foreign_exchange_rates_eod_ft.rate, Case((accruals_agg_mv_next.currency_code = 'SAR':Varchar), 1:Int32, null:Int32)::Decimal)) as $expr1, foreign_exchange_rates_eod_ft.target_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.type, accruals_agg_mv_next.currency_code, 0:Decimal, 0:Decimal, 0:Decimal, 0:Decimal, accruals_agg_mv_next.accrued_amount, accruals_agg_mv_next.accrued_amount, accruals_agg_mv_next.accrued_value_system_currency, 0:Decimal, 0:Decimal, 0:Decimal, $expr1, foreign_exchange_rates_eod_ft.target_currency_code ]
    ├── stream key: [ accruals_agg_mv_next.currency_code, accruals_agg_mv_next.dim_value_date, accruals_agg_mv_next.account_id, accruals_agg_mv_next.asset_id, accruals_agg_mv_next.type, foreign_exchange_rates_eod_ft.target_currency_code ]
    └── StreamFilter { predicate: (Not(IsNull(foreign_exchange_rates_eod_ft.rate)) OR (accruals_agg_mv_next.currency_code = 'SAR':Varchar)) }
        ├── 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, 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: [ accruals_agg_mv_next.currency_code, accruals_agg_mv_next.dim_value_date, accruals_agg_mv_next.account_id, accruals_agg_mv_next.asset_id, accruals_agg_mv_next.type, foreign_exchange_rates_eod_ft.target_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, 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: [ accruals_agg_mv_next.currency_code, accruals_agg_mv_next.dim_value_date, accruals_agg_mv_next.account_id, accruals_agg_mv_next.asset_id, accruals_agg_mv_next.type, foreign_exchange_rates_eod_ft.target_currency_code ]

Fragment 58864 (Actor 739222,739223)
StreamSyncLogStore
├── 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, 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: [ accruals_agg_mv_next.currency_code, accruals_agg_mv_next.dim_value_date, accruals_agg_mv_next.account_id, accruals_agg_mv_next.asset_id, accruals_agg_mv_next.type, foreign_exchange_rates_eod_ft.target_currency_code ]
└── StreamHashJoin { type: LeftOuter, predicate: accruals_agg_mv_next.currency_code = foreign_exchange_rates_eod_ft.source_currency_code AND accruals_agg_mv_next.dim_value_date = foreign_exchange_rates_eod_ft.date }
    ├── 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, 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: [ accruals_agg_mv_next.currency_code, accruals_agg_mv_next.dim_value_date, accruals_agg_mv_next.account_id, accruals_agg_mv_next.asset_id, accruals_agg_mv_next.type, foreign_exchange_rates_eod_ft.target_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, holding_values_raw_mv_next.account_id, holding_values_raw_mv_next.asset_id, holding_values_raw_mv_next.dim_value_date, holding_values_raw_mv_next.type ], stream key: [ accruals_agg_mv_next.currency_code, accruals_agg_mv_next.dim_value_date, accruals_agg_mv_next.account_id, accruals_agg_mv_next.asset_id, accruals_agg_mv_next.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 58865 (Actor 739700,739699)
StreamLocalityProvider { locality_columns: [accruals_agg_mv_next.currency_code, accruals_agg_mv_next.dim_value_date] }
├── 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, holding_values_raw_mv_next.account_id, holding_values_raw_mv_next.asset_id, holding_values_raw_mv_next.dim_value_date, holding_values_raw_mv_next.type ]
├── stream key: [ accruals_agg_mv_next.currency_code, accruals_agg_mv_next.dim_value_date, accruals_agg_mv_next.account_id, accruals_agg_mv_next.asset_id, accruals_agg_mv_next.type ]
└── 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, holding_values_raw_mv_next.account_id, holding_values_raw_mv_next.asset_id, holding_values_raw_mv_next.dim_value_date, holding_values_raw_mv_next.type ], 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 58866 (Actor 739702,739701)
StreamFilter { predicate: IsNull(holding_values_raw_mv_next.account_id) } { 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, holding_values_raw_mv_next.account_id, holding_values_raw_mv_next.asset_id, holding_values_raw_mv_next.dim_value_date, holding_values_raw_mv_next.type ], 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, holding_values_raw_mv_next.account_id, holding_values_raw_mv_next.asset_id, holding_values_raw_mv_next.dim_value_date, holding_values_raw_mv_next.type ], 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 58867 (Actor 739703,739704)
StreamSyncLogStore { 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, holding_values_raw_mv_next.account_id, holding_values_raw_mv_next.asset_id, holding_values_raw_mv_next.dim_value_date, holding_values_raw_mv_next.type ], 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 ] }
└── StreamHashJoin { type: LeftOuter, predicate: accruals_agg_mv_next.account_id = holding_values_raw_mv_next.account_id AND accruals_agg_mv_next.asset_id = holding_values_raw_mv_next.asset_id AND accruals_agg_mv_next.dim_value_date = holding_values_raw_mv_next.dim_value_date AND accruals_agg_mv_next.type = holding_values_raw_mv_next.type }
    ├── 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, holding_values_raw_mv_next.account_id, holding_values_raw_mv_next.asset_id, holding_values_raw_mv_next.dim_value_date, holding_values_raw_mv_next.type ]
    ├── 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.type, accruals_agg_mv_next.currency_code ] }
    └── MergeExecutor { output: [ holding_values_raw_mv_next.account_id, holding_values_raw_mv_next.asset_id, holding_values_raw_mv_next.dim_value_date, holding_values_raw_mv_next.type ], stream key: [ holding_values_raw_mv_next.account_id, holding_values_raw_mv_next.asset_id, holding_values_raw_mv_next.dim_value_date, holding_values_raw_mv_next.type ] }

Fragment 58868 (Actor 739705,739706)
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] } { 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 58869 (Actor 739648,739647)
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 58870 (Actor 739711,739712)
StreamLocalityProvider { locality_columns: [holding_values_raw_mv_next.account_id, holding_values_raw_mv_next.asset_id, holding_values_raw_mv_next.dim_value_date, holding_values_raw_mv_next.type] } { output: [ holding_values_raw_mv_next.account_id, holding_values_raw_mv_next.asset_id, holding_values_raw_mv_next.dim_value_date, holding_values_raw_mv_next.type ], stream key: [ holding_values_raw_mv_next.account_id, holding_values_raw_mv_next.asset_id, holding_values_raw_mv_next.dim_value_date, holding_values_raw_mv_next.type ] }
└── MergeExecutor { output: [ holding_values_raw_mv_next.account_id, holding_values_raw_mv_next.asset_id, holding_values_raw_mv_next.dim_value_date, holding_values_raw_mv_next.type ], stream key: [ holding_values_raw_mv_next.account_id, holding_values_raw_mv_next.dim_value_date, holding_values_raw_mv_next.asset_id, holding_values_raw_mv_next.type ] }

Fragment 58871 (Actor 739709,739710)
StreamTableScan { table: holding_values_raw_mv_next, columns: [account_id, asset_id, dim_value_date, type] } { output: [ holding_values_raw_mv_next.account_id, holding_values_raw_mv_next.asset_id, holding_values_raw_mv_next.dim_value_date, holding_values_raw_mv_next.type ], stream key: [ holding_values_raw_mv_next.account_id, holding_values_raw_mv_next.dim_value_date, holding_values_raw_mv_next.asset_id, holding_values_raw_mv_next.type ] }
├── Upstream { output: [ account_id, asset_id, dim_value_date, type ], stream key: [] }
└── BatchPlanNode { output: [ account_id, asset_id, dim_value_date, type ], stream key: [] }

Fragment 58872 (Actor 739707,739708)
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 58873 (Actor 739714,739713)
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: [] }