【问题标题】:Is there a simple way to transform an array based on a dimension table?有没有一种简单的方法可以根据维度表转换数组?
【发布时间】:2021-01-09 22:22:28
【问题描述】:

我有两张桌子:

  • 一列是标识符数组。
  • 另一个是将这些标识符映射到另一个值的维度表

我正在寻找使用维度表转换第一个表的列。

例子:

表 1:

Column A | Column B

'Bob' | ['a', 'b', 'c']

'Terry' | ['a']

维度表:

Column C | Column D

'a' | 1

'b' | 2

'c' | 3


预期输出:

Column A | Column B

'Bob' | [1,2,3]

'Terry' | [1]

有没有办法做到这一点(最好在 Presto 中)而不用爆炸和重新聚合数组列?

【问题讨论】:

    标签: sql arrays presto


    【解决方案1】:

    我猜你可以通过使用transform_keys 在不爆炸和重新聚合的情况下做到这一点,但不确定这是否更容易。

    SELECT map_keys(transform_keys(MAP(ARRAY['a','c'], ARRAY[null,null]),
                          (k, v) -> MAP(ARRAY['a', 'b', 'c', 'd'], ARRAY[1,2,3,4])[k]));
    

    我猜它要求维度表不能“太大”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-14
      • 1970-01-01
      • 1970-01-01
      • 2022-09-24
      • 2011-01-03
      • 1970-01-01
      • 2010-09-06
      • 1970-01-01
      相关资源
      最近更新 更多