AWS Athena使用嵌套数组,试图在数组中搜索字段



我有一个sql查询:

SELECT id_str, entities.hashtags
FROM tweets, unnest(entities.hashtags) as t(hashtag)
WHERE cardinality(entities.hashtags)=2  and id_str='1248585590573948928'
limit 5

返回:

id_str              hashtags
1248585590573948928 [{text=LUCAS, indices=[75, 81]}, {text=WayV, indices=[83, 88]}]
1248585590573948928 [{text=LUCAS, indices=[75, 81]}, {text=WayV, indices=[83, 88]}]

unnesting已经返回了两次原来是一行的行,这是因为这个数组中有两个对象。我想添加到sql查询的下一部分是

select hashtag['text'] as htag到现有的select,该select仍应返回2行,但这次在同一列中的单独行中返回LUCASWayV,名为htag

但我犯了这个错误——你知道我做错了什么吗?

Your query has the following error(s):
SYNTAX_ERROR: line 1:8: '[]' cannot be applied to row(text varchar,indices array(bigint)), varchar(4)

我想这是因为我在这个数组中有另一个数组?

提前感谢

我不完全确定你在哪里添加hashtag['text']表达式,所以我不能自信地说你的问题是什么,但我有两个建议供你尝试:

  • 错误表明hashtag属于row(text varchar, …)类型,这表明hashtag.text应该工作
  • 如果不起作用,您可以尝试使用element_at,例如element_at(hashtag, 'text')

我也遇到了这个问题,由于没有提供解决方案,我喜欢参与:在运行数组之后,可以使用来寻址结果。引用而不是":

WITH dataset AS (
SELECT ARRAY[
CAST(ROW('Bob', 38) AS ROW(name VARCHAR, age INTEGER)),
CAST(ROW('Alice', 35) AS ROW(name VARCHAR, age INTEGER)),
CAST(ROW('Jane', 27) AS ROW(name VARCHAR, age INTEGER))
] AS users
)
SELECT
user,
user.name
FROM dataset
cross join unnest (users) as t(user)

相关内容

  • 没有找到相关文章

最新更新