В нашу поддержку часто поступают вопросы о расходе строк и о том, как можно его оптимизировать, в этой статье попробуем разобраться. Для начала – под обработанными строками (что такое строка?) подразумевается сумма добавленных, обновленных или удаленных записей по всем проектам пользователя и всем его источникам.
У некоторых пользователей возникают вопросы относительно удаленных записей, которые отображаются в журнале источнике –
Можно ли отключить удаление данных, чтобы сэкономить количество строк? Короткий ответ – нет, нельзя. Удаление строк это корректное поведение сервиса для обновления данных. К примеру, выгрузка данных из рекламных кабинетов и счетчиков статистики происходит за пару последних дней с “нахлестом”, при этом уже загруженные строки удаляются и в базу загружаются новые сведения. Это сделано для того, чтобы данные были актуальными, потому как многие источники могут поменять данные “задним числом”. Аналогичная ситуация происходит при ручной перезагрузке данных за прошлый период или перезагрузке данных в результате автоматической сверки – старые данные удаляются из БД, а новые записываются.
Теперь давайте рассмотрим пару действительно работающих способов по оптимизации количества строк. Все они имеют общий принцип – необходимо загружать в БД ровно то, что вам необходимо для создания отчета, все избыточные данные увеличивают расход строк и заполняют базу, что приводит к необходимости ее чистить или переходить на более дорогой пакет опций. В качестве примера будем рассматривать выгрузку из amoCRM.
1. Отключение неиспользуемых таблиц. В amoCRM есть масса сущностей: сделки, контакты, компании, задачи. При этом далеко не всегда в отчетах они используются все – к примеру, аналитику в разрезе компаний применяется достаточно редко, но эти данные ежедневно выгружаются и тратят ваши строки.
С помощью этого функционала вы сможете самостоятельно выбрать таблицы, которые будет выгружаться в БД.
2. Фильтрация данных в таблицах. Кроме различных сущностей, которые находятся в разных таблицах, в amoCRM присутствуют разные типы этих сущностей и другие параметры, которыми можно воспользоваться для оптимизации выгрузки. К примеру, существует несколько типов событий, которые могут происходить со сделками, но в тех отчетах, которые мы видели – пользователи чаще всего используют событие изменение статуса сделки, а остальные реже и они выгружаются “в холостую”.
Для решения этой проблемы у нас тоже есть нужный функционал, который позволит вам задать фильтр при загрузке данных, и строки, которые не соответствуют этому фильтру не будут попадать в БД.
Теперь давайте рассмотрим реальный показательный пример со скринами настройки. Мы взяли аккаунт amoCRM и сравнили объем данных при полной выгрузке и оптимизированный вариант.
Для начала мы загрузили все доступные таблицы за 52 дня. Выгрузка шла более часа, мы выгрузили около 400 тысяч строк.
Вот так выглядит распределение строк по таблицам:
При этом это только 52 дня, если же нам нужно будет загрузить последний год, то объем составит примерно 3 миллиона строк.
Теперь подойдем с другой стороны. Следуя принципу “загружай, только то что нужно в отчете” – нам нужно сначала определить, какие данные мы хотим видеть в отчете и соответственно выгружать. В качестве примера мы взяли шаблонный отчет по amoCRM в Power BI из нашего маркетплейса mybi Market, который подготовили наши коллеги из Biarch:
В этом отчете 6 листов с визуализацией данных по сделкам, задачам и звонкам. Модель этого отчета выглядит так:
Чтобы развернуть этот отчет или построить другой аналогичный ему нам потребуются значительно меньше таблиц, чем есть в общей базовой выгрузке из amoCRM – теги, события, примечания, дополнительные параметры в этом отчете не используются. Все лишние таблицы мы отключили, оставили только следующие:
- amocrm_calls
- amocrm_calls_facts
- amocrm_companies
- amocrm_contacts
- amocrm_leads
- amocrm_leads_facts
- amocrm_pipelines
- amocrm_statuses
- amocrm_tasks
- amocrm_tasks_facts
- amocrm_users
Кроме этого нам нужны сделки только из одной воронки, а закрытые и нереализованные сделки не нужны, для это накладываем фильтр на таблицу amocrm_leads:
Который выглядит так:
И вот результат:
16 тысяч строк за 6 минут. Объем данных сократился в 25 раз по сравнению с выгрузкой всех таблиц. Достаточно лишь было подойти осознанно к настройке сбора данных.
Дополнительный бонус – кроме сокращения расходов в сервисе подобная оптимизация данных в БД упрощает конечную работу с данными. Кроме того, что в в таблицах становится проще разобраться, БД с меньшим объемом работает быстрее, отчеты обновляются тоже быстрее. И, конечно, как вы догадались подобные настройки можно применить не только к amoCRM, но и к другим источникам, которые вы используете.