Решение реальной проблемы при помощь MySQL, Pandas (pd.concat)

Проблема: пишет маркетолог — у нас перестали отправляться emails пользователям из CRM (!)

Я сижу и думаю, ситуация странная — алерты о том что лежит сервис не приходит. Зашел в CRM, там тоже все спокойно и рассылки уходят. Думаю, а что же это может быть... Пошел в кабинет сервиса (mandrill) проверить что там происходит — и каково было мое удивление, когда мы исчерпали все лимиты 🙁

На проблему отреагировал — лимиты добавил, работу восстановили. А теперь нужно понять, что это такое случилось, что мы вышли за месячные лимиты

Исследование!

Итак, открыл БД и попробовать понять в чем проблема. Сразу оговорюсь, что речь идет о 1 000 000 млн строк с множеством колонок...

Написал пару SQL запросов — не работает, не вывозит MySQL сервер группировки и подсчеты (возможно сервер реплики слабовал).

Думаю дальше... Что же делать... Ответ прост — Pandas!

Начал выгружать данные... Опять проблема — не могу выгрузить строки, большей объем данны.

Решил выгрузить все данные в разные файлы, а потом их объеденить через Pandas (Microsoft Excel у меня нет, а OpenOffice просто не может открыть такой объем данных).

Решение проблемы

Запустил Jupiter Lab (установка на Mac, установка на Win)

Импортировал pandas и прочитал все файлы

import pandas as pd
df1 = pd.read_csv('001.csv', sep=';')
df2 = pd.read_csv('002.csv', sep=';')
df3 = pd.read_csv('003.csv', sep=';')
# у меня было 10 файлов

Объеденил через функцию pd.concat (вот тут хорошая статья)

# тут нужно перечислить все прочитанные файлы
frames = [df1, df2, df3]
# далее положить все в новый датафрейм
df = pd.concat(frames)

Ну а далее начал делать анализ через Mito(рассказано как установить и есть видео урок)
Что можно сказать про Mito — если вам лень писать код Pandas, вы просто скармливаете ему датафрейм и анализируете в удобном окне. Рекомендую

Итог.

Проблема найдена, ошибок инженера нет. Радость — стали много писать контента, следовательно много писем 🙂