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

如何在DuckDB中从现有列创建MAP列(替代Databricks语法)

DuckDB替换Databricks MAP列语法的正确方法

正确写法1:map字面量语法

DuckDB支持直接用map{key: value}的字面量格式创建MAP,和Databricks的MAP函数逻辑一致,直接传入键值对即可:

SELECT
  date,
  col1,
  col2,
  map{'col1': col1, 'col2': col2} AS mapped
FROM table1

正确写法2:map_from_entries函数

如果需要动态构造键值对(比如从数组生成),可以用map_from_entries函数,传入包含键值元组的数组:

SELECT
  date,
  col1,
  col2,
  map_from_entries([('col1', col1), ('col2', col2)]) AS mapped
FROM table1

报错原因说明

你碰到的Binder Error: No function matches the given name and argument types '+(VARCHAR, BIGINT)',是因为错误使用了字符串拼接符+来关联键和值(比如误写为'col1' + col1),DuckDB不允许字符串与整数直接相加。只要改用上面两种正确的MAP构造语法,就能解决这个问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 02:24:57