BI Consult Desktop Logo BI Consult Mobile Logo
  • Russian BI Исследование российских bi
  • Перейти на Fine BI
  • Контакты
  • +7 812 334-08-01
    +7 499 608-13-06
  • Отправить сообщение
  • Главная
  • Продукты Эксперт-BI
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • E-Commerce
    • Сельское хозяйство
    • Энергетика
    • FMCG
    • Девелоперы
    • Маркетплейсы
    • Пищевая промышленность
    • Фармацевтика
    • Построение Data Platform
    • Цифровая трансформация
    • Управление по KPI
    • Финансы
    • Продажи
    • Склад
    • HR
    • Маркетинг
    • Внутренний аудит
    • Категорийный менеджмент
    • S&OP и FP&A
    • Геоаналитика
    • Цепочки поставок (SCM)
    • AutoML
    • Process Mining
    • IBP
    • ИТ (CIO)
    • Закупки
  • Платформы
    • Системы бизнес-анализа (BI)
    • Интегрированное бизнес-планирование (IBP)
    • Хранилища данных (DWH / Lakehouse)
    • Каталоги данных (Data Catalog)
    • Системы ETL и ELT
    • AI / Исскуственный интеллект
    • Шина данных (ESB)
    • Система управления мастер-данными (MDM)
    • Семантический слой
  • Услуги
    • Переход на отечественные BI и DWH системы
    • Консалтинг
    • Пилотный проект
    • Обучение и сертификация
    • Бесплатное обучение
    • Поддержка
    • Технические задания
    • Сбор требований для проекта внедрения BI-системы
    • CI/CD для DWH
    • Аудит BI приложений и DWH
    • Выделенная команда
    • Настойка и поддержка баз данных
    • Разработка BI Стратегии
    • Styleguide для BI-системы
    • Как выбрать BI-систему
  • Курсы
    • Учебный курс Информационная грамотность (Data Literacy)
    • Учебный курс для бизнес-аналитиков
    • Учебный курс для системных аналитиков
    • Учебный курс по Data Governance
    • Учебный курс Как стать CDO
    • Учебный курс Современная архитектура хранилища данных
    • Учебный курс по Fine BI
    • Учебный курс по FineReport
    • Учебный курс по DWH
    • Учебный курс по Data Science (ML, AI)
    • Учебный курс по PostgreSQL
    • Учебный курс по Greenplum
    • Учебный курс по Apache Airflow и NiFi
    • Учебный курс по Open-source BI
    • Учебный курс по ClickHouse
    • Учебный курс по DataLens
    • Учебный курс по Loginom
    • Учебный курс по Modus BI и ETL
    • Учебный курс по Visiology
    • Учебный курс по dbt (Data Build Tool)
  • Компания
    • Руководство
    • Новости
    • Клиенты
    • Карьера
    • Скачать
    • Контакты

Отраслевые решения

  • Дистрибуция
  • Розничная торговля
  • Производство
  • Операторы связи
  • Банки
  • Страхование
  • Фармацевтика
  • Нефтегазовый сектор
  • Лизинг
  • Логистика
  • Медицина
  • Сеть ресторанов
  • Сельское хозяйство и агрохолдинги
  • Энергетика
  • E-Commerce
  • FMCG
  • Пищевая промышленность
  • Селлеры на маркетплейсах
  • Строительные компании и девелоперы

Функциональные решения

  • Управление по KPI
  • Финансы
  • Продажи
  • Склад
  • Категорийный менеджмент
  • HR
  • Маркетинг
  • Внутренний аудит
  • Геоаналитика, аналитика на географической карте
  • Цепочка поставок (SCM)
  • S&OP и FP&A
  • Разработка стратегии цифровой трансформации
  • Process Mining
  • Интегрированное планирование (IBP)
  • Закупки
  • ИТ (CIO)
  • Построение хранилища данных
  • Создание Data Lake и Data Engineering
Главная » Решения Эксперт-BI на российских BI-платформах » Эксперт-BI для розничной торговли (сетей магазинов) » Универсальное решение для анализа чеков » BI/DWH для Анализа чеков » Расчет частоты покупок клиента - определение среднего количества покупок одного клиента за период

