Вы можете сгладить массив JSON, а затем извлечь поле Last Name
следующим образом:
WITH SampleData AS (
SELECT '[ {"Name":"John", "Last Name": "Doe"}, {"Name":"Frank", "Last Name": "Doe"}]' AS text
)
SELECT json_object.value:"Last Name" AS last_name
FROM SampleData, LATERAL FLATTEN (input => PARSE_JSON(text)) json_object;
Это возвращает:
LAST_NAME
"Doe"
"Doe"
В запросе LATERAL FLATTEN
part - это то, что указывает на возвращение строки для каждой записи в тексте после анализа ее как JSON, а затем в списке SELECT
, json_object.value
возвращает значение для этой строки, а :"Last Name"
возвращает поле с именем Last Name
из него. Часть WITH SampleData (...)
просто создает некоторые встроенные данные со столбцом VARCHAR
с именем text
.
Если вы хотите одну строку для каждой строки ввода, где последние имена находятся в массиве, вы можете использовать запрос этой формы:
WITH SampleData AS (
SELECT '[ {"Name":"John", "Last Name": "Doe"}, {"Name":"Frank", "Last Name": "Doe"}]' AS text
)
SELECT ARRAY_AGG(json_object.value:"Last Name") AS last_names
FROM SampleData, LATERAL FLATTEN (input => PARSE_JSON(text)) json_object
GROUP BY text;
Возвращает:
LAST_NAMES
[ "Doe", "Doe" ]