Ich verwende die Google Cloud Node-Bibliotheken für BigQuery. Ich verwende den createQueryStream method Daten von BigQuery zu streamen:Google BigQuery Node-Bibliothek: Wie man Daten in Batches streamt?
var query = 'SELECT transfer_date, price, postcode FROM ';
query += '[table] ORDER BY transfer_date LIMIT 10000';
bigquery.createQueryStream(query)
.on('error', console.error)
.on('data', function(row) {
console.log(row);
})
.on('end', function() {
// All rows retrieved.
});
Dies gibt jede Zeile einzeln an die Konsole. Allerdings möchte ich meine Anwendung in Chargen aktualisieren, sagen alle 10.000 Ergebnisse. Wie ändere ich die Abfrage, um Daten in Blöcken von 10.000 zu streamen? Die hat eine autoPaginate
Option, aber ich verstehe nicht, wie man es benutzt.
Oder muss ich manuell eine Funktion schreiben, die jeweils 10.000 Zeilen abfeuert? Aber das scheint sehr ineffizient zu sein.
Danke. Wird das nicht ein Maximum von 10.000 Zeilen in der Anfrage zurückgeben? Ich würde gerne Millionen von Zeilen verarbeiten, aber jedes Mal, wenn 10.000 Zeilen verfügbar sind, ein Ereignis in meinem clientseitigen Code auslösen. – Richard
Ich habe die Antwort aktualisiert. Der Parameter maxResults ** steuert, wie viele Datensätze während der Paginierung auf jeder Seite enthalten sein müssen. Ich habe einen schnellen Test ausgeführt und es scheint, dass Sie nur die Gesamtzahl der Datensätze in der ** createQueryStream ** -Methode mit der LIMIT-Klausel in der Abfrage steuern können. ** maxApiCalls ** und ** maxResults ** wirken sich nur auf die interne Seitennummerierung aus. –