Объединение BigQuery по вложенным полям
Я пытаюсь создать объединение из трех таблиц. Все 3 таблицы являются подзапросами в одной и той же таблице: каждый подзаголовок содержит только одно поле с таким же псевдонимом для поля во всех подзапросах, поэтому результирующая схема будет совместима и объединение будет успешным (в соответствии с примером из функции поддержки UNION в BigQuery SQL).
В результате запроса возникает ошибка:
Союз приводит к двусмысленной схеме. [foo] неоднозначно и сглаживает несколько полей. Псевдонимы:...
Возможно, ошибка связана с тем, что выбранное поле является вложенным в несколько записей и повторяющихся полей.
Пример фиктивного запроса:
выберите из
(SELECT record.list1.list2.listA.foo как foo из образца),
(SELECT record.list1.list2.listB.foo как foo из образца),
(SELECT record.list1.list2.listC.foo как foo из образца)
См. Задание job_eZm0F1cGA2leE37D8-N5NHNTTYU для конкретного примера (это таблица, содержащая данные, которые я не могу предоставить).
Вы можете воспроизвести это с помощью общедоступного набора данных:
SELECT x FROM
(SELECT phoneNumber.areaCode x
FROM [bigquery-samples:nested.persons_living] LIMIT 1),
(SELECT citiesLived.numberOfYears x
FROM [bigquery-samples:nested.persons_living] LIMIT 1);
Error: Union results in ambiguous schema.
[x] is ambiguous and is aliasing multiple fields.
Aliased fields: x,CitiesLived.x,
Как уже отмечалось, это происходит только при смешивании разных нескольких записей и повторяющихся полей - и у них есть быстрое исправление: FLATTEN() перед запросом:
SELECT x FROM
(SELECT phoneNumber.areaCode x
FROM [bigquery-samples:nested.persons_living] LIMIT 1),
(SELECT citiesLived.numberOfYears x
FROM (FLATTEN([bigquery-samples:nested.persons_living], citiesLived)) LIMIT 1);