КАК Я РАЗГРЕБЛА ГОРЫ ДУБЛЕЙ В БАЗЕ ДАННЫХ И ПОМОГЛА КЛИЕНТУ ПЕРЕСТАТЬ РАБОТАТЬ В МИНУС

Захватывающий кейс, где мы вместе с клиентом устраняли ошибки в транзакциях и спасали его от штрафов платежной системы

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

Платёжная система выкатила штрафы.

Если превышалось определенное количество попыток списания на пользователя, компания попадала на деньги.
А так как в их базе было очень много дублей подписок, в какой-то момент
они поняли, что работают в минус.

Тогда они ко мне и пришли:
КЛИЕНТ:
Маш, у нас в базе данных есть дубли. Помоги, пожалуйста, нам их надо почистить. Неделю бодаемся, сорян 30 декабря, но вот очень надо. Платёжная система выкатила комиссии за попытки повторных списаний.
МАША:
Ок, приступаю!
Задача была ясна разгрести этот беспорядок.

Я приступила к работе, но у клиента появилось рациональное предложение:
КЛИЕНТ:
Ой, Маш, а давай мы ещё старую базу возьмём, соединим с новой и посмотрим вместе на дубли. Может, мы найдем каких-то клиентов, которых мы потеряли, и будут у нас более полные данные. Сможем?
МАША:
Сможем!
1
Объединение старой и новой баз данных
Я начала объединять старую и новую информацию, и вот тут началось самое интересное. Пока мы все эти данные объединяли, вдруг оказалось,
что в старой базе одни данные, а в новой — другие.
2
Заполнение пропавших данных и работа с формулой
Выяснилось, что старые данные в новой базе тоже нужны. Клиент предложил заполнить их по предложенной им формуле. Я с решимостью взялась за эту задачу и оптимизировала процесс заполнения.
3
Сверка данных с платежной системой и удаление лишнего
Примерно в это же время платежная система присылает клиенту табличку со списком валидных подписок.

И я получаю такое сообщение:
КЛИЕНТ:
Маша, давай сверим все с двумя нашими базами данных и удалим все то, чего нет у платежной системы. Они нам точно не пригодятся. Сможем?
маша:
Конечно!
Я провела сверку данных с требованиями платежной системы, удалила все лишнее, и сосредоточилась на важном.
4
Работа с подписками и их добавление в базу
Проблема этого клиента была в том, что его базы данных в течение 2 лет переливались из одного места в другое, постоянно менялась структура.

В зависимости от педантичности специалиста, работавшего с базами данных, была разная политика работы с отписками.

В какой-то день они решали удалять тех, кто отписался. В другой решали оставлять, потом - копировать в третью таблицу. В какой-то момент принималось решение хранить только часть данных, чтобы сэкономить место.
Поэтому я не очень удивилась, когда работая над предыдущими задачами, я нашла ещё НЕСКОЛЬКО ТЫСЯЧ (!!) подписок, которые были в платёжной системе, но отсутствовали в основной базе.

Никто не мог ответить, как это произошло. Эту проблему мы решили, добавив новые подписки в базу данных и заполнив недостающие параметры.
5
Заполнение таблиц с данными
Здесь мы столкнулись с проблемой: платёжная система не хранит все параметры, которые нужны клиенту. Она хранит только маску карты и другие минимальные данные.
маша:
У вас в базе должны быть вот эти, эти, эти и эти данные. Что мы с ними будем делать?
клиент:
😬😬😬
Тут важно уточнить, что база данных клиента состояла из 5 таблиц.
На основе соответствия таблицы нужно было заполнить некоторые поля, например, где-то домен был заполнен, а где-то нет, в старой базе некоторые данные не велись.
На этом этапе заказчик продумал, по какой схеме какие поля будут заполняться, где им важно оставить их пустыми, где чем-то заполнить,
что является обязательным, что нет.

