无需硬编码即可在 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