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

← cluster insights objects transactions_sink explain
Overview Objects Graph History
sink · insights.transactions_sink 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
30 operators
Sink · insights.transactions_sink
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore · LeftOuter · transactions_merged_mv.transaction_id = fee_transactions_dm…
2 actors
HashJoin · LeftOuter · transactions_merged_mv.transaction_id = fee_transactions_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 · fee_transactions_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 · LeftOuter · transactions_merged_mv.transaction_type_id = transaction_ty…
2 actors
HashJoin · LeftOuter · transactions_merged_mv.transaction_type_id = transaction_ty… 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 · transaction_types_dm
0% idle 2 actors
BatchPlan
2 actors
Merge
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
LocalityProvider
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
StreamScan · transactions_merged_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.
Sink · insights.transactions_sink Sink insights.transactions_s… idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore · LeftOuter · transactions_merged_mv.transaction_id = fee_transactions_dm… SyncLogStore LeftOuter · transaction… — · 2 actors HashJoin · LeftOuter · transactions_merged_mv.transaction_id = fee_transactions_dm… HashJoin LeftOuter · transaction… idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors StreamScan · fee_transactions_dm StreamScan fee_transactions_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 · LeftOuter · transactions_merged_mv.transaction_type_id = transaction_ty… SyncLogStore LeftOuter · transaction… — · 2 actors HashJoin · LeftOuter · transactions_merged_mv.transaction_type_id = transaction_ty… HashJoin LeftOuter · transaction… idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors StreamScan · transaction_types_dm StreamScan transaction_types_dm idle · 2 actors BatchPlan BatchPlan — · 2 actors Merge Merge — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors LocalityProvider LocalityProvider idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors StreamScan · transactions_merged_mv StreamScan transactions_merged_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 52049 (Actor 737118,737117)
StreamSink { type: upsert, columns: [transaction_id, account_id, asset_id, currency_code, net_value, transaction_valuation_date, transaction_settlement_date, transaction_type, fee_type, transactions_merged_mv.transaction_type_id(hidden), transactions_merged_mv.transactions_intraday_dm.status_label_id(hidden), transactions_merged_mv.transactions_intraday_dm.transaction_id(hidden), transactions_merged_mv.null:Varchar(hidden), transactions_merged_mv.null:Varchar#1(hidden), transactions_merged_mv.null:Varchar#2(hidden), transactions_merged_mv.null:Varchar#3(hidden), transactions_merged_mv.$src(hidden), fee_transactions_dm.transaction_id(hidden)], downstream_pk: [transactions_merged_mv.transaction_id] }
├── output:
│   ┌── transactions_merged_mv.transaction_id
│   ├── transactions_merged_mv.account_id
│   ├── transactions_merged_mv.asset_id
│   ├── transactions_merged_mv.currency_code
│   ├── transactions_merged_mv.net_value
│   ├── transactions_merged_mv.transaction_valuation_date
│   ├── transactions_merged_mv.transaction_settlement_date
│   ├── transaction_types_dm.type
│   ├── fee_transactions_dm.fee_type
│   ├── transactions_merged_mv.transaction_type_id
│   ├── transactions_merged_mv.transactions_intraday_dm.status_label_id
│   ├── transactions_merged_mv.transactions_intraday_dm.transaction_id
│   ├── transactions_merged_mv.null:Varchar
│   ├── transactions_merged_mv.null:Varchar#1
│   ├── transactions_merged_mv.null:Varchar#2
│   ├── transactions_merged_mv.null:Varchar#3
│   ├── transactions_merged_mv.$src
│   └── fee_transactions_dm.transaction_id
├── stream key: [ transactions_merged_mv.transaction_id, transactions_merged_mv.transaction_type_id, transactions_merged_mv.transactions_intraday_dm.status_label_id, transactions_merged_mv.transactions_intraday_dm.transaction_id, transactions_merged_mv.null:Varchar, transactions_merged_mv.null:Varchar#1, transactions_merged_mv.null:Varchar#2, transactions_merged_mv.null:Varchar#3, transactions_merged_mv.$src ]
└── MergeExecutor
    ├── output:
    │   ┌── transactions_merged_mv.transaction_id
    │   ├── transactions_merged_mv.account_id
    │   ├── transactions_merged_mv.asset_id
    │   ├── transactions_merged_mv.currency_code
    │   ├── transactions_merged_mv.net_value
    │   ├── transactions_merged_mv.transaction_valuation_date
    │   ├── transactions_merged_mv.transaction_settlement_date
    │   ├── transaction_types_dm.type
    │   ├── fee_transactions_dm.fee_type
    │   ├── transactions_merged_mv.transaction_type_id
    │   ├── transactions_merged_mv.transactions_intraday_dm.status_label_id
    │   ├── transactions_merged_mv.transactions_intraday_dm.transaction_id
    │   ├── transactions_merged_mv.null:Varchar
    │   ├── transactions_merged_mv.null:Varchar#1
    │   ├── transactions_merged_mv.null:Varchar#2
    │   ├── transactions_merged_mv.null:Varchar#3
    │   ├── transactions_merged_mv.$src
    │   └── fee_transactions_dm.transaction_id
    └── stream key: [ transactions_merged_mv.transaction_id, transactions_merged_mv.transaction_type_id, transactions_merged_mv.transactions_intraday_dm.status_label_id, transactions_merged_mv.transactions_intraday_dm.transaction_id, transactions_merged_mv.null:Varchar, transactions_merged_mv.null:Varchar#1, transactions_merged_mv.null:Varchar#2, transactions_merged_mv.null:Varchar#3, transactions_merged_mv.$src ]

Fragment 52050 (Actor 737116,737115)
StreamSyncLogStore
├── output:
│   ┌── transactions_merged_mv.transaction_id
│   ├── transactions_merged_mv.account_id
│   ├── transactions_merged_mv.asset_id
│   ├── transactions_merged_mv.currency_code
│   ├── transactions_merged_mv.net_value
│   ├── transactions_merged_mv.transaction_valuation_date
│   ├── transactions_merged_mv.transaction_settlement_date
│   ├── transaction_types_dm.type
│   ├── fee_transactions_dm.fee_type
│   ├── transactions_merged_mv.transaction_type_id
│   ├── transactions_merged_mv.transactions_intraday_dm.status_label_id
│   ├── transactions_merged_mv.transactions_intraday_dm.transaction_id
│   ├── transactions_merged_mv.null:Varchar
│   ├── transactions_merged_mv.null:Varchar#1
│   ├── transactions_merged_mv.null:Varchar#2
│   ├── transactions_merged_mv.null:Varchar#3
│   ├── transactions_merged_mv.$src
│   └── fee_transactions_dm.transaction_id
├── stream key: [ transactions_merged_mv.transaction_id, transactions_merged_mv.transaction_type_id, transactions_merged_mv.transactions_intraday_dm.status_label_id, transactions_merged_mv.transactions_intraday_dm.transaction_id, transactions_merged_mv.null:Varchar, transactions_merged_mv.null:Varchar#1, transactions_merged_mv.null:Varchar#2, transactions_merged_mv.null:Varchar#3, transactions_merged_mv.$src ]
└── StreamHashJoin { type: LeftOuter, predicate: transactions_merged_mv.transaction_id = fee_transactions_dm.transaction_id }
    ├── output:
    │   ┌── transactions_merged_mv.transaction_id
    │   ├── transactions_merged_mv.account_id
    │   ├── transactions_merged_mv.asset_id
    │   ├── transactions_merged_mv.currency_code
    │   ├── transactions_merged_mv.net_value
    │   ├── transactions_merged_mv.transaction_valuation_date
    │   ├── transactions_merged_mv.transaction_settlement_date
    │   ├── transaction_types_dm.type
    │   ├── fee_transactions_dm.fee_type
    │   ├── transactions_merged_mv.transaction_type_id
    │   ├── transactions_merged_mv.transactions_intraday_dm.status_label_id
    │   ├── transactions_merged_mv.transactions_intraday_dm.transaction_id
    │   ├── transactions_merged_mv.null:Varchar
    │   ├── transactions_merged_mv.null:Varchar#1
    │   ├── transactions_merged_mv.null:Varchar#2
    │   ├── transactions_merged_mv.null:Varchar#3
    │   ├── transactions_merged_mv.$src
    │   └── fee_transactions_dm.transaction_id
    ├── stream key: [ transactions_merged_mv.transaction_id, transactions_merged_mv.transaction_type_id, transactions_merged_mv.transactions_intraday_dm.status_label_id, transactions_merged_mv.transactions_intraday_dm.transaction_id, transactions_merged_mv.null:Varchar, transactions_merged_mv.null:Varchar#1, transactions_merged_mv.null:Varchar#2, transactions_merged_mv.null:Varchar#3, transactions_merged_mv.$src ]
    ├── MergeExecutor
    │   ├── output:
    │   │   ┌── transactions_merged_mv.transaction_id
    │   │   ├── transactions_merged_mv.account_id
    │   │   ├── transactions_merged_mv.asset_id
    │   │   ├── transactions_merged_mv.transaction_valuation_date
    │   │   ├── transactions_merged_mv.transaction_settlement_date
    │   │   ├── transactions_merged_mv.currency_code
    │   │   ├── transactions_merged_mv.net_value
    │   │   ├── transaction_types_dm.type
    │   │   ├── transactions_merged_mv.transaction_type_id
    │   │   ├── transactions_merged_mv.transactions_intraday_dm.status_label_id
    │   │   ├── transactions_merged_mv.transactions_intraday_dm.transaction_id
    │   │   ├── transactions_merged_mv.null:Varchar
    │   │   ├── transactions_merged_mv.null:Varchar#1
    │   │   ├── transactions_merged_mv.null:Varchar#2
    │   │   ├── transactions_merged_mv.null:Varchar#3
    │   │   ├── transactions_merged_mv.$src
    │   │   └── transaction_types_dm.transaction_type_id
    │   └── stream key: [ transactions_merged_mv.transaction_id, transactions_merged_mv.transaction_type_id, transactions_merged_mv.transactions_intraday_dm.status_label_id, transactions_merged_mv.transactions_intraday_dm.transaction_id, transactions_merged_mv.null:Varchar, transactions_merged_mv.null:Varchar#1, transactions_merged_mv.null:Varchar#2, transactions_merged_mv.null:Varchar#3, transactions_merged_mv.$src ]
    └── MergeExecutor { output: [ fee_transactions_dm.transaction_id, fee_transactions_dm.fee_type ], stream key: [ fee_transactions_dm.transaction_id ] }

Fragment 52051 (Actor 737120,737119)
StreamLocalityProvider { locality_columns: [transactions_merged_mv.transaction_id] }
├── output:
│   ┌── transactions_merged_mv.transaction_id
│   ├── transactions_merged_mv.account_id
│   ├── transactions_merged_mv.asset_id
│   ├── transactions_merged_mv.transaction_valuation_date
│   ├── transactions_merged_mv.transaction_settlement_date
│   ├── transactions_merged_mv.currency_code
│   ├── transactions_merged_mv.net_value
│   ├── transaction_types_dm.type
│   ├── transactions_merged_mv.transaction_type_id
│   ├── transactions_merged_mv.transactions_intraday_dm.status_label_id
│   ├── transactions_merged_mv.transactions_intraday_dm.transaction_id
│   ├── transactions_merged_mv.null:Varchar
│   ├── transactions_merged_mv.null:Varchar#1
│   ├── transactions_merged_mv.null:Varchar#2
│   ├── transactions_merged_mv.null:Varchar#3
│   ├── transactions_merged_mv.$src
│   └── transaction_types_dm.transaction_type_id
├── stream key: [ transactions_merged_mv.transaction_id, transactions_merged_mv.transaction_type_id, transactions_merged_mv.transactions_intraday_dm.status_label_id, transactions_merged_mv.transactions_intraday_dm.transaction_id, transactions_merged_mv.null:Varchar, transactions_merged_mv.null:Varchar#1, transactions_merged_mv.null:Varchar#2, transactions_merged_mv.null:Varchar#3, transactions_merged_mv.$src ]
└── MergeExecutor
    ├── output:
    │   ┌── transactions_merged_mv.transaction_id
    │   ├── transactions_merged_mv.account_id
    │   ├── transactions_merged_mv.asset_id
    │   ├── transactions_merged_mv.transaction_valuation_date
    │   ├── transactions_merged_mv.transaction_settlement_date
    │   ├── transactions_merged_mv.currency_code
    │   ├── transactions_merged_mv.net_value
    │   ├── transaction_types_dm.type
    │   ├── transactions_merged_mv.transaction_type_id
    │   ├── transactions_merged_mv.transactions_intraday_dm.status_label_id
    │   ├── transactions_merged_mv.transactions_intraday_dm.transaction_id
    │   ├── transactions_merged_mv.null:Varchar
    │   ├── transactions_merged_mv.null:Varchar#1
    │   ├── transactions_merged_mv.null:Varchar#2
    │   ├── transactions_merged_mv.null:Varchar#3
    │   ├── transactions_merged_mv.$src
    │   └── transaction_types_dm.transaction_type_id
    └── stream key: [ transactions_merged_mv.transaction_type_id, transactions_merged_mv.transactions_intraday_dm.status_label_id, transactions_merged_mv.transactions_intraday_dm.transaction_id, transactions_merged_mv.null:Varchar, transactions_merged_mv.null:Varchar#1, transactions_merged_mv.null:Varchar#2, transactions_merged_mv.null:Varchar#3, transactions_merged_mv.$src ]

Fragment 52052 (Actor 737121,737122)
StreamSyncLogStore
├── output:
│   ┌── transactions_merged_mv.transaction_id
│   ├── transactions_merged_mv.account_id
│   ├── transactions_merged_mv.asset_id
│   ├── transactions_merged_mv.transaction_valuation_date
│   ├── transactions_merged_mv.transaction_settlement_date
│   ├── transactions_merged_mv.currency_code
│   ├── transactions_merged_mv.net_value
│   ├── transaction_types_dm.type
│   ├── transactions_merged_mv.transaction_type_id
│   ├── transactions_merged_mv.transactions_intraday_dm.status_label_id
│   ├── transactions_merged_mv.transactions_intraday_dm.transaction_id
│   ├── transactions_merged_mv.null:Varchar
│   ├── transactions_merged_mv.null:Varchar#1
│   ├── transactions_merged_mv.null:Varchar#2
│   ├── transactions_merged_mv.null:Varchar#3
│   ├── transactions_merged_mv.$src
│   └── transaction_types_dm.transaction_type_id
├── stream key: [ transactions_merged_mv.transaction_type_id, transactions_merged_mv.transactions_intraday_dm.status_label_id, transactions_merged_mv.transactions_intraday_dm.transaction_id, transactions_merged_mv.null:Varchar, transactions_merged_mv.null:Varchar#1, transactions_merged_mv.null:Varchar#2, transactions_merged_mv.null:Varchar#3, transactions_merged_mv.$src ]
└── StreamHashJoin { type: LeftOuter, predicate: transactions_merged_mv.transaction_type_id = transaction_types_dm.transaction_type_id }
    ├── output:
    │   ┌── transactions_merged_mv.transaction_id
    │   ├── transactions_merged_mv.account_id
    │   ├── transactions_merged_mv.asset_id
    │   ├── transactions_merged_mv.transaction_valuation_date
    │   ├── transactions_merged_mv.transaction_settlement_date
    │   ├── transactions_merged_mv.currency_code
    │   ├── transactions_merged_mv.net_value
    │   ├── transaction_types_dm.type
    │   ├── transactions_merged_mv.transaction_type_id
    │   ├── transactions_merged_mv.transactions_intraday_dm.status_label_id
    │   ├── transactions_merged_mv.transactions_intraday_dm.transaction_id
    │   ├── transactions_merged_mv.null:Varchar
    │   ├── transactions_merged_mv.null:Varchar#1
    │   ├── transactions_merged_mv.null:Varchar#2
    │   ├── transactions_merged_mv.null:Varchar#3
    │   ├── transactions_merged_mv.$src
    │   └── transaction_types_dm.transaction_type_id
    ├── stream key: [ transactions_merged_mv.transaction_type_id, transactions_merged_mv.transactions_intraday_dm.status_label_id, transactions_merged_mv.transactions_intraday_dm.transaction_id, transactions_merged_mv.null:Varchar, transactions_merged_mv.null:Varchar#1, transactions_merged_mv.null:Varchar#2, transactions_merged_mv.null:Varchar#3, transactions_merged_mv.$src ]
    ├── MergeExecutor
    │   ├── output: [ transactions_merged_mv.transaction_id, transactions_merged_mv.account_id, transactions_merged_mv.asset_id, transactions_merged_mv.transaction_valuation_date, transactions_merged_mv.transaction_settlement_date, transactions_merged_mv.transaction_type_id, transactions_merged_mv.currency_code, transactions_merged_mv.net_value, transactions_merged_mv.transactions_intraday_dm.status_label_id, transactions_merged_mv.transactions_intraday_dm.transaction_id, transactions_merged_mv.null:Varchar, transactions_merged_mv.null:Varchar#1, transactions_merged_mv.null:Varchar#2, transactions_merged_mv.null:Varchar#3, transactions_merged_mv.$src ]
    │   └── stream key: [ transactions_merged_mv.transaction_type_id, transactions_merged_mv.transactions_intraday_dm.status_label_id, transactions_merged_mv.transactions_intraday_dm.transaction_id, transactions_merged_mv.null:Varchar, transactions_merged_mv.null:Varchar#1, transactions_merged_mv.null:Varchar#2, transactions_merged_mv.null:Varchar#3, transactions_merged_mv.$src ]
    └── MergeExecutor { output: [ transaction_types_dm.transaction_type_id, transaction_types_dm.type ], stream key: [ transaction_types_dm.transaction_type_id ] }

Fragment 52053 (Actor 737123,737124)
StreamLocalityProvider { locality_columns: [transactions_merged_mv.transaction_type_id] }
├── output: [ transactions_merged_mv.transaction_id, transactions_merged_mv.account_id, transactions_merged_mv.asset_id, transactions_merged_mv.transaction_valuation_date, transactions_merged_mv.transaction_settlement_date, transactions_merged_mv.transaction_type_id, transactions_merged_mv.currency_code, transactions_merged_mv.net_value, transactions_merged_mv.transactions_intraday_dm.status_label_id, transactions_merged_mv.transactions_intraday_dm.transaction_id, transactions_merged_mv.null:Varchar, transactions_merged_mv.null:Varchar#1, transactions_merged_mv.null:Varchar#2, transactions_merged_mv.null:Varchar#3, transactions_merged_mv.$src ]
├── stream key: [ transactions_merged_mv.transaction_type_id, transactions_merged_mv.transactions_intraday_dm.status_label_id, transactions_merged_mv.transactions_intraday_dm.transaction_id, transactions_merged_mv.null:Varchar, transactions_merged_mv.null:Varchar#1, transactions_merged_mv.null:Varchar#2, transactions_merged_mv.null:Varchar#3, transactions_merged_mv.$src ]
└── MergeExecutor
    ├── output: [ transactions_merged_mv.transaction_id, transactions_merged_mv.account_id, transactions_merged_mv.asset_id, transactions_merged_mv.transaction_valuation_date, transactions_merged_mv.transaction_settlement_date, transactions_merged_mv.transaction_type_id, transactions_merged_mv.currency_code, transactions_merged_mv.net_value, transactions_merged_mv.transactions_intraday_dm.status_label_id, transactions_merged_mv.transactions_intraday_dm.transaction_id, transactions_merged_mv.null:Varchar, transactions_merged_mv.null:Varchar#1, transactions_merged_mv.null:Varchar#2, transactions_merged_mv.null:Varchar#3, transactions_merged_mv.$src ]
    └── stream key: [ transactions_merged_mv.transactions_intraday_dm.status_label_id, transactions_merged_mv.transactions_intraday_dm.transaction_id, transactions_merged_mv.null:Varchar, transactions_merged_mv.null:Varchar#1, transactions_merged_mv.null:Varchar#2, transactions_merged_mv.null:Varchar#3, transactions_merged_mv.$src ]

Fragment 52054 (Actor 737125,737126)
StreamTableScan { table: transactions_merged_mv, columns: [transaction_id, account_id, asset_id, transaction_valuation_date, transaction_settlement_date, transaction_type_id, currency_code, net_value, transactions_intraday_dm.status_label_id, transactions_intraday_dm.transaction_id, null:Varchar, null:Varchar#1, null:Varchar#2, null:Varchar#3, $src] }
├── output: [ transactions_merged_mv.transaction_id, transactions_merged_mv.account_id, transactions_merged_mv.asset_id, transactions_merged_mv.transaction_valuation_date, transactions_merged_mv.transaction_settlement_date, transactions_merged_mv.transaction_type_id, transactions_merged_mv.currency_code, transactions_merged_mv.net_value, transactions_merged_mv.transactions_intraday_dm.status_label_id, transactions_merged_mv.transactions_intraday_dm.transaction_id, transactions_merged_mv.null:Varchar, transactions_merged_mv.null:Varchar#1, transactions_merged_mv.null:Varchar#2, transactions_merged_mv.null:Varchar#3, transactions_merged_mv.$src ]
├── stream key: [ transactions_merged_mv.transactions_intraday_dm.status_label_id, transactions_merged_mv.transactions_intraday_dm.transaction_id, transactions_merged_mv.null:Varchar, transactions_merged_mv.null:Varchar#1, transactions_merged_mv.null:Varchar#2, transactions_merged_mv.null:Varchar#3, transactions_merged_mv.$src ]
├── Upstream { output: [ transaction_id, account_id, asset_id, transaction_valuation_date, transaction_settlement_date, transaction_type_id, currency_code, net_value, transactions_intraday_dm.status_label_id, transactions_intraday_dm.transaction_id, null:Varchar, null:Varchar#1, null:Varchar#2, null:Varchar#3, $src ], stream key: [] }
└── BatchPlanNode { output: [ transaction_id, account_id, asset_id, transaction_valuation_date, transaction_settlement_date, transaction_type_id, currency_code, net_value, transactions_intraday_dm.status_label_id, transactions_intraday_dm.transaction_id, null:Varchar, null:Varchar#1, null:Varchar#2, null:Varchar#3, $src ], stream key: [] }

Fragment 52055 (Actor 737128,737127)
StreamTableScan { table: transaction_types_dm, columns: [transaction_type_id, type] } { output: [ transaction_types_dm.transaction_type_id, transaction_types_dm.type ], stream key: [ transaction_types_dm.transaction_type_id ] }
├── Upstream { output: [ transaction_type_id, type ], stream key: [] }
└── BatchPlanNode { output: [ transaction_type_id, type ], stream key: [] }

Fragment 52056 (Actor 737129,737130)
StreamTableScan { table: fee_transactions_dm, columns: [transaction_id, fee_type] } { output: [ fee_transactions_dm.transaction_id, fee_transactions_dm.fee_type ], stream key: [ fee_transactions_dm.transaction_id ] }
├── Upstream { output: [ transaction_id, fee_type ], stream key: [] }
└── BatchPlanNode { output: [ transaction_id, fee_type ], stream key: [] }