cube-js/cube

ClickHouse pre-aggregation WHERE clause loses millisecond precision

Open

#10 326 ouverte le 22 janv. 2026

Voir sur GitHub
 (2 commentaires) (1 réaction) (0 assignés)Rust (1 965 forks)batch import
driver:clickhousehelp wanted

Métriques du dépôt

Stars
 (19 563 stars)
Métriques de merge PR
 (Merge moyen 5j 16h) (138 PRs mergées en 30 j)

Description

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.

Guide contributeur