An hourly job copies changed orders out of src_orders (order_id, status, amount, updated_at). It doesn't re-read the whole table: after each run it records the largest updated_at it loaded in etl_watermark (table_name, high_water_mark). That table keeps one mark per pipeline, not just this one.
Return the rows the next run should pick up: orders updated after src_orders's mark. A row whose updated_at equals the mark was loaded by the last run.
Columns: order_id, status, amount, updated_at. Sort by updated_at, then order_id.