我有一个包含以下两列的athena db表,我需要从“用户数据”中获取姓名、性别和年龄
结构:
id - string
user_date - string
数据:
id user_data
1 {'name': 'some_name', 'gender': 'male', 'age': '36'}
``` `user_data` 是字典字符串。通过将其强制转换为json来获取值:
CAST(user_data as JSON) as user_data_json
然后:
json_extract(user_data_json, '$.name') AS name
因为字典字符串是单引号 `CAST()` 失败。
还尝试用双引号替换单引号:
replace(user_data,'"',"'")
然后将其转换为json也失败了:
语法错误:行1:30:列“”无法解析*
如何获得这些值?
1条答案
按热度按时间ttp71kqs1#
问题出在你的
replace()
功能;不能使用双引号而不是单引号来声明文本字符串-双引号表示标识符(如列名或表名),因此会出现错误。要将嵌入的单引号替换为双引号,可以执行以下操作:
剩下的代码应该可以正常工作: