Я извлекаю данные JSON из столбца BigQuery, используя JSON_EXTRACT
. Теперь я хочу извлечь списки значений и запустить агрегированные функции (например, AVG
) против них. Тестирование выражения JsonPath .objects[*].v
преуспевает на http://jsonpath.curiousconcept.com/. Но запрос:Как я могу применить агрегированные функции к данным, извлеченным из JSON в Google BigQuery?
SELECT
JSON_EXTRACT(json_column, "$.id") as id,
AVG(JSON_EXTRACT(json_column, "$.objects[*].v")) as average_value
FROM [tablename]
бросает ошибку разобрать JsonPath на BigQuery. Возможно ли это на BigQuery? Или мне нужно предварительно обработать мои данные, чтобы запускать агрегированные функции в отношении данных внутри моего JSON?
Мои данные выглядит примерно так:
# 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
}
]
}
Это связано с другим question.
Обновление: Проблема может быть упрощена путем запуска двух запросов. Сначала запустите JSON_EXTRACT
и сохраните результаты в представлении. Во-вторых, запустите функцию агрегата против этого представления. Но даже тогда мне нужно исправить выражение JsonPath $.objects[*].v
, чтобы предотвратить JSONPath parse error
.
Все, что от jsonpath, который может возвращать список вещей (например: [*], [: 2], ...) Безразлично Кажется, он работает. –
Задавая вопрос о '*': http://stackoverflow.com/questions/28719880/bigquery-jsonpath-values-of-json-array –