Ich habe eine BigQuery-Tabelle mit einem ähnlichen Schema wie im Bild gezeigt, Zeilen, die Arrays von Strukturen enthalten können. Welche Syntax sollte ich verwenden, um eine itemDelta.typeId auf einen anderen Wert zu ändern/zu aktualisieren? (Siehe SQL wenn unklar)Aktualisieren eines Werts in einem ARRAY in einer BigQuery-Tabelle
UPDATE itemInformation
SET itemDelta.typeId = 9426
WHERE itemDelta.typeId = 2424;
UPDATE:
Eine Arbeit um ich gefunden ist eine User-Defined-Funktion zu implementieren. Mit BigQuery können Sie benutzerdefinierte Funktionen mithilfe von JavaScript erstellen. Hier
ist der Code:
CREATE TEMPORARY FUNCTION edit(table ARRAY<STRUCT<typeId INT64, amount INT64>>)
RETURNS ARRAY<STRUCT<typeId INT64, amount INT64>>
LANGUAGE js AS """
var i;
for(i = 0; i < table.length; i++)
{
if(table[i].typeId == 2452)
{
table[i].typeId = 1000
}
}
return table;
""";
UPDATE itemInformation
SET itemDelta = edit(itemDelta)
where true
Vorschlag - verwenden JS UDF nicht, ob es einen Weg gibt, gleiche Logik mit reinem SQL auszudrücken. –
Sie haben eine niedrige Rate. Wichtig bei SO - Sie können die akzeptierte Antwort markieren, indem Sie das Häkchen links neben der abgegebenen Antwort unterhalb der Abstimmung setzen. Siehe http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work#5235 warum dies wichtig ist! Es ist auch wichtig, über die Antwort zu stimmen. Stimmen Sie Antworten ab, die hilfreich sind. ... Sie können überprüfen, was zu tun ist, wenn jemand Ihre Frage beantwortet - http://stackoverflow.com/help/someone-answers. Nach diesen einfachen Regeln erhöhen Sie Ihren eigenen Reputationswert und gleichzeitig halten Sie uns motiviert, Ihre Fragen zu beantworten: o) Bitte beachten Sie! –