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)
  • Компания
    • Руководство
    • Новости
    • Клиенты
    • Карьера
    • Скачать
    • Контакты

BI

  • FineBI
  • FineReport
  • FineDataLink
  • FineChatBI (FineAI)
  • Коннекторы данных из 1С в BI
  • Airflow / Nifi
  • Visiology
  • PIX BI
  • Modus BI
  • Yandex.DataLens
  • Open-source BI: Superset/Metabase
  • Luxms BI
  • AW BI + Alpha BI
  • FlyBI + Форсайт. Аналитическая Платформа
  • Loginom
  • Триафлай
  • AI / Исскуственный интеллект
  • Optimacros
  • Навигатор BI
  • Семантический слой

СУБД

  • Arenadata
  • ClickHouse
  • Greenplum
  • Postgres Professional
  • TData

Другое

  • Построение Data Platform
    • Аналитическое хранилище данных
    • Data Lake и Data Engineering
    • Подробнее про Data Lake
    • Внедрение Lakehouse
      • Apache Doris
      • StarRocks
      • Trino
    • Миграция витрин из пропиетарных DWH на новый стек
    • Учебный курс "Современная архитектура хранилища данных"
Главная » Курсы по системам бизнес-анализа и методологии » Учебный курс по ClickHouse » Энциклопедия ClickHouse » clickhouse decimal

clickhouse decimal

 

Краткое введение

В рамках курса Clickhouse тема decimal выходит за рамки простого выбора типа числа. Точные decimal-значения критичны для финансовых расчётов, ценообразования, консолидированной отчетности и моделей риска. Правильное проектирование столбцов, выбор форматов хранения и грамотная арифметика позволяют избежать ошибок округления, переполнения и потери точности при агрегации и соединениях. Эта глава развивает навыки проектирования схем, настройки операций и контроля качества данных, связанных с десятичными числами, и показывает практические примеры на реальных архитектурах.

 

Введение

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

 

Теоретические основы и терминология

  • Decimal (десятичное число) представляет собой фиксированную точку, хранимую как целое число с известной степенью масштабирования (scale). Точность задаётся количеством значащих цифр (precision) и количеством цифр после запятой (scale).
  • Scale определяет, какое именно значение после запятой может быть корректно представлено. Например, Decimal(18, 2) хранит 18 значимых цифр и 2 цифры после запятой.
  • В ClickHouse поддерживаются разные варианты реализации:
    • Decimal(precision, scale) как общая конструкция, отображаемая на внутренние форматы 32/64/128 бит.
    • Decimal32 / Decimal64 / Decimal128 как альтернативы для фиксированной разрядности, соответствующей диапазонам 9, 18 и 38 значащих цифр соответственно.
  • Диапазон и точность зависят от выбранной реализации:
    • Decimal32 (примерно до 9 значащих цифр, 4 байта)
    • Decimal64 (до 18 значащих цифр, 8 байт)
    • Decimal128 (до 38 значащих цифр, 16 байт)
  • Арифметика с decimal выполняется с учётом масштабирования: при операциях сложения/вычитания масштабы выравниваются, у результатов выбирается масштаб, равный максимуму входных. Умножение/деление приводит к увеличению числа значащих цифр и требует явной обработки масштаба.
  • Важные принципы:
    • Точность не теряется без явного преобразования; перевод между типами требует явной явной конвертации и может повлечь перенос точки.
    • Округление и усечение происходят через соответствующие функции (round, trunc, fmt можно адаптировать под требуемый сценарий).
    • Схемы миграции и проверки должны учитывать возможное переполнение, особенно в агрегациях и делении на нулевые или близкие к нулю значения.

       

Методологии и подходы

  • Выбор типа и размера decimal:
    • Определяйте диапазон и масштаб ваших операций заранее: для денежных значений предпочтительно decimal(18,2) или decimal(38,6) в зависимости от бизнес-потребностей.
    • Для высокоточных расчетов и больших величин используйте Decimal128 (38 цифр) чтобы избежать переполнения.
  • Модели данных:
    • Разделение валидных деноминаций: хранение цены в самом decimal-формате с фиксированным масштабом (например, копейки как целое число: цены в копейках = Decimal(19,2) в копейках).
    • Избегайте неоднородности масштабов внутри связок данных (JOIN/UNION), чтобы минимизировать затраты на выравнивание масштабов.
  • Архитектурные подходы:
    • В ETL/ELT-пайплайнах - проводить нормализацию масштабов на стадии трансформации, чтобы минимизировать вычисления в запросах.
    • При агрегациях держать итоговый масштаб на уровне бизнес-логики (например, годовая выручка с двумя знаками после запятой).
  • Рекомендации по проектированию:
    • Для финансовых расчетов применяйте Decimal по умолчанию, избегайте приведения к Float/Double на этапах хранения.
    • Гарантируйте единый формат ввода: конвертация из строк, денежных значений и чисел через явные CAST/toDecimal--функции.
    • Покрывайте тестами сценарии округления, переполнения и поведения при резках масштаба.

       

