Извлечение и преобразование данных является важной задачей в области анализа данных и науки о данных.

Процесс извлечения данных из различных источников, преобразования их в соответствии с конкретными бизнес-требованиями и загрузки их в хранилище данных или озеро данных широко известен как ETL (извлечение, преобразование, загрузка).

Однако в последние годы появился новый подход под названием ELT (Extract, Load, Transform), который делает упор на загрузку данных в целевое хранилище данных перед их преобразованием.

В этом руководстве мы познакомим вас с процессом создания конвейера ELT с использованием Python. Мы рассмотрим следующие темы:

  1. Настройка окружения и установка зависимостей.
  2. Извлечение данных из различных источников.
  3. Загрузка данных в целевое хранилище данных.
  4. Преобразование данных с помощью Python.
  5. Планирование конвейера 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. Мы рассмотрели следующие темы:

  1. Настройка окружения и установка зависимостей.
  2. Извлечение данных из различных источников.
  3. Загрузка данных в целевое хранилище данных.
  4. Преобразование данных с помощью Python.
  5. Планирование конвейера ELT.

Обладая этими знаниями, вы теперь можете создать собственный конвейер ELT для извлечения, загрузки и преобразования данных в соответствии с конкретными бизнес-требованиями.

Если вам понравилось читать эту статью и она оказалась полезной, поддержите меня в Купи мне кофе 😎

Дополнительные материалы на PlainEnglish.io.

Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord .

Заинтересованы в масштабировании запуска вашего программного обеспечения? Ознакомьтесь с разделом Схема.