为什么union join(uj)有时会触发“强制转换”错误?

时间:2017-01-27 11:03:28

标签: union kdb q-lang

当我尝试在KDB +中联合加入('cast)两个非常简单的五行表时,我收到错误uj

以下代码中出现错误的原因是什么?

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

3 个答案:

答案 0 :(得分:3)

很可能是因为您的某些符号已枚举,而某些符号不是

答案 1 :(得分:0)

您可以查看上面的示例代码: 您已声明两个表 t1b和t2b ,但是在尝试加入 t1和t2 时会出现转换错误?这些表的价值是什么?

t1b和t2b将加入:

docker exec -i 418f46e5595d  mongoexport --db saveInfo --collection infoobjects --type=csv --fields _id,postLink,postTitle,contactPhone --out ./info.csv

答案 2 :(得分:0)

看起来您正在尝试联合表t1t2而不是t1bt2b。如图所示加入示例表应该可以正常工作。