【问题标题】:How to add two maps of key to values(array) together in Presto?如何在 Presto 中将两个键映射添加到值(数组)?
【发布时间】:2019-11-15 01:10:08
【问题描述】:

我有这个 presto 查询,它给了我这个。

但我正在寻找的是这个。

{"accountnumber":"A00000065","invoice":{"ids":["2c92c09a693316310169384472126a0d"], "numbers":["INV00000270"]}}

我曾尝试使用 map_concat,但没有成功。

https://prestodb.io/docs/current/functions/map.html

更新:如果我执行以下操作,它会起作用。

map_concat(multimap_agg('number', invoice.invoicenumber), multimap_agg('id', invoice.id))

但是如果我改成

map_concat(multimap_agg('number', invoice.invoicenumber), multimap_agg('id', invoice.balance))

我收到这个错误

第 1:23 行:函数 map_concat 的意外参数 (map(varchar(6),array(varchar)), map(varchar(2),array(decimal(18,6))))。预期:map_concat(map(K,V)) K, V

【问题讨论】:

  • 当您尝试map_concat 时,什么不起作用?

标签: presto


【解决方案1】:

它应该放在评论中,但这太长了。 如果不行,我会删除答案。

试试这个:

SELECT map_concat(multimap_agg('ids', invoice.id), multimap_agg('numbers', invoice.invoicenumber))
FROM ...

【讨论】:

  • "message": "无效查询。查询失败 (#20191114_170704_05485_qv264): line 1:23: Unexpected parameters (map(varchar(6),array(varchar)), map(varchar(2) ,array(decimal(18,6)))) 用于函数 map_concat。预期:map_concat(map(K,V)) K, V"
  • map_concat(multimap_agg('number', invoice.invoicenumber), multimap_agg('id', invoice.balance))
  • 您需要将invoice.balance 转换为varchar: CAST(invoice.balance AS varchar)
  • 非常感谢。就是这样。
猜你喜欢
  • 1970-01-01
  • 2016-08-02
  • 1970-01-01
  • 1970-01-01
  • 2019-09-25
  • 1970-01-01
  • 1970-01-01
  • 2019-08-20
  • 1970-01-01
相关资源
最近更新 更多