Архитектура и технологическая реализация

  • Структура хранения:
    • decimal хранится как целочисленное значение с заранее заданным масштабом. Физическая реализация зависит от выбранного типа: Decimal32/64/128 или Decimal(P, S) с внутренним соответствующим размером.
    • Векторизация вычислений в движке ClickHouse позволяет выполнять арифметику над decimal в пакетах, что ускоряет сортировку и агрегации на больших объемах.
  • Арифметика и алгоритмы:
    • Сложение/вычитание: выравнивание масштабов, затем сложение целых чисел. Результат имеет масштаб max(s1, s2); проверка переполнения на этапе сложения.
    • Умножение: результат имеет масштаб s1 + s2, а количество значащих цифр сравнивается с доступной точностью типа. При переполнении - применяется конвенционное усечение/округление по заданному масштабу.
    • Деление: дифференцированное увеличение масштаба исходного числа для обеспечения нужной точности результата. В ряде сценариев деление в рамках ClickHouse может возвращать Decimal с фиксированным масштабом для сопоставимости.
    • Приведение типов: CAST(value AS Decimal(P, S)) или toDecimal64(value, S) - выбор зависит от версии ClickHouse и требований точности.
  • Примеры операций:
    • Сумма выручки: revenue = price * quantity
    • Средняя цена: avg_price = sum(price) / count(price) с корректным применением масштаба
    • Округление к нужному количеству знаков: round(price, 2)
  • Интеграции и экосистема:
    • В open-source проектах: ClickHouse в составе стеков data platforms применяет decimal-тип для точных финансовых расчетов.
    • В российских продуктах: управляемые решения на базе ClickHouse в рамках Яндекс.Облако и локальных инфраструктур используются для финансовой аналитики, монетизации и отчетности.

       

Архитектура примеры реализации (DDL и примеры данных)

Пример DDL с использованием Decimal(18,2) для хранения цены и Decimal(18,6) для объёмов:


CREATE TABLE sales_fact
(
    event_date     Date,
    product_id     UInt64,
    price          Decimal(18, 2),  -- деньги в основной валюте
    quantity       Decimal(18, 6),  -- количество в единицах
    revenue        Decimal(38, 2)   -- агрегированная величина
) ENGINE = MergeTree()
ORDER BY event_date;

Пример вставки данных:


INSERT INTO sales_fact (event_date, product_id, price, quantity)
VALUES
    ('2025-03-01', 101, CAST('19.99' AS Decimal(18,2)), CAST('5.000000' AS Decimal(18,6))),
    ('2025-03-01', 102, CAST('29.50' AS Decimal(18,2)), CAST('2.500000' AS Decimal(18,6)));

Расчёт выручки на конкретной дате:


SELECT
    event_date,
    sum(price * quantity) AS total_revenue
FROM sales_fact
GROUP BY event_date
ORDER BY event_date;

Обратите внимание:

  • В некоторых версиях ClickHouse можно использовать более компактные литералы и явные приведения типов через CAST или toDecimal64/ toDecimal128. Уточняйте синтаксис в вашей документации версии ClickHouse.
  • В реальных сценариях удобно держать итоговый масштаб в агрегируемых выражениях. Например, для currency в копейках - Decimal(19, 0) и последующее форматирование во внешнюю систему.

Таблица сравнения основных реализаций decimal в ClickHouse:

Реализация Максимум цифр Размер памяти Примеры использования
Decimal32 до 9 4 байта небольшие цены без миллионов
Decimal64 до 18 8 байт цены и количество с двумя знаками после запятой
Decimal128 до 38 16 байт крупные суммы, денежные потоки, рисковые расчеты
Decimal(P, S) гибко (P зависит от версии) зависит от P универсальные сценарии, совместимость с внешними источниками

 

Риски, ограничения и типовые ошибки

  • Неправильный выбор масштаба (scale) может привести к потере точности или избыточному потреблению памяти. Всегда планируйте scale до начала моделирования.
  • Переполнение при умножении: результат может выйти за пределы выбранного decimal-формата. Решение: выбрать более крупный формат (Decimal128) или корректно ограничивать входные значения.
  • Слияние различных масштабов в агрегациях может привести к ошибкам в результатах. Приводите входные значения к единому масштабу перед операциями.
  • Приведение float/чисел с плавающей точкой к decimal без явного контроля масштаба может привести к неожиданной точности.
  • Округление в round() и аналога может использовать неоднозначность в поведении в зависимости от версии. Рекомендовано явно задавать количество знаков и тестировать сценарии округления.
  • Миграции схем: добавление новых decimal-колонок требует планирования миграции и поддержания обратной совместимости в ETL-пайплайнах.
  • Производительность: арифметика decimal медленнее целочисленной. В критичных по скорости сценариях можно предобрабатывать данные на стадии загрузки и хранить уже вычисленные величины в нужном масштабе.

     

