在什么情况下 table 会被转换成字典?

Under what circumstances would a table get converted to a dictionary?

我在做一个比较无聊的查询:

returns: select s: avg (target1 * signum p), l: avg(lR) by date from z

产生的东西看起来像:

date      | s             l            
----------| ---------------------------
2001.01.02| 0.02929124    -0.02979896  
2001.01.03| -0.01870611   0.04020953   
2001.01.04| -0.006486651  -0.015966    
2001.01.05| 0.002188851   -0.02215498  
2001.01.08| 0.0001548752  0.001631526  

问题是,虽然我查询中的 z 是 table 98h,但查询结果是字典 99h,这导致我的代码进一步出现问题。

什么可能导致类型转换?

其基本原理是使用“按日期”过滤器添加键会创建键控 table。键控 table 只是将键 table 映射到值 table 的字典。有关更多信息,请参见此处: https://code.kx.com/q4m3/8_Tables/#841-keyed-table

因为您的 avg(lR) 依赖于“按日期”过滤器,所以解决此问题的唯一方法是使用以下方法手动解锁您的 returns 字典:

returns: 0!select s: avg (target1 * signum p), l: avg(lR) by date from z

这应该会解锁您的 table 并为您提供 98h 的类型,希望避免任何进一步的错误。