SQL: возвращать значения массива в виде столбцов - PullRequest
0 голосов
/ 26 апреля 2020

Я храню двумерные массивы данных в postgresql, используя две таблицы:

  • A series таблица, которая содержит метаданные о каждом двумерном массиве, включая список меток для каждого столбца в массиве. .
  • Таблица series_row, в которой хранятся фактические данные, включая индекс строки (временная метка в моем случае) и sql Массив значений для каждого столбца в этой строке двумерного массива.

Каждая серия (двумерный массив) имеет фиксированную ширину, но разные серии могут иметь разную ширину.

Приведенные ниже примеры данных содержат две серии. В Series 1 есть 4 строки и 3 столбца, а в Series 2 - 2 строки и 2 столбца.

db=# SELECT id, column_names FROM series;
 id |   column_names
----+------------------
  1 | {var1,var2,var3}
  2 | {var4,var5}
(2 rows)

db=# SELECT series_id, datetime, values FROM series_row;
 series_id |           datetime            |    values
-----------+-------------------------------+--------------
         1 | 2020-04-26 11:02:24.802391-04 | {1,200,60}
         1 | 2020-04-26 11:02:36.138249-04 | {1.1,210,61}
         1 | 2020-04-26 11:02:43.001983-04 | {1.2,220,62}
         1 | 2020-04-26 11:02:52.321589-04 | {1.3,230,63}
         2 | 2020-04-26 11:03:17.394004-04 | {1000,5000}
         2 | 2020-04-26 11:03:26.76255-04  | {2000,6000}
(6 rows)

Как можно вернуть значения строк ряда, каждое из которых является отдельным столбцом?

Например, ответ на запрос для серии 1 будет выглядеть следующим образом:

           datetime            | var1 | var2 | var3 |
-------------------------------+------+------+------+
 2020-04-26 11:02:24.802391-00 | 1    | 200  |  60  |
 2020-04-26 11:02:36.138249-00 | 1.1  | 210  |  61  |
 2020-04-26 11:02:43.001983-00 | 1.2  | 220  |  62  |
 2020-04-26 11:02:52.321589-00 | 1.3  | 230  |  63  |

Кажется, что есть два компонента для этого, сглаживая значения массива в столбцах в строке и совмещая их на основе COLUMN_NAMES. Решение может предполагать, что длина всех series_row.values ​​в серии равна по длине series.column_names. Возможно ли это?

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