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

如何将kdb表中列表类型的value和price字段展开为多行?

解决方法:展开KDB表中的嵌套列表列

要把包含列表类型字段的KDB表展开成每行对应列表中单个元素的结构,你可以用KDB内置的ungroup函数,这是处理这类场景最简洁直接的方式。

步骤1:构造原表

先确认你的原表结构(和描述一致),可以用以下代码创建:

t:([] name:`Paul; value:(1 2); price:(3 4))

执行后原表的输出为:

name value price
----------------
Paul 1 2   3 4

步骤2:用ungroup展开列表列

直接对表调用ungroup函数,它会自动识别列表类型的字段,将其展开为多行,同时重复非列表列的对应值:

ungroup t

执行后就能得到你想要的结果:

name value price
----------------
Paul 1     3
Paul 2     4

补充说明

  • ungroup会自动处理所有列表类型的列,只要每行中这些列表列的长度一致(比如这里value和price都是长度2的列表),就能正确展开。
  • 如果只需要展开部分列表列,可以先筛选目标列再执行ungroup,比如:
ungroup select name, value, price from t

不过在这个场景下,直接ungroup t就完全够用了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:08:58