Как выполнить синтаксический анализ Json в AWS Athena?

#python #sql #json #amazon-web-services #amazon-athena

Вопрос:

Я хочу проанализировать столбец JSON в Athena, но у меня проблема в одном столбце. Столбец содержит escape-символ. Я не знаю, есть ли в этом проблема. Я хочу добраться до Сообщения. Вы можете увидеть ниже примеры данных и сообщение в разделе «Возврат». Спасибо

 Sample Code 
CAST(json_extract_scalar(callparameters, '$return.Message') AS VARCHAR) AS Message
 

Это JSON.

 {"inputs":{"usagespecid":"null","playsessionid":"null","satellitetypecd":""ERU"","channelcontentid":"231"},
"return":"{"Message":"Do not person you have called "}"}    {"date":"2021-07-26","epoch":"1627"}    {"userpartyid":"23","userloginkey":"23","usercountrycode":"br","sessionkey":"23","client":{"name":"SMR","id":"1"},"usermainsatellitetype":"DS","userserviceaccountids":["23"],"usergeolocationid":"53","userpartyroleid":"76"}
 

Комментарии:

1. Это недопустимый json. Это массив? Это разные строки? Не могли бы вы, пожалуйста, это исправить?

Ответ №1:

Если вы возьмете только объект, который содержит return , вы можете проанализировать return в json, json_parse так как он содержит кодированную строку, а не объект json:

 WITH dataset AS (
    SELECT * FROM (VALUES          
       (JSON '{
   "inputs":{
      "usagespecid":"null",
      "playsessionid":"null",
      "satellitetypecd":""ERU"",
      "channelcontentid":"231"
   },
   "return":"{"Message":"Do not person you have called "}"
}')
 ) AS t (json_string))


SELECT json_extract_scalar(json_parse(json_extract_scalar(json_string, '$.return')), '$.Message')
FROM dataset
 

Выход:

_col0
Не тот человек, которому вы позвонили