【问题标题】:Presto - select all columns from unnested column along with regular columnPresto - 从未嵌套列中选择所有列以及常规列
【发布时间】:2019-06-23 09:49:42
【问题描述】:

我有一个 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.townaddressdata.territory,而是选择所有列而不提及列名以及常规的非嵌套列。

我尝试了select root.profile, addressdata.*,但这会将所有内容都返回到一个列中。

请帮忙!

【问题讨论】:

    标签: amazon-web-services amazon-athena presto


    【解决方案1】:

    据我了解,您得到了正确的结果,但您也想加入来自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
    

    加入表格需要做更多的工作,但让代码在未来更具可读性。

    【讨论】:

      猜你喜欢
      • 2011-04-29
      • 1970-01-01
      • 1970-01-01
      • 2015-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-24
      • 1970-01-01
      相关资源
      最近更新 更多