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

Присоединение к таблицам требует немного больше работы, но делает код более читабельным в будущем.

Другие вопросы по тегам