Лучший способ получить данные для создания диаграммы с помощью Canvas. js - PullRequest
0 голосов
/ 21 января 2020

У меня есть таблица, в которой я буду sh отображать графически, к сожалению, эта таблица была создана не самым оптимальным образом. К счастью, это не тонна данных.

Таблица состоит из 7 столбцов:

| id | avg_1 | avg_2 | avg_3 | avg_4 | avg_5 | date_added |

По сути, скрипт запускается один раз в день, вычисляя средние цены для этих 5 указанных c элементов. и добавляет дату / время, когда они были добавлены. Я использую библиотеку Canvas JS для создания сплайн-графика, который будет отображать 5 линий, а в качестве оси X будет использоваться дата в строке.

Мне понадобятся данные, введенные в массивы, такие как следующее:

$dataPoints1 = array(
 array("date"=> "$date", "y"=> $avg_1),
 array("date"=> "$date", "y"=> $avg_1),
 array("date"=> "$date", "y"=> $avg_1),
 array("date"=> "$date", "y"=> $avg_1),
 array("date"=> "$date", "y"=> $avg_1),
 array("date"=> "$date", "y"=> $avg_1),
 array("date"=> "$date", "y"=> $avg_1)
);
$dataPoints2 = array(
 array("date"=> "$date", "y"=> $avg_2),
 array("date"=> "$date", "y"=> $avg_2),
 array("date"=> "$date", "y"=> $avg_2),
 array("date"=> "$date", "y"=> $avg_2),
 array("date"=> "$date", "y"=> $avg_2),
 array("date"=> "$date", "y"=> $avg_2),
 array("date"=> "$date", "y"=> $avg_2)
);

Итак, 5 разных массивов, где каждый массив содержит информацию для каждого отдельного столбца и совпадающую дату. Обычно я могу разрешать запросы самостоятельно, однако этот вопрос может быть слишком сложным для меня, чтобы завершить его, когда мне нужно сделать это как можно скорее. Поэтому я жду каких-либо предложений!

У меня, очевидно, нет проблем с возвратом всех необходимых данных, но мне интересно, будет ли более разумным выбрать каждый столбец и дату в своем собственном запросе. Или было бы более оптимальным сохранить все это в одном запросе, а затем создать al oop для каждого столбца?

В любом случае, я полностью теряюсь в лучшем способе ввода каждой строки данных в требуемый формат массива.

Все, что у меня есть на данный момент:

<?php 
// if i query all columns at once
$query = "SELECT * FROM table ORDER BY id DESC LIMIT 30"; // only grabbing the last 30 days
$result = $readConnection->fetchAll($query);

// example of getting avg_1, but is the best way?
$dataAvg[] = array();
foreach($result as $avg){
    $dataAvg1[] = $avg['avg_1'];
}

Это вывело бы что-то вроде этого: Array ( [0] => 4.5300000191 [1] => 4.5300000191 [2] => 4.5500000318 [3] => 4.4600000381......

Я перепутал несколько разных вещи просто для того, чтобы увидеть, что я могу получить, возможно, ударить идею в мою голову, но я, кажется, ничего не могу сказать asp. Я совершенно потерял лучший способ извлечь из одного массива и поместить его в тот, который мне нужен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...