Начнём с конкретики.
Допустим, вы уже пишете на Python.
Вы умеете подключаться к базе данных, писать простые SQL-запросы, выгружать данные с помощью
pandas.read_sql() в датафрейм, как-то его преобразовывать, а затем с помощью pandas.to_csv() сохранять результат.Что-то знакомое? Допустим, что вы сохранили этот код и запускаете его по расписанию. Это уже и есть простой ETL-процесс, в котором вы:
1) Extract — извлекли данные из базы с помощью
pandas.read_sql(). 2) Transform — умеете преобразовывать данные с помощью датафреймов в pandas.
3) Load — сохранили данные в нужное место, например, в csv-файл. В серии постов выше я рассказывал о хранилище данных — чаще всего данные сохранять надо в него.
Также можно сначала извлечь (Extract) и загрузить сырые данные в хранилище (Load), чтобы затем их трансформировать с помощью SQL-скриптов (Transform) — так у нас получается ELT-процесс.
Тема становится очень расплывчатой из-за обилия самых разных инструментов, что становится непонятным с чего начать.
Выделю два вида инструментов для построения ETL:
1) ETL-конструкторы с графическим интерфейсом и готовыми компонентами типа SQL Server Integration Services (SSIS), Pentaho и Informatica PowerCenter. В некоторых случаях эти инструменты позволяют практически не писать код.
2) Скрипты на любом языке программирования. Чаще всего это Python, для которого есть удобные фреймворки по созданию пошаговых заданий на обработку данных. Например, Apache Airflow и Prefect. Преобразовывать данные можно как на SQL, так и с помощью pandas или более продвинутого Apache Spark.
Ну и ответ на последний вопрос: под витриной можно понимать готовый для аналитики датасет или сразу набор таких датасетов внутри хранилища, который предназначается, например, для отдела логистики.