cube-js/cube
Ver no GitHubPre-aggregations with elasticsearch as datasource are not timezone aware
Open
#7.700 aberto em 29 de jan. de 2024
driver:elasticsearchhelp wanted
Métricas do repositório
- Stars
- (19.563 stars)
- Métricas de merge de PR
- (Mesclagem média 5d 16h) (138 fundiu PRs em 30d)
Description
When creating pre-aggregations with different time zones and elasticsearch as a data source, the time dimension of the results is not converted to each applicable time zone because 'convertTz' is not implemented in the "ElasticSearchQuery" adapter. The convertTz function code can be as follows:
public convertTz(field: string): string {
const tz = moment().tz(this.timezone);
// TODO respect day light saving
const [hour, minute] = tz.format('Z').split(':');
const [hourInt, minuteInt] = [parseInt(hour, 10), parseInt(minute, 10) * Math.sign(parseInt(hour, 10))];
let result = field;
if (hourInt !== 0) {
result = `TIMESTAMPADD('hour', ${hourInt}, ${result})`;
}
if (minuteInt !== 0) {
result = `TIMESTAMPADD('minute', ${minuteInt}, ${result})`;
}
return result;
}