Presto - выбрать все столбцы из необъявленного столбца вместе с обычным столбцом
У меня есть таблица athena (созданная из дампа данных JSON), который имеет вложенный массив в одном столбце. Я могу удалить их, используя приведенный ниже запрос.
select root.Profile,
addressdata.town, addressdata.territory, addressdata.postalCode, addressdata.country,
street.addressLine1, street.addressLine2, street.door, streetID, addressID
From
sampletable a
CROSS JOIN UNNEST(root.address.primaryAddresses) WITH ORDINALITY as t(addressdata, addressID)
CROSS JOIN UNNEST(addressdata.streetAddress) WITH ORDINALITY as t(street, streetID)
Проблема в том, чтобы вместо addressdata.town
, addressdata.territory
Я хотел бы выбрать все столбцы, не упоминая имена столбцов вместе с обычными столбцами.
Я старался select root.profile, addressdata.*
но это возвращает все в одном столбце.
Пожалуйста помоги!
0 ответов
Насколько я понимаю, вы получаете правильный результат, но хотите присоединиться к другим столбцам из addressdata
также. Если это так, вы можете что-то вроде:
WITH base_table AS (
SELECT
root.Profile,
addressdata.town AS town,
addressdata.territory,
addressdata.postalCode,
addressdata.country,
street.addressLine1,
street.addressLine2,
street.door,
streetID,
addressID
FROM sampletable a
CROSS JOIN UNNEST(root.address.primaryAddresses)
WITH ORDINALITY AS t(addressdata, addressID)
CROSS JOIN UNNEST(addressdata.streetAddress)
WITH ORDINALITY AS t(street, streetID)
),
SELECT
base_table.*,
addressdata.*
FROM base_table
JOIN addressdata
ON base_table.town = addressdata.town
Присоединение к таблицам требует немного больше работы, но делает код более читабельным в будущем.