2017-06-15 3 views
0

Je souhaite suréchantillonner une série temporelle dans OpenTSDB. Par exemple, supposons que j'ai des températures qui sont enregistrées à des intervalles de 8 heures, par exemple, à 1h, 9h et 17h tous les jours. Je veux récupérer par une requête TSDB un suréchantillonnage de ces données, afin que j'obtienne des températures à 1h, 2h, 3h, ...., 17h, 18h, ... minuit je veux que les données "manquantes" soient remplies par interpolation linéaire, par exemple,Comment j'échantillonne des séries temporelles dans tsdb

otemp (2 heures) = iTEMP (1 heures) + 1/8 * (iTEMP (9 heures) - iTEMP (1 heures))

où otemp est la sortie suréchantillonné résultat et iTEMP est la série temporelle d'entrée. Le problème est que OpenTSDB semble seulement vouloir interpoler linéairement les données dans le contexte d'une opération multi-séries temporelles comme "sum". Maintenant, je peux kluge la solution que je veux créer une autre série chronologique "ctemp" (le "c" est pour "clock") qui enregistre une température de 0 toutes les 1 heure, puis demander au TSDB de me donner la somme de série chronologique avec les itemp. Est-ce que je comprends mal OpenTSDB, et il y a un moyen de le faire sans avoir à créer la fausse série "ctemp"? Quelque chose comme raisonnable:

... start = some_time & end = some_time & intervalle = 1 h & m = lerp: iTEMP

? - Mark

Répondre

0

Pour comparaison avec Axibase TSD qui s'exécute sur HBase, l'interpolation peut être effectuée en utilisant la clause WITH INTERPOLATE.

SELECT date_format(time, 'MMM-dd HH:mm') AS sample_time, 
    value 
FROM temperature 
    WHERE entity = 'sensor' 
    AND datetime BETWEEN '2017-05-14T00:00:00Z' AND '2017-05-17T00:00:00Z' 
    WITH INTERPOLATE(1 HOUR) 

commandes Exemple:

series e:sensor d:2017-05-14T01:00:00Z m:temperature=25 
series e:sensor d:2017-05-14T09:00:00Z m:temperature=30 
series e:sensor d:2017-05-14T17:00:00Z m:temperature=29 
series e:sensor d:2017-05-15T01:00:00Z m:temperature=28 
series e:sensor d:2017-05-15T09:00:00Z m:temperature=35 
series e:sensor d:2017-05-15T17:00:00Z m:temperature=31 
series e:sensor d:2017-05-16T01:00:00Z m:temperature=22 
series e:sensor d:2017-05-16T09:00:00Z m:temperature=40 
series e:sensor d:2017-05-16T17:00:00Z m:temperature=33 

The result:

sample_time  value 
May-14 01:00 25.0000 
May-14 02:00 25.6250 
May-14 03:00 26.2500 
May-14 04:00 26.8750 
May-14 05:00 27.5000 
... 

Interpolation

Disclaimer: Je travaille pour Axibase.