Im Anschluss an die Beispiele hier bei https://cloud.google.com/bigquery/sql-reference/dml-syntax gefunden anhängen, kamen wir mit einer Art und Weise, die wir die 3. Stufe der Tabelle aktualisieren (specifications.dimensions) als solche:-Update 3. Ebene geschachtelten Tabelle einen Datensatz
UPDATE sd97dwo.DetailedInventory
SET specifications.dimensions =
STRUCT<depth FLOAT64, height FLOAT64, width FLOAT64>(1, 2, 3)
WHERE
product like '%washer%'
AND EXISTS(select 1 from unnest(comments) as c where c.comment like '%comment%')
Was wir jetzt zu tun versuchen, ist, die Tabelle zu aktualisieren, um einen Datensatz an dieselbe Dimensionsstruktur anzuhängen. Die verschiedenen Wege, die wir versuchen, sind jedoch nicht erfolgreich. Wollte sehen, ob jemand irgendwelche Ideen hatte. Die nächstgelegene wir bekamen, war das unten, aber natürlich gibt alle Datensätze (wie mehrere Ergebnisse) für specifications.dimensions, so dass wir den Fehler „Scalar Unterabfrage erzeugt mehr als ein Element“
UPDATE sd97dwo.DetailedInventory
SET specifications.dimensions
= (SELECT specifications.dimensions
UNION ALL
SELECT STRUCT<depth FLOAT64, height FLOAT64, width FLOAT64>(4.0,5.0,6.0))
WHERE
product like '%washer%'
AND EXISTS(select 1 from unnest(comments) as c where c.comment like '%comment%')
Andere aber könnte verwandt sein, wie haben Sie die harte Grenze von ** 48 ** maximale UPDATE/DELETE-Anweisungen pro Tag pro Tabelle überwunden? Oder versuchen, damit umzugehen? https://cloud.google.com/bigquery/sql-reference/data-manipulation-language – Pentium10
Unser allgemeiner Gedanke ist, dass Google zu dem Zeitpunkt, an dem wir tatsächlich auf diese Ebene der Aktualisierungen kommen, bereit sein wird, die Quoten wie bei den meisten anderen zu erhöhen Dinge. Solange jedoch die Arbeit hinter den Kulissen eine komplett neue Tabelle mit den aktualisierten Feldern erstellt, werden wir aufgrund der Kosten/Zeit vor einer starken Nutzung zurückschrecken. Ich versuche nur, Vor- und Nachteile zu beweisen und die Syntax zu verstehen. Beachten Sie auch, dass es sich um Aktualisierungsvorgänge handelt und nicht um aktualisierte Felder. Wenn Sie also die meisten Ihrer Datensätze in einem einzigen Durchgang aktualisieren können (mit Joins oder mit e), benötigen Sie möglicherweise nicht so viele Tabellen pro Tabelle. – chillerm
Ich bin besorgt, dass immer noch nicht passen, da das Abfrage-Limit 256K ist, die ein bisschen klein ist, wenn Sie die Werte in die Anweisungen setzen möchten. Auch wenn Sie die geänderten Werte in eine Tabelle setzen und das Update mit einem Join aus dieser Tabelle ausgeben, ist das ein wenig trickreich und schränkt die Verwendung ein. Nur Bedenken, die ich sehe. – Pentium10