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

KDB查询中自定义函数如何按列处理,能否查看cor内置函数源码?

问题1:如何让自定义函数在select中按整列处理

问题原因

kdb+的select语句默认会对没有聚合属性的函数做逐行(逐元素)调用,只有带聚合属性的函数(内置的avg/cor/sum等都属于这类)才会默认接收整列作为入参。

修正方案

有两种常用方案可选:

方案1:给自定义函数添加聚合属性

给fit1函数设置a(聚合)属性,告诉kdb+这是聚合函数,执行select时会传入整列:

// 原有函数定义不变
center:{x - avg raze x}
fit1:{
  xc: 0^center[x];
  yc: 0^center[y];
  beta: raze yc lsq xc;
  intercept: (avg raze y) - (beta * avg raze x);
  raze beta
}
// 新增:给fit1设置聚合属性
fit1: fit1 setAttr `a

设置完成后直接执行原有查询即可得到正确结果:

q)select fit1[x;y] from t
x
-
3

方案2:查询时手动包裹整列入参

如果不想修改函数属性,可以在传参时用enlist包裹列,强制把整列作为单个参数传入函数:

q)select fit1[enlist x;enlist y] from t
x
-
3

问题2:cor函数是否公开源码

cor是kdb+的核心内置函数,属于KX公司的闭源C实现,没有对外公开源码。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 06:57:00