Python кодогенерация на благо ETL
В процессе разработки весьма часто встаёт задача преобразования данных, будь то данные от внешнего источника на пути в базу или данные из базы на пути в отчеты и т.п.
Если описывать все необходимые преобразования императивно, то можно довольно скоро загрустить. Можно постараться и сделать всё декларативно, скажем, в виде некоторых dict
-ов, в которых задать правила (функции?) по работе с каждым отдельным полем. Но уже на этом этапе появляется несколько проблем (поговорим о них ниже).
Альтернатива: в функциональном стиле динамически задаются конверсии, из них строятся pipeline-ы, далее конверсии генерируют ad-hoc код функций, реализующих заданное преобразование, используя библиотеку convtools.
На выходе получаются функции, лишенные излишнего динамизма, который нужен только на этапе чтения кода + ради DRY-принципа.