Расчет частоты покупок клиента - определение среднего количества покупок одного клиента за период

Частота покупок клиента служит одним из ключевых индикаторов лояльности, эффективности программ лояльности и динамики спроса. В рамках курса «BI DWH для анализа чеков» целесообразно рассматривать этот показатель как метрику средней активности клиентов в заданном окне времени, а не как агрегат по выручке. Такой подход позволяет сравнивать поведение клиентов между сегментами, периодами и каналами продаж, а также интегрировать полученную метрику в дэшборды и аналитические модели. В данной главе рассмотрены концепции, архитектура данных, пошаговый алгоритм расчета, примеры реализации в DWH и практические сценарии внедрения.

Расчет частоты покупок строится на строгой трактовке данных: мы берем транзакции за фиксированный период, агрегируем их по.customer_id и получаем для каждого клиента количество покупок в этом окне. Далее вычисляем среднее значение по активным клиентам (тем, у кого было хотя бы одно приобретение). Важно помнить о нюансах: как трактовать период, как учитывать возвраты, как учитывать мультиканальные покупки и как обеспечить воспроизводимость расчета в продакшене.

  • Ключевые понятия: период (start_date, end_date), активность клиента (purchase_cnt > 0), модель данных (fact и dimension), методика агрегации и нормы.
  • Основная ценность: способность сравнивать поведение клиентов во времени, выявлять "частотных клиентов" и сегменты с изменением поведения, а также поддерживать BI- и ML-модели предиктивной аналитики.
  • Взаимосвязи с другими метриками: средний чек, частота повторной покупки, LTV, каналы продаж и конверсия, сезонность.

     

Концепции и методология расчета

Расчет частоты покупок следует рассматривать как две взаимосвязанные задачи: аккуратная подготовка данных и корректная транслитерация бизнес-логики в числовую метрику. Прежде чем переходить к реализации, зафиксируем определения и рамки.

  • Определение частоты: для каждого клиента i в период P определяется c_i как количество покупок (или заказов) за этот период. Затем средней считается средняя по активным клиентам:
    • freq_active = (sum c_i) / N_active, где N_active = количество клиентов с c_i > 0.
  • Альтернативная трактовка: если требуется учесть всех клиентов, вне зависимости от активности, можно использовать denominator N_all и определить freq_all = (sum c_i) / N_all, но это обычно не отражает активную поведенческую динамику и может искажать сравнения между периодами.
  • Периодизация: период может быть календарным (например, январь 2025) или скользящим (последние 12 месяцев). Выбор зависит от задач бизнеса: управленческие отчеты, сезонные сравнения или консолидация по финансовым периодам.
  • Гетерогенность по каналам и видам транзакций: в реальных данных покупки могут происходить через розничные точки, онлайн-магазин, мобильное приложение. Частоту можно рассчитывать как агрегат по всей экосистеме или отдельно по каналам, чтобы выявлять различия в поведении.
  • Учет возвратов и аннулирований: чистый процент покупок не равен чистой выручке. В метрике следует определить, считать ли возвраты как отдельные покупки или исключить их из подсчета, и как об этом задокументировать.
  • Временная корреляция и сезонность: частота может варьироваться по месяцам, кварталам, праздникам. При мониторинге целесообразно хранить периодические метрики и поддерживать агрегаты для быстрой визуализации.

Важное преимущество вычисления частоты через количество покупок на клиента - упрощение сравнения между сегментами и временными окнами без привязки к размерам выборки. Тем не менее, следует соблюдать принципы воспроизводимости и управляемости: параметры расчета должны быть явно зафиксированы в спецификациях, источники данных - задокументированы, а процессы - реплицируемы.

 

