cube-js/cube

ClickHouse pre-aggregation WHERE clause loses millisecond precision

Open

#10,326 建立於 2026年1月22日

在 GitHub 查看
 (2 留言) (1 反應) (0 負責人)Rust (19,563 star) (1,965 fork)batch import
driver:clickhousehelp wanted

描述

Describe the bug When building ClickHouse pre-aggregations with build_range_end that includes milliseconds (e.g., '2026-01-20T23:59:59.999Z'), the generated WHERE clause uses parseDateTimeBestEffort(), which truncates to seconds. This causes the WHERE filter to exclude the intended millisecond boundary.

This is critical for any pre-aggregation with time boundaries that need millisecond precision with explicitly set build_range_end to the end of period.

To Reproduce Build the pre-aggregation for ClickHouse based Cube Observe the generated WHERE clause uses parseDateTimeBestEffort() instead of parseDateTime64BestEffort()

Expected behavior The WHERE clause should use parseDateTime64BestEffort() (or equivalent) to preserve millisecond precision.

Version: 1.6.4 (relevant for previous too)

Additional context In packages/cubejs-schema-compiler/src/adapter/ClickHouseQuery.ts, the dateTimeCast() method returns parseDateTimeBestEffort() when called without a timezone parameter.

貢獻者指南

ClickHouse pre-aggregation WHERE clause loses millisecond precision · cube-js/cube#10326 | Good First Issue