为什么 union join (uj) 有时会触发 "cast" 错误?

Why does union join (uj) sometimes trigger "cast" error?

当我尝试联合连接 (uj) KDB+ 中的两个非常简单的五行表时出现错误 'cast

下面代码错误的原因是什么?

q)t1b
Symbol   | RIC
---------| ---------
000001.SZ| 000001.SZ
000001.ZK| 000001.ZK
000002.SZ| 000002.SZ
000002.ZK| 000002.ZK
000004.SZ| 000004.SZ
q)t2b
Symbol| RIC
------| ------
1301  | 1301.T
1332  | 1332.T
1333  | 1333.T
1334  | 1334.T
1352  | 1352.T
q)meta t1b
c     | t f a
------| -----
Symbol| s
RIC   | s
q)meta t2b
c     | t f a
------| -----
Symbol| s
RIC   | s
q)keys t1b
,`Symbol
q)keys t2b
,`Symbol
q)t1b uj t2b
k){+.[x;(!+y;i);:;.+y z i:&z<#y]}
'cast
q))

如果我剥离主键,加入,然后重新应用主键,它就可以工作。但为什么?当然,我在这里遗漏了一些关于 KDB+ 的基本知识。

q)tuj: `Symbol xkey (() xkey t1b) uj (() xkey t2b)
q)tuj
Symbol   | RIC
---------| ---------
000001.SZ| 000001.SZ
000001.ZK| 000001.ZK
000002.SZ| 000002.SZ
000002.ZK| 000002.ZK
000004.SZ| 000004.SZ
1301     | 1301.T
1332     | 1332.T
1333     | 1333.T
1334     | 1334.T
1352     | 1352.T
q)meta tuj
c     | t f a
------| -----
Symbol| s
RIC   | s
q)keys tuj
,`Symbol

能否请您查看上面的示例代码: 您已经声明了两个表 t1b 和 t2b,但是当您尝试连接 t1 和 t2 时出现转换错误?这些表的值是多少?

t1b 和 t2b 将加入:

q)t1b:([Symbol:`000001.SZ`000001.ZK`000002.SZ`000002.ZK`000004.SZ]RIC:`000001.SZ`000001.ZK`000002.SZ`000002.ZK`000004.SZ)
q)t2b:([Symbol:`1301`1332`1333`1334`1352]RIC:`1301.T`1332.T`1333.T`1334.T`1352.T)
q)meta t1b
c     | t f a
------| -----
Symbol| s
RIC   | s
q)meta t2b
c     | t f a
------| -----
Symbol| s
RIC   | s
q)keys t1b
,`Symbol
q)keys t2b
,`Symbol
q)t1b uj t2b
Symbol   | RIC
---------| ---------
000001.SZ| 000001.SZ
000001.ZK| 000001.ZK
000002.SZ| 000002.SZ
000002.ZK| 000002.ZK
000004.SZ| 000004.SZ
1301     | 1301.T
1332     | 1332.T
1333     | 1333.T
1334     | 1334.T
1352     | 1352.T
q)t1b
Symbol   | RIC
---------| ---------
000001.SZ| 000001.SZ
000001.ZK| 000001.ZK
000002.SZ| 000002.SZ
000002.ZK| 000002.ZK
000004.SZ| 000004.SZ
q)t2b
Symbol| RIC
------| ------
1301  | 1301.T
1332  | 1332.T
1333  | 1333.T
1334  | 1334.T
1352  | 1352.T

看起来您正在尝试联合连接表 t1t2 而不是 t1bt2b。如图所示连接示例表应该按预期工作。

很可能是因为您的某些符号已被枚举,而另一些未被枚举