AWS Афина работает с вложенными массивами, пытается найти поле в массиве - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть 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 возвратил строку дважды, которая первоначально была одной строкой, потому что есть 2 объекта в этом массиве. Следующая часть, которую я хотел добавить к запросу sql, была

select hashtag['text'] as htag к существующему выбору, который должен вернуть еще 2 строки, но на этот раз возвращая LUCAS и WayV в отдельных строках в том же столбец с именем 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)

Я предполагаю, что это потому, что у меня есть другой массив в этом массиве ..?

Заранее спасибо

1 Ответ

0 голосов
/ 27 апреля 2020

Я не совсем уверен, где вы добавляете выражение hashtag['text'], поэтому я не могу с уверенностью сказать, в чем ваша проблема, но у меня есть два предложения для вас:

  • Ошибка говорит о том, что hashtag имеет тип row(text varchar, …), что говорит о том, что hashtag.text должно работать.
  • Если это не сработает, вы можете попробовать использовать element_at Например element_at(hashtag, 'text').
...