Объединение данных из разных систем (рекламные кабинеты, CRM, базы 1С, выгрузки из трекеров) — частая задача в аналитике. Но разные форматы дат, часовые пояса и дубли строк могут исказить метрики и привести к неверным выводам. В IdIn есть инструменты, чтобы свести такие риски к минимуму.
Разные форматы дат: приводим к единому виду
Источники часто отдают даты по-разному: 2024-10-05, 05.10.2024, 2024/10/05 14:30:00, а иногда и вовсе строкой без явного формата.
Что делать:
- В датасете создайте вычисляемое поле типа «Дата» или «Дата и время» и приведите все значения к одному формату через функции парсинга (в IdIn это обычно
DATE,DATETIME,PARSE_DATEи аналоги — синтаксис зависит от источника данных). - Если даты приходят как строки, явно укажите формат: например,
PARSE_DATE("dd.MM.yyyy", [DateString]). - Не оставляйте даты как строки: агрегации (суммы по дням, группировка по месяцам) будут работать некорректно.
- Для отчётов по дням используйте поле «Дата» без времени, а для детального анализа — отдельное поле «Дата и время».
Часовые пояса: фиксируем единую логику
Разные источники могут хранить время в локальном поясе (МСК, Нью-Йорк) или в UTC. Если их смешать, конверсии и клики «разъедутся» по дням.
Как избежать ошибок:
- Выберите единый часовой пояс для всего датасета (чаще всего — UTC либо локальный пояс бизнеса, но строго один).
- Приведите все временные метки к этому поясу через функцию конвертации (например,
AT_TIME_ZONEили аналог). - Для группировки по дням используйте именно приведённое поле:
DATE([Datetime_UTC]). - В описании датасета зафиксируйте, какой пояс принят за базовый — это спасёт от путаницы при поддержке дашборда.
Дубли строк: как их найти и убрать
Дубли могут появиться из-за повторной выгрузки, ошибок синхронизации, объединения по неполному ключу.
Практические шаги:
- Определите уникальный ключ строки: например, комбинация
Campaign_ID + Ad_ID + Date + HourилиOrder_ID. - Добавьте вычисляемое поле-ключ (конкатенацию полей) и проверьте на дубли: в таблице включите сортировку по этому полю и посмотрите на повторы.
- В источнике данных (SQL, ETL) используйте
DISTINCTили оконные функции для удаления дублей до загрузки в IdIn. - Если дубли неизбежны (например, разные статусы заказа), явно решите, какую строку брать: по максимальной дате, по финальному статусу и т. п. Реализуйте эту логику в вычисляемом поле или в подзапросе.
Объединение таблиц: на что обратить внимание
При соединении (JOIN) разных таблиц по ключу легко получить «взрыв» строк (Cartesian product) или потерю данных.
Рекомендации:
- Используйте явный тип соединения: LEFT/INNER в зависимости от задачи. LEFT JOIN сохраняет все строки из основной таблицы, даже если в другой нет совпадений.
- Проверяйте кардинальность: после JOIN посчитайте количество строк. Если оно резко выросло — вероятно, одна строка из первой таблицы соединилась с несколькими из второй.
- Избегайте соединения по полям с NULL: такие строки не совпадут и выпадут из результата. Лучше предварительно обработать NULL (заменить на заглушки или отфильтровать).
Дополнительные проверки и полезные практики
- Валидация объёмов: сравните количество строк и суммы ключевых метрик (расходы, конверсии) с исходными отчётами источников. Расхождения больше 1–2% — повод искать ошибку.
- Контроль типов данных: убедитесь, что числовые поля действительно числа, а не строки с пробелами или символами валюты.
- Версионирование: если вы меняете логику преобразования дат или ключей, сохраняйте старую версию датасета.
- Тестовые выборки: перед публикацией датасета проверьте 3–5 конкретных строк вручную: совпадают ли даты, правильно ли учтены часовые пояса, нет ли дублей.