По ходу дела были обнаружены мелкие ошибки, которые мы заодно поправили. В итоге мы получили статистику, узнали, сколько у клиента реально живых подписчиков и полностью обновили базу данных.

База данных получилась чистенькая и красивая.
6
Оптимизация и тестирование
вот тут начали вылезать ошибки
Новая база стала очень хороша! Я залила в нее все необходимые данные,
мы стали тестировать работу, которую я сделала, и...
Вот тут начали вылезать ошибки. Платежи шли, но с ошибками.
Но мы не сдались. Стали проверять, почему это могло происходить.
Дело в том, что при проведении платежа может возникнуть
примерно 12-15 разных типов ошибок:

- у клиента может не быть денег
- он мог неправильно заполнить данные карты
- карта могла устареть
- мог быть просто обрыв связи

...еще есть критичные ошибки, когда ребята точно знали, что эти карты нужно отписать
Как мы действовали: мы смотрели связку подписки с её последним платежом и проверяли, был ли он с критичной ошибкой. Если был, то точно отписывали. В итоге в базе остались только те карты, которые мы определили, как не имеющие критичной ошибки.

Еще одной сложностью стала невозможность проверить срок действия карт. Потому что в последнее время из-за санкций российские банки продлевают карты без перевыпуска. В связи с этим мы не могли старых пользователей отписать по признаку истекшего срока действия карты. Поэтому мы добавили их в очередь с попыткой один раз у всех списать деньги. И так как эта нагрузка должна быть распределенной, мы разделили тестовые платежи на транши.

Еще мы нашли одну закономерность, которую не учли, потому что сразу никто из нас не допёр: я не могла это предугадать, а клиент не подумал, что это может быть важно. Соответственно, это мы тоже исправили.

После тестового прогона убедились, что все списывается хорошо, процент ошибок ожидаемый, и, соответственно, все это дело запустили. На все это ушло 6 дней.
Так я провела новогодние каникулы, и ни о чем не жалею.
Главное — получилось оперативно устранить ошибки.

Финал: Результаты и выводы

В результате анализа и оптимизации мы получили обновленную и чистую базу данных.

Мне удалось полностью обновить информацию, исключив дублирование и дополнив отсутствующие данные.

Платежи начали проходить успешно, и мы избежали возможных штрафов.
Как проведенная мной работа улучшила жизнь моих клиентов?
Они уже видят, что не попадают на лишние штрафы, потому что мы устранили ошибки, из-за которых происходили дубли списаний.

Кроме того, мы выявили закономерности, которые не учли изначально, и внесли соответствующие изменения.

Списание платежей стало происходить более эффективно, устранены ошибки в процессе транзакций.
Этот кейс — яркий пример того, как аналитика больших данных
может решить сложные проблемы даже в самых сложных случаях.

Благодаря моему подходу компания:

  • улучшила свою работу
  • сократила расходы по штрафным списаниям
  • обеспечила более стабильную и эффективную деятельность своей платежной системы

нужно решить проблему с базой данных

или создать дашборд?

оставьте свой контакт, и я с вами свяжусь!

Нажимая на кнопку, вы даете согласие на обработку персональных данных и соглашаетесь c политикой конфиденциальности

привет! я Маша — аналитик больших данных.

но чаще всего собственники малого и среднего бизнеса пишут мне: "Маша, помоги!"

я работаю там, где не справляется Excel.

если у вас в базе данных миллионы записей — я могу вам помочь.

Маша Янчева
Аналитик больших данных
2 года занимаюсь анализом больших данных для бизнеса с использованием python, pandas, sql, строю визуальные дашборды в datalens и power bi

✅ больше 5 лет анализирую товарные категории в интернет-магазинах и понимаю все про устройство товарных данных

✅ руководила социологическими исследованиями, вела IT-проекты в роли проджект-менеджера и бизнес-аналитика https://market.yandex.ru, принимала решения на основе данных
+7 905 589 1555
m.yancheva@yandex.ru
Made on
Tilda