Рассмотрим следующий запрос:
select
corpus_date as alias
,lead(word, 1) over (partition by corpus order by word_count desc) lead
,max(word_count) over (partition by corpus) max_word_count
from
[publicdata:samples.shakespeare]
where corpus='othello' and length(word) > 10
limit 5
Это дает мне сообщение об ошибке Field 'alias' not found.
Но alias
используется только как псевдоним в этом запросе. Обратите также внимание, что ошибка исчезает, если я закомментирую либо псевдоним, либо функцию lead
, либо функцию min
. Ошибка также исчезнет, если я заменю lead
другой оконной функцией, такой как min
или sum
, в то время как ошибка останется, если я аналогичным образом заменю max
, поэтому необходимые ингредиенты кажутся
- функция
lead
- другая оконная функция
- поле с псевдонимом
Я хотел бы знать, как эти функции работают внутри, что вызывает эту загадочную ошибку.