【发布时间】:2020-11-02 17:09:51
【问题描述】:
假设我有一张这样的桌子,
表:qa_list
id | question_id | question | answer |
---------+--------------+------------+-------------
1 | 100 | question1 | answer |
2 | 101 | question2 | answer |
3 | 102 | question3 | answer |
4 | ...
... | ...
以及给出以下结果的查询(因为我找不到转置表格的直接方法),
表:qa_map
id | qa_map
--------+---------
1 | {question1=answer,question2=answer,question3=answer, ....}
其中 qa_map 是任意数量的问题和答案的 map_agg 的结果。
有没有办法 UNNEST qa_map 到任意数量的列,如下所示?
id | Question_1 | Answer_1 | Question_2 | Answer_2 | Question_3 | ....
---------+-------------+-----------+-------------+-----------+-------------+
1 | question | answer | question | answer | question | ....
AWS Athena/Presto-0.172
【问题讨论】:
-
"* 到任意数字*" - 没有。语句的列数(和类型)必须在数据库开始运行语句之前知道。
-
既然内部查询可以先在 qa_list 上运行,那么外部查询是否应该知道数量和类型?
-
不,列数由数据库决定,解析(分析)语句时,而不是运行时。
-
也许试着写出这个unnest map的目的,因为可能还有其他方法不需要unnest..
标签: presto amazon-athena