cube-js/cube

Pre-aggregations with elasticsearch as datasource are not timezone aware

Aberta

#7.700 aberto em 29 de jan. de 2024

 (2 comentários) (0 reação) (0 responsável)Rust (1.965 forks)batch import
driver:elasticsearchhelp wanted

Métricas do repositório

Stars
 (19.563 estrelas)
Métricas de merge de PR
 (Métricas PR pendentes)

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;
}

Guia do colaborador