Как сгладить столбец улья, который содержит данные JSON - PullRequest
0 голосов
/ 03 марта 2019

Существует таблица кустов только с одним столбцом, которая должна содержать JSON в каждой записи.Обратите внимание, что в каждой записи структура JSON может отличаться.Я хочу сгладить JSON и создать таблицу со всеми ключами JSON.Является ли это возможным?Если да, не могли бы вы предложить, как это сделать?спасибо!

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Вы можете попробовать что-то, как показано ниже:

Скажем, у вас есть столбец с данными JSON примерно так в таблице с именем json_test

|-----------------------------------------------------------|
| col1                                                      |
|-----------------------------------------------------------|
| {"variable1":123,"variable2":456,"variable3":789}         |                                          
|-----------------------------------------------------------|
| {"variable1":222,"variable2":333,"variable3":444}         |
-------------------------------------------------------------

И если выЕсли вы хотите разобрать это, вы можете запустить приведенный ниже оператор улья, чтобы разобрать его.Каждая строка может иметь свой формат JSON.Если запрос найдет атрибут, он вернет значение, иначе он вернет NULL

select get_json_object(col1,'$.variable1') as variable1,
get_json_object(col1,'$.variable2') as variable2,
get_json_object(col1,'$.variable3') as variable3 
from json_test

Выходные данные:

|variable1 |variable2 |variable3 |
|----------|----------|----------|
|123       |456       |789       |
|222       |333       |444       |
0 голосов
/ 03 марта 2019

Используйте JSONSerDe и определите расширенный набор столбцов или лучше определите только те столбцы, которые вам нужны.Только столбцы, определенные в таблице DDL, будут проанализированы, NULL будут загружены, если такие ключи отсутствуют в строке JSON.В любом случае вам нужно знать возможные ключи, чтобы создать таблицу со столбцами из JSON.

В качестве альтернативы вы можете преобразовать JSON в карту, если вы хотите извлечь ключ и значение, существующие в JSON, а JSON просто плоский, как в этом ответе: https://stackoverflow.com/a/54766529/2700344

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