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

DuckDB如何展开含不同键的map实现unpivot?

DuckDB中Map类型列的Unpivot实现

你可以通过entries()函数结合unnest()来实现Map类型列的Unpivot操作,这两个是DuckDB处理Map类型的核心工具:

先给出示例表的初始化语句(如果你的表已存在可跳过):

CREATE TABLE sales_data (
  Product VARCHAR,
  Sales MAP(VARCHAR, INT)
);

INSERT INTO sales_data VALUES
('Widget', map(['Jan', 'Feb'], [12, 13])),
('Dongle', map(['Feb', 'Apr'], [1, 22]));

执行以下查询即可得到你想要的结果:

SELECT
  Product,
  entry.key AS Month,
  entry.value AS Qty
FROM sales_data,
unnest(entries(Sales)) AS entry;

简单说明

  • entries(Sales):把Map类型的Sales列转换成包含key和value字段的结构体数组,比如{Jan=12, Feb=13}会变成[{key='Jan', value=12}, {key='Feb', value=13}]
  • unnest(...):将这个结构体数组拆分为多行,每行对应一个键值对,完成Unpivot转换

内容的提问来源于stack exchange,提问作者Jefferey Cave

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 15:31:01