Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| pub_zone:linux:stack_tig [11:30 07/12/2017] – [Correction d'une SERIE] nimbus | pub_zone:linux:stack_tig [15:05 27/06/2019] (Version actuelle) – [Correction d'un MEASUREMENT] nimbus | ||
|---|---|---|---|
| Ligne 4: | Ligne 4: | ||
| Tout simplement (si on se trouve sur le serveur qui héberge la base de données et en supposant que le client influx est dans le PATH) | Tout simplement (si on se trouve sur le serveur qui héberge la base de données et en supposant que le client influx est dans le PATH) | ||
| <code bash> | <code bash> | ||
| - | influx -precision rfc3339 -database ' | + | influx -precision rfc3339 -database ' |
| + | influx -precision ns -database ' | ||
| </ | </ | ||
| - | ==== Correction d'une SERIE ==== | + | ==== Correction d'un MEASUREMENT |
| - | <WRAP center round todo 60%> | + | === Méthode subtile === |
| - | Work in Progress 8-o | + | |
| - | </ | + | |
| <WRAP center round info> | <WRAP center round info> | ||
| **Contexte : **\\ | **Contexte : **\\ | ||
| J'ai des erreurs de mesures((Problème corrigé depuis... causé par une concurrence d' | J'ai des erreurs de mesures((Problème corrigé depuis... causé par une concurrence d' | ||
| * Nom de la base InfluxDB : '' | * Nom de la base InfluxDB : '' | ||
| - | * La SERIE est stockée dans la MEASUREMENT '' | + | * La SERIE est stockée dans la MEASUREMENT |
| * Fréquence de collecte : '' | * Fréquence de collecte : '' | ||
| - | * Valeurs | + | * Valeur |
| * Points de **température > 100°C** (la pièce à vivre n'est pas censée être un four ;-)) | * Points de **température > 100°C** (la pièce à vivre n'est pas censée être un four ;-)) | ||
| - | * Points d' | ||
| </ | </ | ||
| + | __Avant__ correction : | ||
| + | {{ : | ||
| + | |||
| + | __Après__ correction : | ||
| + | {{ : | ||
| On commence par [[# | On commence par [[# | ||
| On affiche la structure de la **MEASUREMENT** | On affiche la structure de la **MEASUREMENT** | ||
| - | < | + | < |
| - | > SHOW SERIES FROM Temperature_temperhum | + | > SHOW SERIES FROM Temperature_temper |
| key | key | ||
| --- | --- | ||
| - | Temperature_temperhum, | + | Temperature_temper, |
| - | > SHOW TAG KEYS FROM Temperature_temperhum | + | > SHOW TAG KEYS FROM Temperature_temper |
| - | name: Temperature_temperhum | + | name: Temperature_temper |
| tagKey | tagKey | ||
| ------ | ------ | ||
| host | host | ||
| - | > SHOW FIELD KEYS FROM Temperature_temperhum | + | > SHOW FIELD KEYS FROM Temperature_temper |
| - | name: Temperature_temperhum | + | name: Temperature_temper |
| fieldKey fieldType | fieldKey fieldType | ||
| -------- --------- | -------- --------- | ||
| Ligne 49: | Ligne 51: | ||
| Commençons par évaluer l' | Commençons par évaluer l' | ||
| - | < | + | < |
| - | > SELECT COUNT(" | + | > SELECT COUNT(" |
| - | name: Temperature_temperhum | + | name: Temperature_temper |
| - | time | + | |
| - | ---- | + | |
| - | 1970-01-01T00: | + | |
| - | + | ||
| - | > SELECT COUNT(" | + | |
| - | name: Humidity_temperhum | + | |
| time count | time count | ||
| ---- ----- | ---- ----- | ||
| - | 1970-01-01T00: | + | 1970-01-01T00: |
| </ | </ | ||
| - | Bon ok, une vingtaine de points | + | Bon ok, 1 point de mesure à corriger, // |
| <WRAP center round tip> | <WRAP center round tip> | ||
| Ligne 70: | Ligne 66: | ||
| Liste des points de **température** à corriger | Liste des points de **température** à corriger | ||
| - | < | + | < |
| > PRECISION rfc3339 | > PRECISION rfc3339 | ||
| - | > SELECT * FROM Temperature_temperhum | + | > SELECT * FROM Temperature_temper |
| - | name: Temperature_temperhum | + | name: Temperature_temper |
| time | time | ||
| ---- | ---- | ||
| - | 2017-12-04T14: | + | 2017-12-07T11:00:04Z drouard.eu 568.5 |
| - | 2017-12-04T19: | + | |
| - | 2017-12-04T20: | + | |
| - | 2017-12-04T22: | + | |
| - | 2017-12-04T23: | + | |
| - | 2017-12-04T23: | + | |
| - | 2017-12-05T22: | + | |
| - | 2017-12-06T00:00:05Z drouard.eu 568.5 | + | |
| - | 2017-12-06T00: | + | |
| - | 2017-12-06T10: | + | |
| > PRECISION ns | > PRECISION ns | ||
| - | > SELECT * FROM Temperature_temperhum | + | > SELECT * FROM Temperature_temper |
| - | name: Temperature_temperhum | + | name: Temperature_temper |
| time host value | time host value | ||
| ---- ---- ----- | ---- ---- ----- | ||
| - | 1512399001000000000 | + | 1512644404000000000 |
| - | 1512415503000000000 drouard.eu 568.5 | + | |
| - | 1512417901000000000 drouard.eu 568.5 | + | |
| - | 1512425705000000000 drouard.eu 568.5 | + | |
| - | 1512430801000000000 drouard.eu 568.5 | + | |
| - | 1512431402000000000 drouard.eu 568.5 | + | |
| - | 1512511801000000000 drouard.eu 568.5 | + | |
| - | 1512518405000000000 drouard.eu 568.5 | + | |
| - | 1512519002000000000 drouard.eu 568.5 | + | |
| - | 1512557104000000000 drouard.eu 568.5 | + | |
| - | </ | + | |
| - | + | ||
| - | Liste des points d' | + | |
| - | <code sql> | + | |
| - | > PRECISION rfc3339 | + | |
| - | > SELECT * FROM Humidity_temperhum WHERE value > 100 LIMIT 20; | + | |
| - | name: Humidity_temperhum | + | |
| - | time | + | |
| - | ---- | + | |
| - | 2017-12-04T14: | + | |
| - | 2017-12-04T19: | + | |
| - | 2017-12-04T20: | + | |
| - | 2017-12-04T22: | + | |
| - | 2017-12-04T23: | + | |
| - | 2017-12-04T23: | + | |
| - | 2017-12-05T22: | + | |
| - | 2017-12-06T00: | + | |
| - | 2017-12-06T00: | + | |
| - | 2017-12-06T10: | + | |
| - | + | ||
| - | > PRECISION ns | + | |
| - | > SELECT * FROM Humidity_temperhum WHERE value > 100 LIMIT 20; | + | |
| - | name: Humidity_temperhum | + | |
| - | time host | + | |
| - | ---- ---- | + | |
| - | 1512399001000000000 drouard.eu 2517 | + | |
| - | 1512415503000000000 drouard.eu 2517 | + | |
| - | 1512417901000000000 drouard.eu 2517 | + | |
| - | 1512425705000000000 drouard.eu 2517 | + | |
| - | 1512430801000000000 drouard.eu 2517 | + | |
| - | 1512431402000000000 drouard.eu 2517 | + | |
| - | 1512511801000000000 drouard.eu 2517 | + | |
| - | 1512518405000000000 drouard.eu 2517 | + | |
| - | 1512519002000000000 drouard.eu 2517 | + | |
| - | 1512557104000000000 drouard.eu 2517 | + | |
| </ | </ | ||
| Ligne 142: | Ligne 85: | ||
| En fonction de la nature, criticité de la métrique, 2 possibilités pour corriger l' | En fonction de la nature, criticité de la métrique, 2 possibilités pour corriger l' | ||
| * Méthode 1 ☛ **Supprimer la valeur** erronée : | * Méthode 1 ☛ **Supprimer la valeur** erronée : | ||
| - | * Il est possible de corriger l' | + | * Il est possible de corriger l' |
| * Méthode 2 ☛ **Maquiller la valeur** erronée (Ce n'est qu'une extension de la méthode 1) : | * Méthode 2 ☛ **Maquiller la valeur** erronée (Ce n'est qu'une extension de la méthode 1) : | ||
| * Cette stratégie consiste sournoisement à faire une moyenne (par ex.) entre les 2 valeurs entourant le pic puis à inscrire cette valeur à la place de la valeur du pic | * Cette stratégie consiste sournoisement à faire une moyenne (par ex.) entre les 2 valeurs entourant le pic puis à inscrire cette valeur à la place de la valeur du pic | ||
| - | Prenons l' | + | On commence par identifier le laps de temps incriminé via une petite requête |
| - | < | + | < |
| - | > SELECT * FROM Temperature_temperhum | + | > PRECISION rfc3339 |
| - | name: Temperature_temperhum | + | > SELECT * FROM Temperature_temper |
| + | name: Temperature_temper | ||
| time | time | ||
| ---- | ---- | ||
| - | 2017-12-04T14:45:03Z drouard.eu | + | 2017-12-07T10:55:01Z drouard.eu |
| - | 2017-12-04T14:50:01Z drouard.eu 568.5 | + | 2017-12-07T11:00:04Z drouard.eu 568.5 |
| - | 2017-12-04T14:55:04Z drouard.eu | + | 2017-12-07T11:05:01Z drouard.eu |
| </ | </ | ||
| On supprime la valeur erronée | On supprime la valeur erronée | ||
| - | < | + | < |
| - | DELETE FROM Temperature_temperhum | + | DELETE FROM Temperature_temper |
| </ | </ | ||
| On vérifie que la mesure à bien été supprimée | On vérifie que la mesure à bien été supprimée | ||
| - | < | + | < |
| - | > SELECT * FROM Temperature_temperhum | + | > SELECT * FROM Temperature_temper |
| - | name: Temperature_temperhum | + | name: Temperature_temper |
| time | time | ||
| ---- | ---- | ||
| - | 2017-12-04T14:45:03Z drouard.eu | + | 2017-12-07T10:55:01Z drouard.eu |
| - | 2017-12-04T14:55:04Z drouard.eu | + | 2017-12-07T11:05:01Z drouard.eu |
| </ | </ | ||
| Ligne 181: | Ligne 125: | ||
| On va devoir injecter une nouvelle valeur avec comme paramètres : | On va devoir injecter une nouvelle valeur avec comme paramètres : | ||
| * **'' | * **'' | ||
| - | * Dans cet ex : '' | + | * Dans cet ex : '' |
| * **'' | * **'' | ||
| - | * Dans cet ex : '' | + | * Dans cet ex : '' |
| - | Syntaxe générique d' | + | <WRAP center round tip> |
| + | A noter qu'il est possible de convertir une date au format RFC-3339 vers le format epoch avec une précision à la nanoseconde avec la commande '' | ||
| + | <code bash> | ||
| + | date -d 2017-12-07T11: | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | |||
| + | Syntaxe générique d' | ||
| <code bash> | <code bash> | ||
| Ligne 193: | Ligne 145: | ||
| Ensuite, on peut forger la requête d' | Ensuite, on peut forger la requête d' | ||
| * En mode **CLI** via le client '' | * En mode **CLI** via le client '' | ||
| - | < | + | < |
| - | INSERT | + | INSERT |
| </ | </ | ||
| - | * En mode **API / HTTP** (C'est à la mode... et et c'est pratique aussi) via '' | + | * En mode **HTTP |
| <code bash> | <code bash> | ||
| - | #ToDo | + | curl -i -XPOST -u USERNAME: |
| </ | </ | ||
| Enfin, on vérifie la correction | Enfin, on vérifie la correction | ||
| - | < | + | < |
| - | > SELECT * FROM Temperature_temperhum | + | > SELECT * FROM Temperature_temper |
| - | name: Temperature_temperhum | + | name: Temperature_temper |
| - | time | + | time host |
| - | ---- | + | ---- ---- |
| - | 2017-12-04T14: | + | 1512644101000000000 |
| - | 2017-12-04T14: | + | 1512644404000000000 |
| - | 2017-12-04T14: | + | 1512644701000000000 |
| </ | </ | ||
| + | |||
| + | |||
| + | === Méthode (moins) subtile === | ||
| + | <WRAP center round info> | ||
| + | **Contexte : **\\ | ||
| + | J'ai un '' | ||
| + | '' | ||
| + | * Nom de la base InfluxDB : '' | ||
| + | * La '' | ||
| + | * Éléments à corriger | ||
| + | * Le nom du '' | ||
| + | * Le '' | ||
| + | * Les '' | ||
| + | |||
| + | La structure du '' | ||
| + | < | ||
| + | name: Temperature_temper | ||
| + | time host | ||
| + | ---- ---- | ||
| + | 1512659404000000000 drouard.eu | ||
| + | 1512659702000000000 drouard.eu | ||
| + | 1512660004000000000 drouard.eu | ||
| + | ... | ||
| + | 1541081404000000000 | ||
| + | 1541081703000000000 | ||
| + | 1541082004000000000 | ||
| + | ... | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | On commence par exporter les données | ||
| + | <code bash> | ||
| + | influx -database ' | ||
| + | </ | ||
| + | |||
| + | Ensuite je supprime les entêtes (les 3 premières lignes) | ||
| + | <code bash> | ||
| + | sed -i ' | ||
| + | </ | ||
| + | |||
| + | Je supprime les données contenu dans le '' | ||
| + | < | ||
| + | sed -i 's/ Temperature// | ||
| + | </ | ||
| + | |||
| + | Ensuite, je formate avec '' | ||
| + | |||
| + | <code bash> | ||
| + | < | ||
| + | </ | ||
| + | |||
| + | <code bash> | ||
| + | awk ' | ||
| + | </ | ||
| + | |||
| + | Si le format est correct, je génère le fichier d' | ||
| + | <code bash> | ||
| + | awk ' | ||
| + | </ | ||
| + | |||
| + | <WRAP center round tip> | ||
| + | On aurait pu tout à fait manipuler les données manuellement dans un éditeur de texte (vim, notepad++, etc.) ou dans un tableur tel que LibreOffice au format CSV... Mais ce n'est pas forcément toujours plus simple et dépend du nombre et du type de modification ;-) | ||
| + | </ | ||
| + | |||
| + | |||
| + | Et je l' | ||
| + | <code bash> | ||
| + | curl -i -XPOST -u USERNAME: | ||
| + | </ | ||
| + | |||
| + | L' | ||
| + | < | ||
| + | HTTP/1.1 100 Continue | ||
| + | |||
| + | HTTP/1.1 204 No Content | ||
| + | Content-Type: | ||
| + | Request-Id: 7099242b-dde8-11e8-9845-000000000000 | ||
| + | X-Influxdb-Build: | ||
| + | X-Influxdb-Version: | ||
| + | X-Request-Id: | ||
| + | Date: Thu, 01 Nov 2018 15:11:45 GMT | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== Copier un MEASUREMENT ==== | ||
| + | On utilise la commande '' | ||
| + | <code bash> | ||
| + | SELECT * INTO openweathermapNEW FROM openweathermap GROUP BY * | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== Supprimer un TAG / FIELD d'un MEASUREMENT ==== | ||
| + | On reprend la copie d'un MEASUREMENT mais on définit les '' | ||
| + | <code bash> | ||
| + | SELECT time, | ||
| + | </ | ||
| + | |||
| + | On surprime l' | ||
| + | <code bash> | ||
| + | DROP MEASUREMENT openweathermap | ||
| + | </ | ||
| + | |||
| + | Et on recopie intégralement le nouveau MEASUREMENT avec l' | ||
| + | <code bash> | ||
| + | SELECT * INTO openweathermap FROM openweathermapNEW GROUP BY * | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||