GOOGLE ADS

Samstag, 30. April 2022

Wie tauschen Sie zwei Attribute in einer Array-Spalte in Bigquery aus?

Ich habe eine Tabelle mit zwei Spalten: group_id, students (Array of student). Jeder Schüler hat zwei Attribute: name und last_name. Wie tauschen Sie den Namen mit dem Nachnamen für jeden Schüler aus?

Students table:
group_id | students.name | students.last_name
---------------------------------------------
1 | Perez | Juan
---------------------------------------------
2 | Caicedo | Pedro

Ich muss students.name in students.last_name tauschen, hast du eine Idee?


Lösung des Problems

Sie können versuchen, den folgenden Ansatz in Betracht zu ziehen.

with a as (
select [struct("Perez" as name,"Juan" as last_name),
struct("Caicedo" as name,"Pedro" as last_name)]as students
)
select stdnts.name last_name, stdnts.last_name name
from a,unnest(students) as stdnts

Wir haben den verschachtelten Spaltennamen anstelle der Attributwerte ausgetauscht.

Von hier aus können Sie basierend auf den Abfrageergebnissen ein weiteres Schema mit den aktualisierten verschachtelten Spaltennamen für nameund erstellen last_name.

Oder wenn Ihr Schema zu groß ist und es in BigQuery nicht neu erstellt werden kann, können Sie Ihre Tabelle überschreiben, indem Sie die Array-Spaltentabelle der Schüler löschen und sie dann mit den aktualisierten verschachtelten Spaltennamen neu erstellen und die Daten weiterhin basierend auf der obigen Abfrage beibehalten.

Der Ansatz leitet sich von dieser Dokumentation zum Ändern von Spaltennamen ab, aber stattdessen werden wir die Namen der verschachtelten Spalten ändern.

Keine Kommentare:

Kommentar veröffentlichen

Warum werden SCHED_FIFO-Threads derselben physischen CPU zugewiesen, obwohl CPUs im Leerlauf verfügbar sind?

Lösung des Problems Wenn ich das richtig verstehe, versuchen Sie, SCHED_FIFO mit aktiviertem Hyperthreading ("HT") zu verwenden, ...