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

KDB+中执行透视操作未得到预期表格,问题出在哪?

为啥会这样?

你用的exec命令搭配by分组时,返回的是字典结构——键是分组字段sym,值是每个组里t!c生成的小字典,根本不是表格。exec本来就是用来返回聚合后的结果集合的,不会保留表格的列结构,所以自然看不到单独的sym列。

怎么改?

要拿到带sym列的透视表格,有两种常用办法:

办法1:用内置的pivot函数(最省事)

KDB+自带的pivot就是专门做透视表的,直接指定行、列、值对应的字段就行:

pivot[`sym;`t;`c;m]

执行后会得到你想要的表格:

sym| 2021.01.04 2021.01.05 2021.01.06 2021.01.07 2021.01.08
---| -------------------------------------------------------
A  | 0          3          6          9          12
B  | 1          4          7          10         13
C  | 2          5          8          11         14

办法2:用select手动构造

要是不想用pivot,也可以用select把分组后的字典拆成表格:

select sym, value from exec t!c by sym from m

先通过exec t!c by sym from m拿到分组字典,再用select把字典的键(也就是sym)和值(日期对应c的映射)拆成表格列。不过如果要把日期单独拆成列,还是pivot更简洁。

额外提一句
  • exec和select的核心区别:exec返回原子、列表或者字典这类聚合结果,select返回的是表格结构。要表格输出的话,优先用select或者专门的透视函数。
  • pivot还支持动态参数,复杂场景也能适配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 06:11:15