关于如何使用Athena-SQL旋转数据的答案很少。它们的共同缺点是,必须预先知道输入数据中列的所有值是什么,这些值将成为透视表中的列。
例如,假设输入数据如下:
User Fact Value
------- ---- ------
102 1 a
101 1 b
102 2 c
103 3 d
...
,预期的枢纽是:
User Fact_1 Fact_2 Fact_3
------- ------ ------ ------
101 b NULL NULL
102 a c NULL
103 NULL NULL d
...
现在的主要挑战是Fact
中唯一值的数量很大(例如〜1k)。如何在不手动指定Fact
的所有唯一值(即结果中的列)的情况下构建数据透视表?
对于有限的列,如建议的here,我可以做类似的事情:
SELECT
User,
MAX(CASE WHEN Fact = '1' THEN Value END) AS Fact_1,
MAX(CASE WHEN Fact = '2' THEN Value END) AS Fact_2
FROM my_yable
GROUP BY User
使用唯一的Fact
值创建表也很简单,但是我不知道如何使用它...