Я использую оба. Это просто вопрос удобства и функциональности. Все зависит от случая. Иногда я использую TEL, т.е. преобразование выполняется в исходной базе данных (в хранимой процедуре или представлении), а затем извлекается и загружается напрямую.
Что лучше, трудно ответить - зависит от проблемы.
По возможности я предпочитаю многоступенчатый ETL - ECCD (извлечение, очистка, согласование, доставка). Я также сохраняю промежуточные файлы csv после каждого шага извлечения, очистки и согласования; занимает немного места на диске, но весьма полезно. Всякий раз, когда DW должен быть повторно загружен из-за ошибок в etl или изменения схемы DW, нет необходимости снова запрашивать исходные системы - он уже находится в плоских файлах. Также очень удобно иметь возможность grep , sed и awk через плоские файлы в промежуточной области, когда это необходимо. В случае, когда есть несколько исходных систем, которые поступают в один и тот же DW, для каждой исходной системы должны быть разработаны (и поддержаны) только шаги извлечения: шаги очистки, согласования и доставки являются общими.