извлечь данные из Redhsift - PullRequest
       12

извлечь данные из Redhsift

0 голосов
/ 28 августа 2018
elements
[{"name":"email",
  "value":"abc@gmail.com",
   "nodeName":"INPUT",
   "type":"text"}, 

 {"name":"password",
  "value":"*****",
  "nodeName":"INPUT",
  "type":"password"}, 

  {"name":"checkbox",
   "value":null,
   "nodeName":"INPUT",
   "type":"checkbox"}]

У меня есть такие данные в красном смещении. Как извлечь из этого значение abc@gmail.com. Этот запрос для красного смещения. Пожалуйста, помогите мне с SQL. Элементы - это имя столбца, а значение начинается с [].

Запрос, который я пробовал: Выбрать Я бы, json_extract_path_text (ELEMENTS, 'name') как name1 из таблицы

ошибка: [XX000] [500310] Amazon Недопустимая операция: ошибка синтаксического анализа JSON Подробности: ------------------------------ ----------------- ошибка: код ошибки синтаксического анализа JSON: 8 ...

1 Ответ

0 голосов
/ 28 августа 2018

Вы можете создать UDF в python, для вашего случая я создал его, пожалуйста, протестируйте и отредактируйте как подходит:

create or replace function f_py_json (jsonVar varchar(512), 
jsonElemvarchar(10), occ integer)
  returns varchar(512)
stable
as $$
  import json
  asJson = json.loads(jsonVar)
  name_list = []
  ret=str(asJson['elements'][occ][jsonElem])
  return ret
$$ language plpythonu;

select f_py_json (id, 'value', 1) from test;

-- Input is {"elements":[{"name":"email","value":"abc@gmail.com"},{"name":"password","value":"*****"}]}
...