I still strongly disagree. UDFs are much, much easier to incrementally add customization rather than throw away a CTE because it can no longer be used because of additional requirements. CTEs are often dead ends. Performance is almost never a problem for once-and-done importing. I only waste time on optimization when something is taking a few seconds to run in production.
CTEs are good for one point of view...optimization.
UTFs are good for hundreds of points of view...maintainability, upgradability, simplicity, usability, diversity.
No thanks! I will continue to use UTFs almost always.