Перейти к содержанию
Содержание

После соединения таблиц выросла выручка: проверьте повторяющиеся ключи

Если после добавления справочника сумма продаж выросла, сначала проверьте число строк и ключ соединения. Новые реквизиты не должны сами создавать новые операции. Этот разбор предназначен для аналитика, который объединяет выгрузки в Python с pandas.

Определите смысл одной строки

Сохраните исходные таблицы отдельно. Для продаж запишите, что означает строка: заказ, позиция или отдельная операция. Для справочника определите, какая запись должна соответствовать ей. Одного SKU может быть мало, если данные различаются по магазину, варианту, периоду или другому признаку.

После соединения таблиц выросла выручка: проверьте повторяющиеся ключи

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

Проверьте ожидаемую связь

Для сценария «много строк продаж к одной записи справочника» документация pandas предлагает проверку validate="many_to_one": ключи справа должны быть уникальными. Параметр many_to_many такую проверку не выполняет.

Если ваши таблицы называются sales и catalog, а согласованный ключ состоит только из sku, соединение может выглядеть так:

result = sales.merge(
    catalog,
    on="sku",
    how="left",
    validate="many_to_one",
    indicator=True,
)

Перед запуском убедитесь, что эти имена колонок соответствуют данным, а в catalog нет одноимённого денежного поля продаж, которое затруднит проверку результата. Для составного ключа передайте список его реальных колонок.

Разберите причину отказа

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

Отдельно проверьте пустые ключи. pandas сопоставляет строки с пустыми значениями ключа друг с другом, что отличается от обычного поведения SQL. До соединения такие строки нужно выделить и решить, можно ли их корректно связать.

Сверьте результат

После успешного соединения сравните число строк и контрольную сумму продаж с исходными. Столбец _merge помогает найти строки left_only, для которых не найден справочник. Нулевая разница итогов ещё не доказывает правильность каждого сопоставления: просмотрите также найденные и ненайденные ключи. Сохраните условие соединения и список исключений рядом с итоговым отчётом.

Читайте в журналеКак сохранить идентификаторы и проверить строки исходной выгрузки

Теги

Комментарии 0

0 / 1500

Популярные статьи