MAP_UNION_SUM

简介

MAP_UNION_SUM
MAP_UNION_SUM
函数将多行 map 合并为一个 map,相同 key 的 value 累加求和,不同 key 直接保留。适合用在标签权重汇总、用户特征值累加、多维度分数聚合等场景。

语法

MAP_UNION_SUM(map_col)

参数

  • map_col
    map_col
    :类型为
    MAP<K, V>
    MAP<K, V>
    的列或表达式,其中 value 类型须为数值类型(如
    INT
    INT
    BIGINT
    BIGINT
    DOUBLE
    DOUBLE
    等)。

返回结果

  • 返回值类型为
    MAP<K, V>
    MAP<K, V>
    ,与输入的 map 类型一致。
  • 相同 key 的 value 相加;key 只在部分行出现时,其他行视为不存在该 key,不参与累加。
  • 若输入列全部为
    NULL
    NULL
    ,返回
    NULL
    NULL

示例

  1. 合并多行 map,相同 key 累加,不同 key 保留:

SELECT MAP_UNION_SUM(m) FROM (VALUES (map('a', 1, 'b', 2)), (map('a', 3, 'c', 4))) t(m);

+--------------------+ | map_union_sum(m) | +--------------------+ | {"a":4,"b":2,"c":4}| +--------------------+

key

a
a
在两行均出现,值 1 + 3 = 4;key
b
b
只出现在第一行,保留为 2;key
c
c
只出现在第二行,保留为 4。

  1. 结合 GROUP BY 按分组累加标签权重:

SELECT user_id, MAP_UNION_SUM(tag_weights) FROM user_tag_events GROUP BY user_id;

  1. 使用 FILTER 子句只聚合满足条件的行:

SELECT MAP_UNION_SUM(feature_map) FILTER (WHERE event_type = 'click') FROM user_events;

注意事项

  • value 类型必须为数值类型,map 的 value 为字符串类型时会报错。
  • NULL
    NULL
    行在聚合时自动跳过,不影响其他行的累加结果。
联系我们
预约咨询
微信咨询
电话咨询
邮件咨询