Sto estraendo i dati JSON da una colonna BigQuery utilizzando JSON_EXTRACT
. Ora voglio estrarre liste di valori ed eseguire funzioni aggregate (come AVG
) contro di loro. Il test dell'espressione JsonPath .objects[*].v
ha esito positivo su http://jsonpath.curiousconcept.com/. Ma la domanda:Come posso applicare funzioni di aggregazione ai dati estratti da JSON in Google BigQuery?
SELECT
JSON_EXTRACT(json_column, "$.id") as id,
AVG(JSON_EXTRACT(json_column, "$.objects[*].v")) as average_value
FROM [tablename]
getta un errore di analisi JsonPath su BigQuery. È possibile su BigQuery? Oppure ho bisogno di preelaborare i miei dati per eseguire funzioni aggregate rispetto ai dati all'interno del mio JSON?
miei dati è simile a questo:
# 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
}
]
}
Questo è legato ad un altro question.
Aggiornamento: Il problema può essere semplificato eseguendo due query. Innanzitutto, esegui JSON_EXTRACT
e salva i risultati in una vista. In secondo luogo, esegui la funzione aggregata contro questa vista. Ma anche in questo caso ho bisogno di correggere l'espressione JsonPath $.objects[*].v
per impedire il JSONPath parse error
.
Qualsiasi cosa, da jsonpath che può restituire un elenco di cose (per esempio: [*], [: 2], ...) doesn sembra funzionare. –
Chiedendo specificamente il '' ': http://stackoverflow.com/questions/28719880/bigquery-jsonpath-values-of-json-array –