在什么情况下 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 的类型,希望避免任何进一步的错误。
我在做一个比较无聊的查询:
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 的类型,希望避免任何进一步的错误。