You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Trino中将array类型字段拆分为多列

在Trino中将array(varchar)拆分为指定列的方法

要实现把数组拆成以PersonX为列名的结构,核心思路是先将数组转换为Map类型,再通过键提取对应值,缺失的键会自动返回null。具体步骤如下:

  1. 将数组元素转换为键值对并生成Map
    使用transform遍历数组中的每个元素,通过split_part拆分出每个元素的键(PersonX)和值;再用map_from_entries把这些键值对转换成Map。

  2. 从Map中提取各列的值
    直接通过Map['键名']的方式提取对应值,没有对应键的列会自动填充null。

完整SQL示例

假设你的表名为your_table,执行以下SQL即可得到目标结果:

SELECT
    person_map['Person1'] AS Person1,
    person_map['Person2'] AS Person2,
    person_map['Person3'] AS Person3,
    person_map['Person4'] AS Person4
FROM (
    SELECT
        map_from_entries(
            transform(colA, x -> row(split_part(x, '=', 1), split_part(x, '=', 2)))
        ) AS person_map
    FROM your_table
) t;

补充说明

  • 如果后续有更多PersonX列需要添加,只需在SELECT子句中继续追加person_map['PersonX'] AS PersonX即可。
  • 使用split_part而非split,可以避免元素中包含多个=符号时的拆分错误,确保只按第一个等号拆分键和值。

内容的提问来源于stack exchange,提问作者Mihir Sawant

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 12:16:21