Presto - выбрать все столбцы из необъявленного столбца вместе с обычным столбцом - PullRequest
0 голосов
/ 30 января 2019

У меня есть таблица 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.*, но это возвращает все в одном столбце.

Пожалуйста, помогите!

1 Ответ

0 голосов
/ 18 июля 2019

Насколько я понимаю, вы получаете правильный результат, но вы хотите присоединиться и к другим столбцам из 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

Это немного больше работы для объединения таблиц, но делает код более читабельным для будущего.

...