Свести агрегированные пары ключ / значение из поля JSONB?

я есть простая таблица postgres:

    Column    │         Type         │ Modifiers
──────────────┼──────────────────────┼──────────────────────
 id           │ integer              │ not null default
 data         │ jsonb                │

Вот упрощенная структура данных дляdata:

{
  "id": 3,
  "date": "2019-01-01",
  "well_report_table":
    [
      {"element": "methane",
      "yield": 6,
      "price": 2.10
      },
      {"element": "pentane",
      "yield": 6,
      "price": 2.10
      },
      {"element": "butane",
      "yield": 6,
      "price": 3.50
      }
    ],
  "cost_report_table":
    [
      {"item": "fuel",
      "charge": 6.30
      },
      {"item": "lease",
      "charge": 200
      }
    ]
}

Я хотел бы сгладить это в представлении с помощью следующих столбцов:

id | date | well_report_table_methane_yield | well_report_table_methane_price | well_report_table_pentane_yield | well_report_table_pentane_price | well_report_table_butane_yield | well_report_table_butane_price |cost_report_table_fuel_charge | cost_report_table_lease_charge

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

Этот вопрос приближает меня:Postgres: Свести агрегированные пары ключ / значение из поля JSONB?

Я не совсем уверен, что это возможно в чем-то вроде plpgsql, поэтому, если мне просто нужно сгенерировать текст представления на языке сценариев, таком как ruby ​​/ python, а затем создать представление из этого, я согласен с этим.

В идеале я смогу использовать что-то вродеjsonb_array_elements а такжеjsonb_each чтобы избежать промежуточных таблиц (все мои текущие попытки требуют промежуточных представлений), но я еще не нашел эту магическую комбинацию.

Ответы на вопрос(1)

Ваш ответ на вопрос