В данном выпуске вы узнаете на конкретном примере, как исправить проблему округления в ClickHouse при загрузке данных туда из других источников.
Сегодня мы рассмотрим, что делать, если при загрузке данных из других источников в ClickHouse начинают плыть копейки. Рассмотрим эту проблему на конкретном примере.
Допустим, у нас есть таблица в Эксель, которую мы хотим грузить в ClickHouse. Как именно это делать, мы рассматривали в предыдущем уроке.
Обратите внимание на первую сумму 306 139,19.
![](https://biba.pro/wp-content/uploads/2023/08/image-5.png)
Считываем наш файл Питоном. Там данная сумма подгрузилась корректно.
![](https://biba.pro/wp-content/uploads/2023/08/image-6-1024x355.png)
Теперь давайте загрузим этот датафрейм в Кликхаус и посмотрим, что будет.
![](https://biba.pro/wp-content/uploads/2023/08/image-7.png)
После прогрузки данных создаем новый датасет и подтягиваем нашу таблицу. Смотрим на суммы. И вдруг обнаруживаем одну неприятность – по одной из сумм копейки загрузились неверно. И самое обидное, что это не просто формат отображения чисел, копейки именно так и подгрузились.
Соответственно, при точных вычислениях вы получите не 19 копеек, а 20. 1 копейка будет в разницах.
![](https://biba.pro/wp-content/uploads/2023/08/image-9.png)
![](https://biba.pro/wp-content/uploads/2023/08/image-10.png)
Как исправить округление в ClickHouse?
Так как исправить эту неприятность? Сделать это можно с помощью изменения числовых форматов при создании таблицы в Кликхаусе. Давайте вернемся в код Питона и вспомним, какой формат мы задавали для колонки с суммой? Верно, Float. Но, к сожалению, такой формат не очень подходит для точных финансовых вычислений.
Для точных копеек лучше использовать формат Float64. Давайте исправим его и, предварительно удалив старую таблицу, переподгрузим наши данные.
![](https://biba.pro/wp-content/uploads/2023/08/image-14.png)
Запускаем новый код, затем заходим в ДатаЛенс и снова подтягиваем таблицу. Ура! Теперь копейки подгрузились верно.
![](https://biba.pro/wp-content/uploads/2023/08/image-13.png)
Видео версию данного урока можно посмотреть тут.
Если вам понравился урок, то можете поддержать проект по кнопке ниже. Это очень поможет делать для вас больше интересных и полезных выпусков. Спасибо!
Если вам понравился урок, подписывайтесь на канал или группу и ставьте лайки. А также пишите в комментариях свои кейсы или вопросы. Самые интересные мы обязательно разберем.