2016-07-04 73 views
2

以下代碼會生成結果,其中變量nt4對於行1,2和3爲空。這看起來很奇怪。這是一個錯誤?對於窗口函數中的所有行,該值應該是'of'。爲什麼在顯示行> = n時,BigQuery中的nth_value函數會顯示?

SELECT 
    word, 
    word_count, corpus, 
    NTH_VALUE(word,4) OVER (PARTITION BY corpus ORDER BY word_count DESC) nt4, 
    rank(word) over (PARTITION BY corpus ORDER BY word_count DESC) rank 
FROM 
    [publicdata:samples.shakespeare] 

回答

0

這不是一個錯誤。這與預期的一樣

原因是 - 如果使用ORDER BY而不指定ROWS或RANGE,ORDER BY意味着窗口從分區的開始處延伸到當前行。見Window functions的細節

同時,快速的解釋:

例如,對於「kinghenryviii」分區
的第一行只有一個用字行窗口 - 「the
第二排有兩行窗口 - 「the」 和 「I
三 - 「the」, 「I」 和 「and

到目前爲止一就是你看到這裏沒有第4行因此值爲null

對於第四排thare在窗口四行 - 「the」,「I」,「and」和「of」 第五 - 「the」 「I」,「and」,「of」和「to

正如你看到的,從第四行 - 第四值可用,這是「of

希望這是明確的,幫你

+0

但是'LEAD'不會'返回null。對於不同的功能,窗口的語義是不同的? –

相關問題