UNLOAD
имеет опцию HEADER
, которая решает вашу проблему, и вы даже можете пропустить часть PARALLEL OFF
.Это значительно упрощает ваш код:
sql="""UNLOAD (\'SELECT ups_tracking_nbr
FROM Schema.Table
WHERE TRUNC(last_order_updated_dttm) > TRUNC(SYSDATE - 30))
ORDER BY rn\')
TO 's3://abc/ups/EXTRACT_FOR_file' \
credentials 'aws_iam_role=arn:aws:iam::xyz' \
ALLOWOVERWRITE \
DELIMITER ',' \
HEADER;Commit;"""
Но чтобы вы поняли проблему, с которой вы столкнулись:
Когда вы UNION
две таблицы, они должны иметь одну и ту же схему.То, что вы пытаетесь сделать:
SELECT 'foo' as return, 1 as rn
UNION ALL
SELECT ups_tracking_nbr, 2 AS rn
...
вышеописанное не будет работать, потому что одна таблица имеет (return
, rn
) схему, а другая (ups_tracking_nbr
, rn
),