PHP influenxdb - получить имя измерения в результате - PullRequest
0 голосов
/ 06 февраля 2020

Мне нужно получить некоторые данные из моей базы данных InfxDB.
Мой текущий запрос:

SELECT value FROM first,second,third WHERE location = 'somewhere' ORDER BY time DESC LIMIT 1

С таким результатом:

array(3) {
  [0]=>
array(2) {
  ["time"]=>
  string(30) "2020-02-06T12:44:49.461551353Z"
  ["value"]=>
  float(8.7572979625)
}
[1]=>
array(2) {
  ["time"]=>
  string(29) "2020-02-06T12:44:48.70683539Z"
   ["value"]=>
  float(22.5172978864)
}
[2]=>
array(2) {
  ["time"]=>
  string(30) "2020-02-06T12:44:48.711272393Z"
  ["value"]=>
  float(43.0572978868)
}
}

Для обработки этой информации я Я должен использовать какое-то время l oop, я не уверен, так как я не могу найти
пример этого онлайн нигде, связанного с данным типом данных. Но чтобы сделать l oop полезным, мне нужно знать, как называется измерение, если у меня нет, что результат совершенно непригоден.

Я бы потребовал, чтобы это было:

array(3) {
  [0]=>
array(2) {
  ["time"]=>
  string(30) "2020-02-06T12:44:49.461551353Z"
  ["measurement"]=>
  string(5) "first"
  ["value"]=>
  float(8.7572979625)
}
[1]=>
array(2) {
  ["time"]=>
  string(29) "2020-02-06T12:44:48.70683539Z"
  ["measurement"]=>
  string(6) "second"
  ["value"]=>
  float(22.5172978864)
}
[2]=>
array(2) {
  ["time"]=>
  string(30) "2020-02-06T12:44:48.711272393Z"
  ["measurement"]=>
  string(5) "third"
  ["value"]=>
  float(43.0572978868)
 }
}

Как мне добиться этого и правильно обработать результаты?

1 Ответ

0 голосов
/ 06 февраля 2020

Это решило мою проблему:

<?php
 include "vendor/autoload.php";

 $columns = array('first', 'second', 'third');
 $cstrings = implode(",",$columns);
 $database = InfluxDB\Client::fromDSN(sprintf('influxdb://xxx:xxx@%s:%s/%s', 'localhost', 8086, 'xxxx'));
 $client = $database->getClient();
 $result = $database->query("SELECT value FROM $cstrings WHERE location = 'xxx' ORDER BY time DESC LIMIT 1");

 foreach ($columns as $column) {
   $points = $result->getPoints($column);
   print($column." ".$points[0]['value']."\n");
 }
...