无需硬编码即可在 Amazon Athena 中反转列
Unpivot Columns inside of Amazon Athena without hardcoding
我正在 AWS Athena 中编写查询。
Origianl Table 是这样的:
employee|manager1|manager2|manager3|... | manager10
12345|A . |B . |C . |... | (null)
54321|I . |II . |III . |... | X
结果应该是这样的:
employee | manager
12345 . | A
12345 . | B
12345 . | C
54321 | I
54321 . | II
54321 . |...
54321 . | X
我尝试在 Athena 中使用 unpivot,但遇到了一些语法错误。此外,对于 unpivot,这意味着我需要对所有这些列进行硬编码。
第一次接触Athena,不知道Athena能不能做到。如果是,正确的方法是什么?
我刚刚在 Athena 中用数组做了一个逆轴。我的案例没有可变数量的列,因此您可能需要为此进行调整,但这至少应该可以为您提供一个逆轴:
WITH dataset AS (
SELECT
employee,
ARRAY[manager1, manager2, manager3] AS managers
FROM
(SELECT 'A' AS employee, '1' AS manager1, '2' AS manager2, '3' AS manager3)
)
SELECT employee, manager FROM dataset
CROSS JOIN UNNEST(managers) as t(manager)
这将为您提供输出:
查看文档以获取更多信息和示例:https://docs.aws.amazon.com/athena/latest/ug/creating-arrays.html
我正在 AWS Athena 中编写查询。 Origianl Table 是这样的:
employee|manager1|manager2|manager3|... | manager10
12345|A . |B . |C . |... | (null)
54321|I . |II . |III . |... | X
结果应该是这样的:
employee | manager
12345 . | A
12345 . | B
12345 . | C
54321 | I
54321 . | II
54321 . |...
54321 . | X
我尝试在 Athena 中使用 unpivot,但遇到了一些语法错误。此外,对于 unpivot,这意味着我需要对所有这些列进行硬编码。
第一次接触Athena,不知道Athena能不能做到。如果是,正确的方法是什么?
我刚刚在 Athena 中用数组做了一个逆轴。我的案例没有可变数量的列,因此您可能需要为此进行调整,但这至少应该可以为您提供一个逆轴:
WITH dataset AS (
SELECT
employee,
ARRAY[manager1, manager2, manager3] AS managers
FROM
(SELECT 'A' AS employee, '1' AS manager1, '2' AS manager2, '3' AS manager3)
)
SELECT employee, manager FROM dataset
CROSS JOIN UNNEST(managers) as t(manager)
这将为您提供输出:
查看文档以获取更多信息和示例:https://docs.aws.amazon.com/athena/latest/ug/creating-arrays.html