2012-06-15 19 views
9

Gibt es eine Möglichkeit, Zeilennummer für jeden Datensatz in BigQuery zu erhalten? (Von den Spezifikationen habe ich nichts darüber gesehen) Es gibt eine NTH() - Funktion, aber das gilt für wiederholte Felder.Zeilennummer in BigQuery?

Es gibt einige Szenarien, in denen die Zeilennummer in BigQuery nicht erforderlich ist, z. B. die Verwendung der TOP() - oder LIMIT-Funktion. Ich brauche es jedoch, um einige analytische Funktionen wie eine kumulative Summe() zu simulieren. Zu diesem Zweck muss ich jeden Datensatz mit einer fortlaufenden Nummer identifizieren. Irgendeine Abhilfe dafür?

Vielen Dank im Voraus für Ihre Hilfe!

Leo

Antwort

0

Wir stellen keine Zeilenbezeichner. Können Sie Ihren Daten einfach einen hinzufügen, wenn Sie sie importieren?

+0

Vielen Dank für Ihre Antwort Ryan. Selbst wenn wir Zeilen-IDs in unseren Importen importieren könnten, wäre das nicht sinnvoll, da wir nach dem Anwenden einer Gruppenfunktion über die Originaldaten die Zeilennummer benötigen. –

+0

Sie suchen also eine Ergebniszeile #, nicht eine Zeile #, die jede Zeile der zugrunde liegenden Daten darstellt? –

+1

Das Hinzufügen einer _row id_ beim Anhängen von Daten an eine Tabelle klingt nicht praktisch. – user454322

0

Ich dachte, vielleicht könnte ich das Fehlen einer ROW_NUMBER() -Funktion umgehen, indem ich eine Tabelle mit sich selbst auf einem < = und dann eine Zählung (*) auf die Ergebnisse (wie Sie es manchmal in MySQL tun)). Es stellte sich heraus, dass BigQuery nur Joins auf Straight-Up "=" unterstützt.

Nochmals vereitelt. Ich denke, das ist in BQ unmöglich.

19

Gute Neuigkeiten: BigQuery verfügt jetzt über eine row_number-Funktion.

Einfaches Beispiel:

SELECT [field], ROW_NUMBER() OVER() 
FROM [table] 
GROUP BY [field] 

Komplexere, Arbeitsbeispiel:

SELECT 
    ROW_NUMBER() OVER() row_number, 
    contributor_username, 
    count, 
FROM (
    SELECT contributor_username, COUNT(*) count, 
    FROM [publicdata:samples.wikipedia] 
    GROUP BY contributor_username 
    ORDER BY COUNT DESC 
    LIMIT 5) 
+0

Als Fenster hinzugefügt Funktion: https://cloud.google.com/bigquery/query-reference –

+0

Wie filtern wir das? Spalte ROW_NUMBER? (d.h. ROW_NUMBER()> 10 usw.) – Praxiteles

+0

Unterabfrage. Bitte posten Sie neue Frage für die vollständige Antwort, wenn nötig! –