AWS Athena (Presto)如何将映射转置为列

Den*_*nno 5 presto amazon-athena

AWS Athena 查询问题;

我的行中有一个嵌套映射,我想将其中的键转置到列。我可以明确地命名列items['label_a'],但在这种情况下,键实际上是动态的......

从这些行:

{id=1, items={label_a=foo, label_b=foo}}
{id=2, items={label_a=bar, label_c=bar}}
{id=3, items={label_b=baz, label_c=baz}}
Run Code Online (Sandbox Code Playgroud)

我想要一张像这样的桌子:

| id | label_a | label_b | label_c |
------------------------------------
| 1  |   foo   |   foo   |         |  
| 2  |   bar   |         |   bar   |  
| 3  |         |   baz   |   baz   |  
Run Code Online (Sandbox Code Playgroud)

这可能吗?如何在 aws athena(presto 版本 0.172)中执行此操作?

谢谢!

Pio*_*sen 5

这是不可能以动态方式实现的,因为在查询执行开始之前规划器需要知道输出列。

请参阅此处之前的讨论:https://github.com/prestosql/presto/issues/2448https://github.com/prestosql/presto/issues/1206