【问题标题】:Athena/Presto - UNNEST MAP to columnsAthena/Presto - UNNEST MAP 到列
【发布时间】: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


【解决方案1】:

不,没有办法编写根据数据产生不同列数的查询。在查询执行开始之前必须知道这些列。您所拥有的地图与您将要获得的一样近。

如果您包含想要这样做的动机,我们可能还有其他方法可以帮助您实现最终目标。

【讨论】:

    猜你喜欢
    • 2016-04-02
    • 1970-01-01
    • 2020-11-18
    • 1970-01-01
    • 2022-01-18
    • 2021-07-10
    • 1970-01-01
    • 2023-01-16
    • 2019-12-31
    相关资源
    最近更新 更多