Организационные и процессные аспекты

  • Стандартизация модели decimal в рамках проекта:
    • Определите единый подход к масштабу для бизнес-доменов (например, цены - 2 знака, валюта - копейки).
    • Задайте единый стиль именования полей decimal-типов и документации по конвертации.
  • Контроль качества данных:
    • Нормализация входных данных: парсинг строковых значений в Decimal на этапе загрузки.
    • Тестирование на переполнение, округление и точность агрегаций.
  • Продуктовые требования:
    • В документообороте и отчетности укажите ожидаемую точность и диапазон значений.
    • Для международных проектов - учитывайте валютные курсы, конвертации и единицы измерения.
  • Инфраструктура:
    • В российских проектах часто применяют управляемые ClickHouse-решения в рамках Яндекс.Облако и локальных deployments для аналитики и бизнес-отчетности.
    • Открытые форматы: форматы хранения и передачи data (Parquet/ORC) с decimal-значениями, которые удобно загружать в ClickHouse.

       

Технические детали реализации (алгоритмы, схемы, протоколы, интеграции)

  • Алгоритм выравнивания масштабов:
    1. Получаем s1 и s2 для двух операндов.
    2. Выбираем s = max(s1, s2).
    3. Приводим оба операнда: value1 10^(s - s1), value2 10^(s - s2).
    4. Выполняем операцию над целыми числами.
    5. Применяем масштаб s к результату.
  • Алгоритм умножения:
    1. Уумножение целых чисел: res_int = a_int * b_int.
    2. Масштаб: s_res = s1 + s2.
    3. Если s_res превышает максимально допустимый, применяем округление и по возможности переходим к более крупному decimal-типу.
  • Алгоритм деления:
    1. Для сохранения заданного масштаба обычно увеличивают входной множитель, затем выполняют целочисленное деление.
    2. Результат приводится к нужному Decimal(P, S) с соответствующим S.
    3. Обеспечивается контроль переполнения и точности.
  • Округление:
    • Функции: round(), roundTo, trunc(), floor(), ceil() применяются с учётом масштаба.
    • Роль округления: в денежных расчетах чаще выбирают bankers rounding (банковское округление), но это зависит от реализации в вашей версии ClickHouse - уточняйте в документации.
  • Интеграции:
    • Через SQL-проекции можно отдавать decimal-значения в бизнес-проекции, BI-инструменты и репликацию в хранилища.
    • В открытых проектах принято использовать Apache Parquet/ORC форматы для экспорта и последующей загрузки decimal-значений с сохранением точности.
    • Российские решения часто применяют ClickHouse в составе инфраструктур больших данных, для финансовой аналитики, мониторинга и отчетности.

       

Заключение

Точность и предсказуемость расчетов в аналитике напрямую зависят от правильного проектирования decimal-типов и грамотной арифметики. В ClickHouse корректное использование Decimal(precision, scale) или Decimal32/64/128 обеспечивает устойчивые бизнес-процессы - от финансовых расчётов до сложной аналитики. Практическая часть главы помогла выбрать масштаб, определить формат хранения, реализовать арифметику и управлять рисками переполнения и потери точности. Важно помнить: точность - это не только корректная арифметика, но и единый подход к данным, тестирование и регламент внедрения изменений.

 

