как установить условие для массивов в предложении where [BigQuery] - PullRequest
0 голосов
/ 29 апреля 2019

У меня есть массив в моей таблице - что-то вроде этого:

enter image description here

Мне нужно учитывать только те строки, где top_authors.author = Caivi и top_authors.total_score = 3

Я пытался использовать функцию unnest, но все равно получаю сообщение об ошибке «Нет соответствующей подписи для оператора = для типов аргументов: ARRAY, STRING. Поддерживаемые подписи: ANY = ANY»

Не могли бы вы помочь Ми с этим?

1 Ответ

3 голосов
/ 29 апреля 2019

Вы можете unnest() в подзапросе в предложении where:

where exists (select 1
              from unnest(top_authors) ta
              where ta.author = 'Caivi' and ta.total_score = 3
             )

Или вы можете сделать это в основном запросе:

select . . . 
from t cross join
     unnest(top_authors) ta
where ta.author = 'Caivi' and ta.total_score = 3;

Если у вас нет дубликатов в массиве, они должны дать эквивалентные результаты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...