Архитектура данных и модель данных

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

  • Источники данных:
    • транзакционная система розничной продажи (POS) или онлайн-ERP;
    • система лояльности (для обогащения клиентской информации и возможной сегментации);
    • дата-измерение (Date Dimension) с уровнем денормализации по дням и календарям;
    • данные по возвратам и аннулированиям (для корректной коррекции c_i).
  • Модель данных:
    • Фактовая таблица: fact_sales (sale_id, customer_id, sale_date, quantity, amount, channel_id, store_id, product_id, order_id, is_return)
    • Размерные таблицы:
      • dim_customer (customer_id, loyalty_tier, segment, signup_date, demographics)
      • dim_date (date_key, date, year, month, quarter, day_of_week)
      • dim_channel (channel_id, channel_name)
      • dim_store (store_id, region, channel)
      • dim_product (product_id, category, price)
  • Процессы ETL/ELT:
    • загрузка исходных данных в staging;
    • нормализация дат и временных зон;
    • устранение дубликатов по уникальным идентификаторам заказов (order_id) и строк;
    • привязка к измерению Date и других измерений;
    • агрегация к агрегированным уровням для ускорения отчетности.
  • Важные аспекты качества данных:
    • целостность ключей (customer_id, order_id, sale_date);
    • обработка нулевых значений в quantity и is_return;
    • консистентность денежных единиц (конвертация валют, если применяется мультивалютность);
    • учёт часовых поясов, чтобы не искажать периоды.
  • Архитектурные паттерны:
    • немедленная агрегация (pre-aggregation) для частот по периоду;
    • материализованные представления (materialized views) или кэш-слои для ускорения запросов;
    • система версий и регламент обновления данных после исправления ошибок (re-ingestion).

Применение минимально достаточной схемы: в большинстве сценариев достаточно фактSales и измерения времени, однако для поддержки мультиканальности и сегментации целесообразно добавить dimension по каналам и по сегментам клиентов. В равной мере полезны механизмы управления временем жизни данных и политики обновления исторических периодов.

 

Алгоритм расчета и пример SQL

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

  1. Определяем период P (start_date, end_date).
  2. Фильтруем факты продаж за этот период.
  3. Группируем по клиенту и считаем покупки. Для единиц измерения применяем критерий активности (c_i > 0).
  4. Вычисляем среднее по активным клиентам.
  • Пример простого SQL-запроса (общая формула):

    SELECT AVG(purchase_cnt) AS avg_purchases_per_active_customer
    ## FROM (
      SELECT customer_id, COUNT(*) AS purchase_cnt
      FROM fact_sales
      WHERE sale_date >= DATE '2025-01-01'
        AND sale_date 
    
  • Пример с явным учетом активности и каналов (параметризация и расширяемость):

    SELECT AVG(purchase_cnt) AS avg_purchases_per_active_customer
    ## FROM (
      SELECT s.customer_id, COUNT(*) AS purchase_cnt
      FROM fact_sales s
      JOIN dim_date d ON s.sale_date = d.date
      WHERE d.date BETWEEN DATE '2025-01-01' AND DATE '2025-12-31'
    ## AND s.is_return = 0
        AND s.channel_id IN (:channel_ids)  -- параметризируемый вход
      GROUP BY s.customer_id
    ) AS x
    
  • Вариант с разбивкой по месяцам и последующим усреднением (для анализа сезонности):

    ## WITH per_customer AS (
      SELECT customer_id, DATE_TRUNC('month', sale_date) AS month_key, COUNT(*) AS purchases
    ## FROM fact_sales
      WHERE sale_date >= DATE '2025-01-01' AND sale_date 
    
  • Обсуждение консистентности и возвратов: если возвраты учитываются как отдельные покупки, стоит явно задокументировать это в исходной бизнес-логике. В спорных случаях удобнее исключать возвраты (is_return = 0) до агрегации.

  • Производительность и инфраструктура:

    • использовать партиционированные таблицы по дате для быстрого фильтра по периоду;
    • применять агрегации на уровне базы данных (materialized views) для часто запрашиваемых периодов;
    • избегать дорогостоящих операций на больших объемах данных в режиме онлайн; в таких случаях предпочтительны кэш-слои или OLAP-бустеры (например, применительно к ClickHouse или Spark SQL).
    • для больших deployments применяйте агрегацию по сегментам (customer_segment, channel, region) и хранение pre-aggregations.
  • Поддержка качественных расчетов: в реальных условиях полезно сохранять промежуточные результаты в staging-записях, чтобы можно было повторно выполнить перерасчет при изменении периодов или источников.

  • Примечания к инструментам: для крупных дата-архитектур в рамках открытых стэков можно использовать PostgreSQL или Apache Spark для расчета в рамках ELT-процессов; для высоконагруженных сценариев - коммерческие DWH-решения или ClickHouse. Выбор зависит от объема данных, скорости обновления и специфики бизнес-процессов.

  • Расширения и вариации:

    • расчеты по сегментам клиентов (например, по лояльности, по региону);
    • учет онлайн vs офлайн-каналов и их комбинаций;
    • дополнительно: корреляции между freq и метриками поведения (retention, engagement), использование rolling averages и скользящих окон для устойчивости к сезонности.

       

