2016-07-04 4 views
2

Der folgende Code erzeugt das Ergebnis, wobei die Variable nt4 für die Zeilen 1,2 und 3 null ist. Das sieht seltsam aus. Ist das ein Fehler? Der Wert sollte für alle Zeilen der Fensterfunktion 'von' sein.Warum funktioniert nth_value in BigQuery für Zeilen> = n?

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] 

Antwort

0

Dies ist kein Fehler. Es ist wie erwartet

Der Grund ist - wenn Sie ORDER BY ohne Angabe von ROWS oder RANGE verwenden, impliziert ORDER BY, dass das Fenster vom Anfang der Partition bis zur aktuellen Zeile reicht. Siehe Window functions für Details

Zwischenzeitlich kurze Erklärung:

Zum Beispiel für „kinghenryviii“ Partition
Die erste Zeile hat Fenster mit nur einer Zeile mit Wort - „the
Zweite Reihe hat zwei Reihen in Fenster - "the" und "I"
Third - "the", "I" und "and"

Bisher ein s Sie sehen, dass es hier keine vierte Reihe ist somit der Wert

null Für her thare sind vier Reihen in Fensterreihe - „the“, „I“, „and“ und „of“ Für fünfte - „the“ „I“, „and“, „of“ und „to

Wie Sie sehen, mit hervor Reihen beginnen - nach Wert verfügbar ist, und es ist „of

Hoffnung ist klar und hat Ihnen geholfen

+0

Aber 'LEAD' gibt nicht null zurück. Ist die Semantik des Fensters für verschiedene Funktionen unterschiedlich? –