Ich extrahiere JSON-Daten aus einer BigQuery-Spalte mit JSON_EXTRACT
. Jetzt möchte ich Listen von Werten extrahieren und Aggregatfunktionen (wie AVG
) gegen sie ausführen. Das Testen des JsonPath-Ausdrucks .objects[*].v
erfolgt erfolgreich unter http://jsonpath.curiousconcept.com/. Aber die Abfrage:Wie kann ich Aggregatfunktionen auf Daten anwenden, die aus JSON in Google BigQuery extrahiert wurden?
SELECT
JSON_EXTRACT(json_column, "$.id") as id,
AVG(JSON_EXTRACT(json_column, "$.objects[*].v")) as average_value
FROM [tablename]
wirft einen JsonPath Parse-Fehler auf BigQuery. Ist dies bei BigQuery möglich? Oder muss ich meine Daten vorverarbeiten, um Aggregatfunktionen gegen Daten in meinem JSON auszuführen?
sieht Meine Daten wie folgt aus:
# Record 1
{
"id": "abc",
"objects": [
{
"id": 1,
"v": 1
},
{
"id": 2,
"v": 3
}
]
}
# Record 2
{
"id": "def",
"objects": [
{
"id": 1,
"v": 2
},
{
"id": 2,
"v": 5
}
]
}
Diese auf einen anderen question verwandt ist.
Aktualisierung: Das Problem kann durch Ausführen von zwei Abfragen vereinfacht werden. Führen Sie zuerst JSON_EXTRACT
aus und speichern Sie die Ergebnisse in einer Ansicht. Führen Sie zweitens die Aggregatfunktion für diese Ansicht aus. Aber selbst dann muss ich den JsonPath-Ausdruck $.objects[*].v
korrigieren, um die JSONPath parse error
zu verhindern.
Alles, was von jsonpath, die eine Liste der Dinge zurückkehren können (zB: [*], [2], ...) doesn Es scheint nicht zu funktionieren. –
Fragen speziell über das '*': http://StackOverflow.com/Questions/28719880/Bigquery-Jsonpath-Values-of-JSon-array –