числе с плавающей запятой?
функция round позволить округлить значение
мне биты в двоичном представлении округлить надо. сделал так, но может можно проще/быстрее: reinterpretAsFloat64( unhex(repeat('0', CUT_BYTES) || substring(hex(VALUE), CUT_BYTES - 16)) )
https://clickhouse.com/docs/en/sql-reference/functions/bit-functions/ bitAnd вам видимо нужен
может быть. Но не особо понятно, как именно применять. Что-то такое выдает явно не то, что я ожидаю: reinterpretAsFloat64(bitAnd(reinterpretAsUInt64(VALUE), reinterpretAsUInt64(unhex('FFFFFF0000000000'))))
Может ещё с порядком байтов что-то, можно потестить конвертацию известных значений в hex и обратно
ну вообще конечно там сложно (reinterpretAsUInt64(VALUE) почему то меняет бинарное представление... обрезая байты
а, оно обратный порядок делает, только по два байта подряд. В общем, ладно, мне для тестов моего способа хватило, было интересно, насколько сильнее сжатие будет, если присылать данные в округленном в двоичном формате виде. PS. Ожидаемо хорошо сжимает PPS. Изи тогда. Надо просто маску в обратном порядке написать: reinterpretAsFloat64(bitAnd(reinterpretAsUInt64(VALUE), reinterpretAsUInt64(unhex('0000000000FFFFFF'))))
Обсуждают сегодня