Интеграция и процесс перехода к продакшену

Переход от концепции к внедрению требует четко выверенного цикла разработки и эксплуатации.

  • Планирование источников и метрик:
    • зафиксируйте бизнес-правила расчета в техническом задании: период, активность, учет возвратов, каналы, валюты.
    • определите единицы измерения и формат выхода: числовое значение, доверительный интервал, временная разбивка.
  • Управление данными и репродуцируемость:
    • создайте параметризованные скрипты и DAG-процессы (или аналогичные оркестрационные задачи) с явной версификацией версий расчета.
    • храните версии метрик и регистрируйте изменения в каталоге метрик.
  • Эволюция моделей и совместимость:
    • поддерживайте совместимость изменений схемы данных: когда добавляется новый канал, нужно обновить вычисления и документацию.
    • регламентируйте миграции: тестирование на тестовом окружении перед продакшеном.
  • Взаимодействие с бизнес-пользователями:
    • подготовьте описание формул, примеры расчета и сценарии использования в BI-дашбордах.
    • внедрите визуальные индикаторы: тренд частоты, сравнение по сегментам, окна отклонений.
  • Мониторинг и качество данных:
    • автоматические проверки полноты данных за период: пропуски по клиентам, нули по покупкам, дубли по заказам.
    • уведомления при отклонениях или всплесках, которые могут быть следствием ошибок нагрузки или изменений источников.
  • Документация и прозрачность:
    • создайте раздел в каталоге метрик, где описаны методология, источники, периодичность обновления, ответственность.
    • поддерживайте гайд по воспроизведению расчета и готовьте примеры сценариев для аудитов.

       

Мониторинг, качество данных и управленческие сценарии

Ключ к устойчивому внедрению - прозрачность расчетов и живой мониторинг.

  • Качество данных:
    • полнота: доля пропусков в полях, связанных с клиента и датой продажи;
    • корректность: проверка на аномальные значения количества покупок (например, за один день) и несоответствий по каналам;
    • консистентность: согласованность между фактами продаж и возвратами.
  • Мониторинг производительности:
    • время выполнения запросов, задержки обновления материалаизованных представлений, рост объема хранилища для pre-aggregations.
  • Контроль стабильности расчета:
    • регламент обновления периодов: ежедневная перерасчетная волна или еженедельная, в зависимости от источников;
    • регламент версионирования: фиксирование версии расчета в документации и в данных.
  • Безопасность и соответствие:
    • ограничение доступа к чувствительным данным клиентов и транзакциям;
    • соблюдение требований по приватности и нормативам по обработке персональных данных.

       

Key takeaways

  • Частота покупок - это среднее число покупок на активного клиента в заданном периоде, вычисляемое как сумма покупок по всем активным клиентам, деленная на количество активных клиентов.
  • Архитектура данных должна включать факт продаж и измерения времени, поддерживающие расчеты по периоду, с учетом возвратов и мультиканальности.
  • Эффективная реализация требует четко задокументированной бизнес-логики, воспроизводимых ETL/ELT-процессов и устойчивых пред-агрегаций.
  • Важны качество данных, контроль ошибок и инфраструктура для повторного вычисления при изменениях источников или периодов.
  • Расширяемость: можно добавлять сегменты, каналы, регионы для анализа частоты по различным контекстам и для построения целевых стратегий.
  • Расчеты должны быть интегрированы в BI-инструменты и поддерживаться оперативно через мониторинг и регламент обновления.
  • Прозрачность и документация позволяют аудиторам и бизнес-пользователям уверенно использовать метрику для принятия решений.

     