Вопрос-Ответ (FAQ)

  1. Что такое clickhouse decimal и зачем он нужен?
  • ClickHouse decimal представляет собой тип чисел с фиксированной точкой, хранящий число как целое значение со знанием масштаба. Он нужен для точных финансовых расчетов, цен, монетарных расчётов и аналитических задач, где плавающая точка не обеспечивает требуемой точности.
  1. Как выбрать между Decimal(18,2) и Decimal(38,9)?
  • Выбор зависит от диапазона значений и требуемой точности. Decimal(18,2) подходит для типичных денежных значений в валюте с двумя знаками после запятой. Decimal(38,9) обеспечивает максимальную точность и диапазон для сложных финансовых потоков и больших сумм. При необходимости можно использовать Decimal32/64/128 или Decimal(P, S) в зависимости от версии ClickHouse и требований проекта.
  1. Как корректно хранить денежные значения в ClickHouse?
  • Рекомендуется хранить денежные значения в фиксированном масштабе (например, копейки) и использовать Decimal(18,2) или Decimal(38,9) в зависимости от диапазона. Это позволяет избежать ошибок при агрегации и конвертации между валютами.
  1. Что произойдет при сложении двух чисел с разными масштабами?
  • ClickHouse выравнивает масштабы до максимального из входных и затем складывает целые значения. Результат имеет масштаб, равный max(s1, s2). Это позволяет сохранить точность в суммах.
  1. Как обрабатывать переполнение в арифметике decimal?
  • При переполнении ClickHouse может выбросить исключение или привести к переполнению в выбранном формате. Чтобы избежать, выбирайте более крупный формат (например Decimal128) для ожидаемых больших значений или ограничивайте входные данные на стадии загрузки.
  1. Какие есть лучшие практики миграции схем Decimal?
  • Планируйте миграции заранее: добавляйте новые столбцы с нужным Decimal(P, S) сначала как нейтральные версии, затем наполняйте их данными и переходите на новые типы после тестирования. Поддерживайте тестовую среду, где повторяете сценарии округления и агрегаций.
  1. Какие функции помогут с работой с decimal в запросах?
  • round(value, digits) - округление до нужного числа знаков, чётко указывайте digits.
  • CAST(value AS Decimal(P, S)) или toDecimal64/ toDecimal128 - явное приведение типов.
  • sum, avg и другие агрегатные функции работают с decimal, но необходима корректная спецификация масштаба результата.
  1. Какие примеры реальных сценариев применимы в российских проектах?
  • В крупных аналитических системах ClickHouse широко используется для финансовой аналитики, монетарных расчетов, мониторинга бизнес-показателей и генерации отчетности. Решения на базе ClickHouse в России часто применяют управляемые сервисы в рамках Яндекс.Облако и локальных инфраструктур, что обеспечивает доступ к точной арифметике и высокой производительности.
  1. Как обеспечить совместимость decimal между источниками данных в пайплайне?
  • Введите единый формат ввода и единый масштаб на стадии загрузки. Приводите входные данные к Decimal(P, S) через CAST или toDecimal-функции до загрузки в факт-таблицы. Это снижает расход на выравнивание масштаба во время запросов и упрощает тестирование.
  1. Как тестировать корректность decimal-полей?
  • Создайте набор тестовых позиций с заранее рассчитанными результатами операций: сложение, вычитание, умножение, деление, округление, агрегации и сравнение с эталоном. Включите проверки переполнения и поведения в крайних случаях. Регулярно выполняйте регрессионное тестирование после обновления версии ClickHouse.

     

Продолжайте исследование:

  • Открытые проекты: официальный ClickHouse, Apache Parquet/ORC форматы и интеграции, которые сохраняют decimal-значения без потери точности.
  • Российские продукты и практики: инфраструктуры на базе ClickHouse в Яндекс.Облаке и на локальных платформах для финансовой аналитики и бизнес-отчетности.

     

Концептуальная карта по теме:

  • Базовые понятия: Decimal, precision, scale, представление как целое число + масштаб
  • Реализации и типы: Decimal(…), Decimal32/64/128
  • Арифметика: сложение, вычитание, умножение, деление, округление
  • Архитектура: хранение, векторизация, производительность
  • Практика: проектирование схем, миграции, тестирование, интеграции
  • Риски: переполнение, несовместимые масштабы, потеря точности
  • Инструменты: DDL, CAST/toDecimal, функции агрегирования, форматы экспорта

     

Примечания по стилистике и применению

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

     

Примечание о терминологии

  • В тексте сохранены точные формулировки и ключевые слова: clickhouse decimal. Это обеспечивает единое понимание темы и соответствие учебной лексике курса.
← Предыдущая статья
clickhouse default user
Следующая статья →
ReplacingMergeTree в ClickHouse: принципы, миграции и практики эксплуатации

 

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

Решения

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

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

  • С объединением компании Savencia Fromage & Dairy и молочного комбината в г.Белебей, одного из лидеров по производству твердых сычужных сыров в России, Savencia выходит на российский рынок не только как импортер, но и как производитель молочной продукции.

  •  ООО «ММК-Информсервис» создает высокотехнологичные решения для эффективной работы предприятий. Разрабатывают и внедряют телекоммуникационные и бизнес-приложения, автоматизируют производство, выстраивают и поддерживают корпоративную IT-инфраструктуру.

  • НПФ «Будущее» — один из крупнейших негосударственных пенсионных фондов России, предоставляющий услуги по пенсионному обеспечению и накоплениям. Фонд активно внедряет цифровые технологии для повышения качества обслуживания клиентов.

  • Решения
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • 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 и политикой конфиденциальности.