Как разобрать вложенную строку json в Snowflake? - PullRequest
0 голосов
/ 13 июля 2020

спасибо за чтение и надеюсь, что вы можете мне помочь.

Так выглядит моя строка json . Я изо всех сил пытаюсь найти способ разобрать его в Snowflake.

{"date":"2020-07-13T00:00:00.0000000","Reason":"{\"description\":\"Test\",\"alternates\":{},\"position\":10}","forename":"Tester","surname":"Test","title":"Mr","dateOfBirth":"2000-11-22T00:00:00.0000000"}

Когда я пытаюсь выполнить PARSE_ JSON (), я получаю следующую ошибку:

SQL Ошибка [100069] [22P02]: Ошибка синтаксического анализа JSON: отсутствует запятая, позиция 51

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

Пока мне не удалось разобрать это или создать регулярное выражение для замены кавычек после обратного sla sh.

Любая помощь приветствуется

Спасибо!

j c

Ответы [ 2 ]

0 голосов
/ 27 июля 2020

Мне удалось разобрать json с помощью Даррена. Также удалось перечислить любые новые ключи и атрибуты с боковым присоединением к плоскому подзапросу.

SELECT DISTINCT f.path, typeof (f.value) FROM REPORT_DATA, LATERAL FLATTEN (SR C, RECURSIVE => true) f WHERE TYPEOF (f.value)! = 'ОБЪЕКТ';

0 голосов
/ 13 июля 2020

JCB,

Я не могу воспроизвести вашу проблему. Вот что я использую:

WITH X AS (
  SELECT PARSE_JSON($1) AS MY_JSON
    FROM VALUES ($$
{
  "date": "2020-07-13T00:00:00.0000000",
  "Reason": "{\"description\":\"Test\",\"alternates\":{},\"position\":10}",
  "forename": "Tester",
  "surname": "Test",
  "title": "Mr",
  "dateOfBirth": "2000-11-22T00:00:00.0000000"
}
$$)
)
SELECT MY_JSON
  FROM X
;

Пожалуйста, укажите ТОЧНЫЙ SQL, который вы используете, чтобы другие здесь могли помочь вам лучше.

...