【问题标题】:Map repeated values in presto在 presto 中映射重复值
【发布时间】:2023-08-03 18:47:01
【问题描述】:

我正在从 JSON 中提取数据并在 presto 中映射两个数组。当数组中没有重复值但失败并出现错误时,它可以正常工作 - 不允许重复映射键这些值是重复的。我需要这些值并且无法从数组中删除任何值。这种情况有解决方法吗?
样本值:

 array1 -- [Rewards,NEW,Rewards,NEW]
 array2 -- [losg1,losg2,losg3,losg4]

必须像这样生成地图键/值 [Rewards=>losg1,NEW=>losg2,Rewards=>losg3,NEW=>losg4]

【问题讨论】:

  • 由于您想保留重复的映射,您不能将其表示为map。考虑改为ARRAY(ROW(k, v))
  • 感谢您的回复,但我无法解决此问题。你能用这个例子解释一下吗?需要做些什么不同的事情才能像这样完成映射? 1-> 2,2->3,1->4 选择 MAP(ARRAY[1,2,1],array[2,3,4]);
  • 可以像这样返回成对的关联SELECT ARRAY[ROW('Rewards', 'losg1'), ROW('NEW', 'losg2'), ROW('Rewards', 'losg3')]
  • 不客气。转换为答案,因此可以将问题标记为已回答/已接受。我邀请您加入Trino (formerly Presto SQL) community slack,您可以在不适合 SO 范围的情况下获得帮助。

标签: presto trino


【解决方案1】:

可以这样返回成对的关联:

SELECT ARRAY[ROW('Rewards', 'losg1'), ROW('NEW', 'losg2'), ROW('Rewards', 'losg3')]

【讨论】: