我在雅典娜运行一个查询,如下所示:

SELECT element_at(col_name,1).entities FROM "db_name"."the_table" limit 10;

我得到了一个嵌套的jsons/dicts数组,如下所示:

[{country=US,content=content},{country=DE,content=content},{country=GB,content=content}]
[]
[{country=HK,content=content},{country=IN,content=content},{country=GB,content=content}]
[]

我想创建一个查询来提取行,如果是country=US行的话.

所以我试着:

SELECT * FROM "db_name"."the_table" WHERE any_match(element_at(col_name,1).entities, e-> e.country= 'US') limit 10;

但是这个崩溃了,说这不是一场争吵

我想提取国家/地区为美国的行.

推荐答案

any_match(element_at(col_name,1).entities, e -> e.country = 'US')应该为ROW类型工作.

还有另一种类型可以用这种方式写入输出-它是MAP,所以你可以try :

WHERE any_match(element_at(col_name,1).entities, e -> e['country'] = 'US')

或(如果密钥是可选的):

WHERE any_match(element_at(col_name,1).entities, e-> element_at(e, 'country') = 'US')

Sql相关问答推荐

用于平均多个数据并与一个数据点进行比较以判断偏移量的SQL查询

如何转换和汇总行数

SQL Select 最小优先级

返回找到的最小和最大row_number()spark SQL

重用传递给 node 的参数-postgres upsert查询

使用CTE在SNOWFLAKE中创建临时表

按行值出现的顺序对行值进行分组

确定小数中使用的精度位数

将空 JSON 数组添加到 SQL Server 表列中的 JSON 字符串

计算 ID 满足条件的次数

在presto sql中解析带有区域的时间格式

如何在第二个 INSERT 中使用第一个 INSERT 自动生成的 ID

SQL for Smarties 类型问题:从表中 Select 记录,并对某些值进行分组

计算 BigQuery 中列的中值差 - 分析函数不能作为聚合函数的参数

BigQuery数组是否包含NULL值的判断方法

当该日期的至少两条记录具有相同的持续时间或至少一条记录的持续时间为 0 时,如何标记该日期的所有记录

PostgreSQL - 递归地聚合来自不同列的属性

postgres按组消除分区中的NULLS

PostgresQL-根据另一列找到 3 个最低值

聚合 Athena 中的列