Извлечение и преобразование данных является важной задачей в области анализа данных и науки о данных.
Процесс извлечения данных из различных источников, преобразования их в соответствии с конкретными бизнес-требованиями и загрузки их в хранилище данных или озеро данных широко известен как ETL (извлечение, преобразование, загрузка).
Однако в последние годы появился новый подход под названием ELT (Extract, Load, Transform), который делает упор на загрузку данных в целевое хранилище данных перед их преобразованием.
В этом руководстве мы познакомим вас с процессом создания конвейера ELT с использованием Python. Мы рассмотрим следующие темы:
- Настройка окружения и установка зависимостей.
- Извлечение данных из различных источников.
- Загрузка данных в целевое хранилище данных.
- Преобразование данных с помощью Python.
- Планирование конвейера ELT.
Шаг 1. Настройка среды и установка зависимостей:
Первым шагом является настройка среды разработки и установка необходимых зависимостей.
В этом руководстве мы будем использовать Python 3.x и следующие зависимости:
- Pandas: популярная библиотека обработки данных для Python.
- SQLAlchemy: набор инструментов для баз данных и библиотека объектно-реляционного сопоставления (ORM) для Python.
- PyODBC: модуль Python для подключения к базам данных, поддерживающим интерфейс Open Database Connectivity (ODBC).
Вы можете установить эти зависимости с помощью pip, менеджера пакетов для Python.
Чтобы установить панд, выполните следующую команду:
pip install pandas
Чтобы установить SQLAlchemy, выполните следующую команду:
pip install sqlalchemy
Чтобы установить PyODBC, выполните следующую команду:
pip install pyodbc
Шаг 2. Извлечение данных из различных источников.
Следующим шагом является извлечение данных из различных источников, таких как файлы, базы данных, API и т. д.
В этом руководстве мы будем извлекать данные из файла CSV и базы данных Microsoft SQL Server.
Чтобы извлечь данные из файла CSV, мы можем использовать библиотеку pandas. Вот пример того, как читать файл CSV с помощью pandas:
import pandas as pd # Read the CSV file data = pd.read_csv('data.csv')
Для извлечения данных из базы данных Microsoft SQL Server мы можем использовать библиотеки SQLAlchemy и PyODBC.
Вот пример того, как подключиться к базе данных SQL Server с помощью SQLAlchemy и PyODBC:
from sqlalchemy import create_engine # Create a connection string connection_string = 'mssql+pyodbc://username:password@server/database?driver=ODBC+Driver+17+for+SQL+Server' # Create an engine object engine = create_engine(connection_string) # Execute a SQL query and store the results in a pandas dataframe data = pd.read_sql('SELECT * FROM table', engine)
Шаг 3. Загрузка данных в целевое хранилище данных:
Следующим шагом является загрузка извлеченных данных в целевое хранилище данных, такое как хранилище данных или озеро данных.
В этом руководстве мы будем загружать данные в базу данных Microsoft SQL Server.
Для загрузки данных в базу данных SQL Server мы можем использовать библиотеку pandas и библиотеки SQLAlchemy и PyODBC.
Вот пример того, как создать таблицу в базе данных SQL Server и вставить в нее данные с помощью pandas:
# Create a connection string connection_string = 'mssql+pyodbc://username:password@server/database?driver=ODBC+Driver+17+for+SQL+Server' # Create an engine object engine = create_engine(connection_string) # Create a table in the database data.to_sql('table', engine, if_exists='replace', index=False)
Шаг 4. Преобразование данных с помощью Python
Следующим шагом в конвейере ELT является преобразование данных. Этот шаг включает в себя очистку, фильтрацию, слияние и манипулирование данными в соответствии с конкретными бизнес-требованиями.
В этом уроке мы будем использовать pandas для преобразования данных. Вот пример того, как очистить и преобразовать данные:
# Drop any rows with missing values data.dropna(inplace=True) # Convert the date column to a datetime object data['date'] = pd.to_datetime(data['date']) # Extract the year and month from the date column data['year'] = data['date'].dt.year data['month'] = data['date'].dt.month # Group the data by year and month and compute the sum of the sales column sales_data = data.groupby(['year', 'month'])['sales'].sum().reset_index()
В приведенном выше коде мы удалили все строки с отсутствующими значениями, преобразовали столбец даты в объект даты и времени, извлекли год и месяц из столбца даты, сгруппировали данные по годам и месяцам и вычислили сумму столбца продаж.
Шаг 5. Планирование конвейера ELT:
Последним шагом в конвейере ELT является планирование автоматического запуска конвейера через равные промежутки времени.
Этого можно добиться с помощью заданий cron или планировщиков задач, таких как Airflow или Luigi.
Вот пример того, как запланировать запуск конвейера ELT каждый день в полночь с помощью задания cron:
0 0 * * * /usr/bin/python3 /path/to/elt_pipeline.py
В приведенном выше коде мы запланировали запуск конвейера ELT каждый день в полночь, запустив скрипт Python elt_pipeline.py
.
Наконец:
В этом руководстве мы рассмотрели процесс создания конвейера ELT с использованием Python. Мы рассмотрели следующие темы:
- Настройка окружения и установка зависимостей.
- Извлечение данных из различных источников.
- Загрузка данных в целевое хранилище данных.
- Преобразование данных с помощью Python.
- Планирование конвейера ELT.
Обладая этими знаниями, вы теперь можете создать собственный конвейер ELT для извлечения, загрузки и преобразования данных в соответствии с конкретными бизнес-требованиями.
Если вам понравилось читать эту статью и она оказалась полезной, поддержите меня в Купи мне кофе 😎
Дополнительные материалы на PlainEnglish.io.
Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord .
Заинтересованы в масштабировании запуска вашего программного обеспечения? Ознакомьтесь с разделом Схема.