首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在AWS Athena Json查询中使用WHERE子句?

如何在AWS Athena Json查询中使用WHERE子句?
EN

Stack Overflow用户
提问于 2021-02-24 12:56:20
回答 1查看 432关注 0票数 0

我有一个表,其中存储了来自Json对象的一些信息:

表:

代码语言:javascript
运行
复制
investment
    unit(string)
    data(string)

如果运行查询SELECT * FROM "db"."investment" limit 10;我得到了以下结果:

代码语言:javascript
运行
复制
Unit Data
CH  [{"from":"CH","when":"2021-02-16","who":"pp@gmail.com"}]
AB  [{"from":"AB","when":"2020-02-16","who":"jj@gmail.com"}]

现在,我运行以下基本查询在Json嵌套对象中返回值:

SELECT json_extract_scalar(Data, '$[0].who') email FROM "db"."investment";

我得到了以下结果:

代码语言:javascript
运行
复制
email
jj@gmail.com
pp@gmail.com

如何使用过滤此查询WHERE子句只返回一个值:

我已经尝试过了,但显然它不能像普通的包含行和列的SQL表那样工作:

SELECT json_extract_scalar(Data, '$[0].who') email FROM "db"."investment" WHERE email = "pp@gmail.com";

有什么帮助吗?

EN

Stack Overflow用户

回答已采纳

发布于 2021-02-24 13:10:28

你的问题似乎有几个打字错误。

  • DateUnit Date可能应该是Data
  • 什么是key指的是。也许你的意思是Data

另外,请注意,athena不区分大小写,列名被转换为小写(即使您引用它们)。中的json文档中提取电子邮件的完整表达式。where子句。查询的其余部分无法访问定义的列别名。

下面是一个自包含的示例:

代码语言:javascript
运行
复制
with test (unit, data) as (
values
('CH',  JSON '[{"from":"CH","when":"2021-02-16","who":"pp@gmail.com"}]'),
('AB',  JSON '[{"from":"AB","when":"2020-02-16","who":"jj@gmail.com"}]')
)
select json_extract_scalar(data, '$[0].who') email
from test
where json_extract_scalar(data, '$[0].who') = 'pp@gmail.com';

outputs: 
| email        |
+--------------+
| pp@gmail.com |
票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66344925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档