Löschen / Aktualisieren von Tabelleneinträgen durch Verknüpfen von 2 Tabellen in Google BigQuery ohne Import / Export

Wir haben einen Usecase, in dem wir Hunderte Millionen Einträge in einer Tabelle haben und Probleme haben, diese weiter aufzuteilen. 99% der Vorgänge sind nur anhängbar. Es gibt jedoch gelegentliche Aktualisierungen und Löschvorgänge, die laut Google nur möglich sind, wenn eine Tabelle gelöscht und eine neue mit den neuesten Daten erstellt wird.

Da es sich um eine Menge Daten handelt und wir die Tabellen innerhalb von 30 Sekunden aktualisieren möchten, haben wir über die Möglichkeit nachgedacht, einem @ beizutrete Originaltisch mit einerRefresher Table in einer Weise, dass wir nur Einträge haben, die in der Originaltabelle, aber nicht in der Auffrischungstabelle (bei Löschung) erscheinen, oder Elemente mit Daten aus der Auffrischungstabelle schreiben, wenn sie gefunden werden (bei Aktualisierung). Ausgabe / Ziel sollte @ seNeue Tabelle, das wir dann mit WRITE_TRUNCATE (overwrite) zurück in die Originaltabelle kopieren würden. Wenn die Aktualisierung zu komplex zu sein scheint, könnten wir mit einer Nur-Löschen-Logik leben und die aktualisierten Elemente selbst neu einfügen.

Ist das möglich? Welche Art von Verbindung scheint am besten zu passen? Wir würden unsere Aktualisierungen per Stream in die Auffrischungstabelle einfügen und die Originaltabelle regelmäßig bereinigen. Wir müssten nicht für das erneute Einfügen der gesamten Originaltabelle (egal ob Zeit oder Geld) zahlen, sondern nur für das einmalige Abfragen dieser wenigen Streaming-Einfügungen in die Update-Tabelle.

EDIT: Wir können veraltete Daten abfragen, bis die regelmäßige Zusammenführung stattgefunden hat. Wir können auch Anfragen während der Wartung für kurze Zeit anhalten.

Alle Gedanken willkommen.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage