5 практичных Python-задач для DEВ SQL-проверках мы часто смотрим уже готовую витрину: сколько строк, какой период, нет ли дублей, не поехали ли суммы.
Но часть проблем появляется раньше. Еще до витрины.
Пришел файл. В нем странные названия колонок, пустые обязательные поля, лишние столбцы, дубли, email в открытом виде, непонятно сколько строк реально загрузилось. Часто нужно взять чей-то сэмпл данных и поработать с ним, например использовать его для загрузки таблицы на тестовом стенде.
И тут Python хорошо ложится на такие задачи.
Можно начать с простого.
1️⃣ Сначала
привести названия колонок к одному виду. Внешние файлы часто приезжают как попало:
name = " Order--Total "
parts = name.strip().lower()
parts = parts.replace("-", " ").replace("_", " ").split()
"_".join(parts)
# "order_total"
Кажется ерундой, пока потом не начинается join по Customer ID, customer_id и CUSTOMER-ID.
2️⃣ Дальше
проверить обязательные поля перед загрузкой.
Например, в записи есть amount = 0 и это нормальное значение. Его нельзя считать пустым просто потому, что if not value сработает как ложь.
row = {"order_id": 101, "email": " ", "amount": 0}
required = ["order_id", "email", "status", "amount"]
# missing: ["email", "status"]
Важно помнить, что None, пустая строка и 0 - это разные вещи.
3️⃣ Еще полезно
собирать метрики загрузки файлов: сколько файлов пришло, сколько загрузилось, сколько отклонилось и сколько строк реально попало дальше.
loads = [
{"file": "a.csv", "status": "loaded", "rows": 120},
{"file": "b.csv", "status": "rejected", "rows": 30},
{"file": "c.csv", "status": "loaded", "rows": 80},
]
# total_files: 3
# loaded_files: 2
# rejected_files: 1
# loaded_rows: 200
4️⃣ Отдельная задача -
изменение схемы.
Источник добавил колонку, убрал старую, поменял порядок. Если это не заметить сразу, как у меня было много раз, потом можно долго искать ошибки.
expected = ["order_id", "email", "amount"]
actual = ["order_id", "amount", "currency"]
# missing_columns: ["email"]
# unexpected_columns: ["currency"]
5️⃣ И еще одна практичная задача:
не тащить личные данные в технические отчеты и сэмплы
открытым текстом.
email = " Alice.Smith@Example.COM "
# "a***
@example.com"
🟩 На разных проектах можно встретить разный стек и технологии, но такие задачи полезно уметь решать. Пусть не с первого раза и не самым оптимальным способом. В реальной работе обычно важнее не написать “самый красивый алгоритм”, а аккуратно привести данные в порядок и не сломать смысл.
Именно из таких маленьких функций часто собирается нормальная обработка данных и подготовка к дальнейшему ETL.
Один раз завести такую привычку, и она будет экономить вам часы работы.
➡️ Сохраняй. Это хороший короткий чек-лист для использования Python в задачах с данными.
#материалы