A cube query that adds a timeDimensions granularity on a date dimension returns 500 DATABASE_ERROR, while the same cube's plain measure/dimension queries succeed. Found while browser-testing the dashboards/analytics area against the showcase dev app (console pin 190fbd01, framework 502ff8b5); reproduced ×2.
Reproduction
POST /api/v1/analytics/query
{
"cube": "showcase_delivery",
"measures": ["showcase_delivery.count"],
"timeDimensions": [{ "dimension": "showcase_delivery.due_date", "granularity": "month" }]
}
→ 500 DATABASE_ERROR
Controls that succeed (same cube, same session):
measures:["showcase_delivery.count"] + dimensions:["showcase_delivery.status"] → 200, buckets reconcile with /data.measures:["showcase_delivery.total_estimate_hours"] by status → 200.- Malformed bodies are correctly rejected at entry with a
400 + migration hint (so the entry validator is fine; the failure is downstream, at SQL generation/execution for the month bucket).
Impact
Any dashboard widget or report that buckets a measure by month/week/day over a date dimension (a common chart shape — "count by month") fails at runtime with a 500. On the checklist this surfaced as dashboards.drill-through-range and dashboards.empty-null-bucket-boundaries not being able to isolate the month-bucket path in the UI (the underlying query 500s), even though status/priority bucketing renders correctly.
Notes
(Dedup note: the GitHub search API was rate-limited at filing time, so a pre-file duplicate scan could not complete — please close as duplicate if an existing card already covers analytics time-dimension bucketing.)
QA-source: #13404 · dashboards.drill-through-range, dashboards.empty-null-bucket-boundaries (UI supplement) · analytics timeDimension
A cube query that adds a
timeDimensionsgranularity on a date dimension returns500 DATABASE_ERROR, while the same cube's plain measure/dimension queries succeed. Found while browser-testing the dashboards/analytics area against the showcase dev app (console pin190fbd01, framework502ff8b5); reproduced ×2.Reproduction
Controls that succeed (same cube, same session):
measures:["showcase_delivery.count"]+dimensions:["showcase_delivery.status"]→ 200, buckets reconcile with/data.measures:["showcase_delivery.total_estimate_hours"]by status → 200.400+ migration hint (so the entry validator is fine; the failure is downstream, at SQL generation/execution for the month bucket).Impact
Any dashboard widget or report that buckets a measure by month/week/day over a date dimension (a common chart shape — "count by month") fails at runtime with a 500. On the checklist this surfaced as
dashboards.drill-through-rangeanddashboards.empty-null-bucket-boundariesnot being able to isolate the month-bucket path in the UI (the underlying query 500s), even though status/priority bucketing renders correctly.Notes
Field.datetime的 dateGranularity 分桶恒为 NULL —— 趋势图塌成一根柱子 #3773 date-bucket-parity, 空分组桶的键两条路不一致:下推 SQL 给null,内存兜底给"(null)"(不限日期分桶) #3839 empty-group-parity) are green — they exercise the bucketing logic at a layer that does not hit the real SQL driver the way the live/analytics/querypath does, which is why this only shows against a running deployment.(Dedup note: the GitHub search API was rate-limited at filing time, so a pre-file duplicate scan could not complete — please close as duplicate if an existing card already covers analytics time-dimension bucketing.)
QA-source: #13404 · dashboards.drill-through-range, dashboards.empty-null-bucket-boundaries (UI supplement) · analytics timeDimension