Presto/AWS 中的 CROSS APPLY 函数
CROSS APPLY function in Presto/AWS
我正在尝试将标题为 Created、Approved、Processed & Realized 的 4 个日期列转换为一个包含所有 4 个日期的列和一个包含每个日期状态的第二列。
最后的图片直观地显示了数据问题(抱歉,我仍在研究如何在 Whosebug 上以文本形式附加 tables)
To solve this, I successfully executed the CROSS APPLY
function in SQL server (see below), but I now need to do the same in AWS Simba
Athena or the Presto language. Can someone please guide me on what is the AWS/Presto equivalent of a CROSS APPLY function? Thank you in advance
SELECT
V.Date,
V.Status
From Table C
CROSS APPLY
(VALUES
(C.Created, 'Opened'),
(C.Approved, 'Approved'),
(C.Processed, 'Processed'),
(C.Realized, 'Realized')
) AS V([Date], Status)
我要转换以下内容table:
您应该可以使用 UNNEST
来做到这一点:
SELECT v.date, v.status
FROM m_table
CROSS JOIN UNNEST(ARRAY[
ROW(C.Created, 'Opened'),
ROW(C.Approved, 'Approved'),
ROW(C.Processed, 'Processed'),
ROW(C.Realized, 'Realized')
]) AS v(date, status);
这适用于最新的 Presto 版本 337。
在 Athena 中,您可能仍然无法 UNNEST 数组或 ROW
采用 ANSI SQL 方式,因此您可能需要进行一些修改。
我正在尝试将标题为 Created、Approved、Processed & Realized 的 4 个日期列转换为一个包含所有 4 个日期的列和一个包含每个日期状态的第二列。
最后的图片直观地显示了数据问题(抱歉,我仍在研究如何在 Whosebug 上以文本形式附加 tables)
To solve this, I successfully executed the CROSS APPLY function in SQL server (see below), but I now need to do the same in AWS Simba Athena or the Presto language. Can someone please guide me on what is the AWS/Presto equivalent of a CROSS APPLY function? Thank you in advance
SELECT
V.Date,
V.Status
From Table C
CROSS APPLY
(VALUES
(C.Created, 'Opened'),
(C.Approved, 'Approved'),
(C.Processed, 'Processed'),
(C.Realized, 'Realized')
) AS V([Date], Status)
我要转换以下内容table:
您应该可以使用 UNNEST
来做到这一点:
SELECT v.date, v.status
FROM m_table
CROSS JOIN UNNEST(ARRAY[
ROW(C.Created, 'Opened'),
ROW(C.Approved, 'Approved'),
ROW(C.Processed, 'Processed'),
ROW(C.Realized, 'Realized')
]) AS v(date, status);
这适用于最新的 Presto 版本 337。
在 Athena 中,您可能仍然无法 UNNEST 数组或 ROW 采用 ANSI SQL 方式,因此您可能需要进行一些修改。