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

Q语言中wj函数计算sumproduct失败,如何实现该运算?

Q语言中在wj函数内实现Sumproduct运算的解决方案

你的问题出在wj函数的聚合参数语法上:sum需要接收单个列引用,直接嵌套(*;price;weight)不符合wj的参数规则。以下是两种可行的解决方法:

方法一:预计算乘积列

先在源表q中新增price*weight的乘积列,再对该列执行sum聚合:

t:([]sym:3#`ibm;time:10:01:01 10:01:04 10:01:08;price:100 101 105);

price:101 103 103 104 104 107 108 107 108;
weight:98 99 102 103 103 104 106 106 107;
q:([]sym:`ibm; time:10:01:01+til 9; price:price; weight:weight);
// 新增乘积列
q:update prod:price*weight from q;
f:`sym`time;
w:-2 1+\:t.time;

// 对预计算的prod列求和
wj[w;f;t;(q;(sum;`price);(sum;`weight);(sum;`prod))];

方法二:使用匿名函数直接计算

通过匿名函数在聚合阶段实时计算price*weight的总和,无需修改源表:

t:([]sym:3#`ibm;time:10:01:01 10:01:04 10:01:08;price:100 101 105);

price:101 103 103 104 104 107 108 107 108;
weight:98 99 102 103 103 104 106 106 107;
q:([]sym:`ibm; time:10:01:01+til 9; price:price; weight:weight);
f:`sym`time;
w:-2 1+\:t.time;

// 用匿名函数实现sumproduct,最后指定结果列名为sumprod
wj[w;f;t;(q;(sum;`price);(sum;`weight);{sum x.price*x.weight};`sumprod)];

两种方法都能得到正确的sumproduct结果:

  • 方法一适合需要重复使用乘积列的场景
  • 方法二更简洁,无需修改源表结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 07:05:40