FAQ

  1. Что именно считается периодом и как его выбирать?
  • Период выбирается исходя из бизнес-задачи: управленческие циклы (квартал, год) и оперативная аналитика (месяц, неделя). Важно зафиксировать границы и не смешивать периоды внутри одного расчета. При этом можно строить скользящие окна (rolling months) для анализа трендов и сезонности.

 

  1. Как трактовать "активного" клиента?
  • Активным считается клиент, у которого за период P было хотя бы одно событие покупки. Это позволяет исключить пустые брюхи и сосредоточиться на поведенческой активности. В некоторых случаях активность может быть определена по порогу минимального количества покупок (например, 2 за период) для повышения надёжности статистических выводов.

 

  1. Что делать с возвратами и аннулированиями?
  • В зависимости от бизнес-логики возвраты могут считаться отдельной операцией или исключаться из расчета. Чаще применяется исключение возвратов (is_return = 0) при подсчете purchase_cnt, чтобы не исказить показатель частоты. В документации следует зафиксировать выбранный подход и сценарии обработки.

 

  1. Как сравнивать частоты между сегментами и каналами?
  • Разделение по сегментам клиентов (например, по лояльности) и по каналам позволяет увидеть различия в активности. В запросах можно группировать по дополнительным полям (segment, channel_id) и сравнивать средние значения. Визуализации должны отображать разбивки и общие тренды, чтобы не искажать вывод одной из подгрупп.

 

  1. Как учитывать сезонность и тренды?
  • Для устойчивости к сезонности полезно использовать скользящие окна и агрегировать по месяцам/кварталам. Сравнение по аналогичным периодам (пример: январь к январю) позволяет выявлять устойчивые тренды и исключать псевдозатухания, вызванные сезонностью.

 

  1. Какие риски и типичные ошибки встречаются на практике?
  • Неправильное определение периода, несогласованность временных зон, ошибки в возвратах, дублирование транзакций, несогласование с датами в dimension дат и в дата-модели. Также риск - использование неподходящих источников без нормализации валют и единиц измерения.

 

  1. Как обеспечить воспроизводимость расчета в продакшене?
  • Зафиксируйте параметры расчета в конфигурациях; используйте параметризованные SQL-скрипты; храните версии расчета и цели измерений; автоматизируйте цепочку ETL/ELT и регистрируйте даты обновления. Визуализацию и документацию синхронизируйте с версией расчета.

 

  1. Можно ли использовать готовые OLAP-решения для данных по чекам?
  • Да. Решения типа PostgreSQL (для небольших и средних нагрузок), Apache Spark (для больших объемов и сложной логики) или OLAP-системы (ClickHouse, Druid) позволяют быстро выполнять агрегации и строить периодические расчеты. Выбор зависит от объема данных, скорости обновления и требований к latency.

 

  1. Какие рекомендации по интеграции в BI-пайплайн?
  • Расчет частоты покупок следует вынести на отдельный слой дата-пайплайна, который обеспечивает прозрачную документацию формул и доступ к промежуточным данным. В BI-дашбордах отображайте не только итоговую метрику, но и контекст: активность по сегментам, тренды и сезонные варьирования.

 

  1. Какие шаги предпринять, если периодически возникают расхождения между источниками?
  • Прежде всего провести ревизию источников: проверка синхронности даты, согласование временных зон, проверка на дубликаты заказов. Затем выполнить энд-ту-энд тестирование: обеспечить репликацию данных в тестовой среде и повторить расчеты. При необходимости внедрить дополнительные данные-слои (например, staging-tables) и обновить документацию.

 

Готовая глава объединяет архитектурно-методическую часть, практические инструкции и примеры реализации, чтобы специалисты по BI и Data Engineering смогли внедрить надежную и воспроизводимую методику расчета частоты покупок клиента за период.

← Предыдущая статья
Сегментация клиентов по структуре корзины - определение типов покупателей по составу покупок
Следующая статья →
Расчет среднего интервала между покупками - определение времени между покупками клиента

 

