Считать строку как массив <string>в улье sql - PullRequest
2 голосов
/ 20 июня 2020

Я работаю над ульем, читая некоторые поля из строки JSON через запрос улья. Одно поле в строке JSON на самом деле представляет собой массив строк, но хранится как строка, например {... , 'arrText' : '["a","b","c"]',... }

Я хочу прочитать эту строку как массив строк в самом запросе улья.

hive (joshua)> 
              > select some_function('["a","b","c"]');
OK
["a","b","c"]
Time taken: 0.134 seconds, Fetched: 1 row(s)

Могу ли я иметь что-нибудь (встроенный улей) вместо some_function и сделать это вместо того, чтобы писать для него UDF?

Заранее спасибо

1 Ответ

2 голосов
/ 20 июня 2020

Один из способов сделать это без udf - использовать некоторые предопределенные функции улья, такие как split, regex extract et c

select split(regexp_extract('["a","b","c"]','^\\["(.*)\\"]$',1),'","');
=> ["a","b","c"]

Даже он может обрабатывать промежуточные запятые

select split(regexp_extract('["a","b,c","d"]','^\\["(.*)\\"]$',1),'","');
=> ["a","b,c","d"]

Хоп помогает

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