Я довольно новичок в BigQuery (3-й день использования этого без обучения), я просто пытаюсь размахивать вокруг вложенных полей и т. Д.С помощью Flatten выберите, где var1 (не повторяется) = "abc" из таблицы bigquery, которая содержит несколько вложенных переменных?
Я рассмотрел следующие ресурсы и использовал данные peopledata пример на BigQuery DOCS ссылке Google
https://cloud.google.com/bigquery/docs/data
Я хотел бы запустить ниже запрос:
select *
from [dataset.tableid]
where fullname = 'John Doe'
Если я запустил это, я получаю следующее сообщение об ошибке:
Ошибка: не удается вывести несколько независимо повторяющихся полей одновременно. Найдено children_age и citiesLived_place
От чтения выше статьи это не представляется возможным, потому что вам нужно, чтобы сгладить результаты, которые от того, что я могу понять, просто дублирует все откл повторен переменные т.е.
FULLNAME | возраст | пол | Children.name | children.age
John Doe | 22 | Мужской | Джон | 5
John Doe | 22 | Мужской | Джейн | 7
Одно из указанных выше статей говорят о том, что вы все еще можете использовать операторы с помощью функции Свести в BigQuery:
select fullname,
age,
gender,
citiesLived.place
FROM (FLATTEN([dataset.tableId], children))
WHERE
(citiesLived.yearLived > 1995) AND
(children.age > 3)
GROUP BY fullName, age, gender, citiesLived.place
Если изменить это:
select *
FROM (FLATTEN([dataset.tableId], children))
WHERE fullname = 'John Doe'
Тогда это работает отлично и дает мне то, что мне нужно, если я перейду к этому:
select *
FROM (FLATTEN([dataset.tableId], citieslived))
WHERE fullname = 'John Doe'
Затем я получаю f ошибка ополнения:
Ошибка: Невозможно одновременно выводить несколько независимо повторяющихся полей. Найдены children_age и городаLived_yearsLived
Может кто-нибудь объяснить, почему это будет работать сглаживанием на основе «Дети», но не «Города, живущие» и как узнать, какие переменные использовать в сглаживании с более сложными наборами данных с несколькими вложенными переменными?
Спасибо заранее
Есть ли причина попытаться сделать это с использованием устаревшего SQL? Вместо этого я бы предложил использовать стандартный SQL, поскольку упрощает его преобразование на основе массива. –
Привет Эллиот, спасибо за ваш быстрый ответ, извините, я даже не знал, что у bigquery были два SQL-диалекта. Позвольте мне взглянуть на это, чтобы узнать о миграции и почему мы используем устаревший язык. Если у вас есть указатели на использование стандартного SQL, то, пожалуйста, дайте мне знать. Спасибо –