Ich finde es hilfreich, WITH
Blöcke zu verwenden, um Logik in einer Abfrage aufzulösen. Habe ich Recht, wenn ich denke, dass ich das nicht auf einem verschachtelten Feld innerhalb eines ARRAY
Ausdrucks machen kann? Ich kann in verschachtelte Abfragen trennen - das ist ausreichend, aber nicht ideal.WITH & UNNEST in BigQuery
Zum Beispiel funktioniert das:
SELECT
repository.url,
ARRAY(
SELECT
action
FROM (
SELECT
action
FROM
UNNEST(payload.pages))) action
FROM
`bigquery-public-data.samples.github_nested`
... aber nicht:
SELECT
repository.url,
ARRAY(
WITH
p AS (
SELECT
action
FROM
UNNEST(payload.pages))
SELECT
action
FROM
p) action
FROM
`bigquery-public-data.samples.github_nested`
... Error: Unrecognized name: payload at [9:14]
. Möglicherweise, weil die Tabelle für diesen Block WITH
noch nicht definiert wurde?
Gibt es eine andere Möglichkeit, dies zu tun?
EDIT: Dies ist Spielzeug Abfrage um das Problem zu veranschaulichen, nicht repräsentativ für die tatsächlichen Anfragen sind wir
Dank für den Versuch. Dies ist eine Spielzeugabfrage nur für Anzeigezwecke; die tatsächlichen Abfragen sind komplexer – Maximilian
der Punkt meiner Antwort war - Sie können nicht mit WITH innerhalb von ARRAY oder einem anderen Ausdruck. Und ich habe gerade versucht, dir die Richtung zu zeigen, falls du nicht bemerkt hast, dass deine Anfrage ein wenig übertrieben war. –
Ich schätze deine Bemühungen! – Maximilian