Узнать стоимость решенияЗапросить видео презентацию

Запросить видео презентацию Узнать стоимость решения Запросить доступ к демо стенду online

Задать вопрос

loading...

Решения

Анализировать ФинансыУвеличивайте ПродажиОптимальный Склад и ЛогистикаМаркетинговые Метрики

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

  • ГК «Акрон Холдинг», одно из крупнейших в России промышленно-металлургических предприятий, запустил проект по модернизации управления данными. В качестве целевого решения для анализа ключевых данных компания выбрала систему PIX BI. В компании уже более 100 пользователей PIX BI, и в этом году в планах увеличить их число в два раза.

  • В 2003 году Мерсико и пятью микрокредитными агентствами Мерсико было принято историческое решение о консолидации активов по всей территории Кыргызстана в целях образования национального финансового института по развитию сообществ - Компаньона. В октябре 2004 года Компаньон был зарегистрирован Национальным банком Кыргызской Республики.

  • ООО «Модум-Транс» — независимый оператор грузовых железнодорожных перевозок, лидирующий по количеству инновационного парка на сети РЖД.

  • Решения
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • E-Commerce
    • Энергетика
    • Фармацевтика
  • Услуги
    • Переход на отечественные BI и DWH
    • Консалтинг
    • Пилотный проект
    • Обучение и сертификация
    • Бесплатное обучение
    • Техническая поддержка
    • Технические задания
    • Сбор требований для проекта внедрения BI-системы
    • CI/CD для DWH
    • Аудит BI приложений
    • Выделенная команда
    • Настойка и поддержка баз данных
    • Разработка BI Стратегии
    • Styleguide для BI-системы
    • Как выбрать BI-систему
  • Платформы
    • FineBI
    • FineReport
    • FineDataLink
    • Коннекторы данных из 1С в BI
    • Airflow + NiFi
    • Visiology
    • Luxms BI
    • Modus BI
    • PIX BI
    • Arenadata
    • ClickHouse
    • Greenplum
    • Postgres Professional
    • Open-source BI: Superset/Metabase
    • Loginom
    • Yandex.DataLens
    • AI / Исскуственный интеллект
    • Optimacros
    • Шины данных
  • Курсы
    • Учебный курс Информационная грамотность
    • Учебный курс для бизнес-аналитиков
    • Учебный курс для системных аналитиков
    • Учебный курс по Data Governance
    • Учебный курс Как стать CDO
    • Учебный курс Современная архитектура хранилища данных
    • Учебный курс по Fine BI
    • Учебный курс по FineReport
    • Учебный курс по DWH
    • Учебный курс по Data Science (ML, AI)
    • Учебный курс по PostgreSQL
    • Учебный курс по Apache Airflow и NiFi
    • Учебный курс по Open-source BI
    • Учебный курс по ClickHouse
    • Учебный курс по DataLens
    • Учебный курс по Loginom
    • Учебный курс по Modus BI и ETL
    • Учебный курс по Visiology
    • Учебный курс по dbt
  • Функциональные решения
    • Создание Data Lake
    • Цифровая трансформация
    • Управление по KPI
    • Финансы
    • Продажи
    • Склад
    • HR
    • Маркетинг
    • Внутренний аудит
    • Категорийный менеджмент
    • S&OP и прогнозная аналитика
    • Геоаналитика
    • Цепочки поставок (SCM)
    • AutoML
    • Process Mining
    • Сквозная аналитика
  • Компания
    • О нас
    • Руководство
    • Новости
    • Клиенты
    • Скачать
    • Контакты
    • Политика конфиденциальности
RutubeVkontakteLinkedInYouTube
ООО "Би Ай Консалт",
ИНН: 7811437757,
ОГРН: 1097847154184
199178, Россия,
Санкт-Петербург,
6-ая линия В.О., Д. 63, 4 этаж
Тел: +7 (812) 334-08-01
Тел: +7 (499) 608-13-06
E-mail: info@biconsult.ru

 

 

 

 

 

×

Пользуясь сайтом, вы соглашаетесь с использованием cookies и политикой конфиденциальности.