Kdb HDB表比较

Kdb HDB表比较,kdb,Kdb,以问答方式发布此问题 为什么两个相同表(其中一个从HDB中选择)之间的布尔匹配会生成0b,而不是1b q)trade:trade2:`sym`time xasc ([] sym:5?`apple`google;time:5?.z.t;price:100+5?1.) q).Q.dpft[`:tmp;.z.d-1;`sym;`trade] `trade 加载HDB \l tmp/ q)hist:select from trade where date=.z.d-1 q)hist date

以问答方式发布此问题

为什么两个相同表(其中一个从HDB中选择)之间的布尔匹配会生成
0b
,而不是
1b

q)trade:trade2:`sym`time xasc ([] sym:5?`apple`google;time:5?.z.t;price:100+5?1.)

q).Q.dpft[`:tmp;.z.d-1;`sym;`trade]
`trade
加载HDB

\l tmp/
q)hist:select from trade where date=.z.d-1
q)hist
date       sym    time         price   
---------------------------------------
2018.04.23 apple  02:31:39.330 100.2392
2018.04.23 apple  04:25:17.604 100.1508
2018.04.23 apple  07:57:14.764 100.2782
2018.04.23 google 02:59:16.636 100.1567
2018.04.23 google 14:35:31.860 100.9785

q)(`date xcols update date:.z.d-1 from trade2)
date       sym    time         price   
---------------------------------------
2018.04.23 apple  02:31:39.330 100.2392
2018.04.23 apple  04:25:17.604 100.1508
2018.04.23 apple  07:57:14.764 100.2782
2018.04.23 google 02:59:16.636 100.1567
2018.04.23 google 14:35:31.860 100.9785
表比较生成false(
0b


不匹配是由于从HDB中选择的表的
sym
列(
20h
)的类型造成的

\l tmp/
q)hist:select from trade where date=.z.d-1
q)type exec sym from hist
20h
q)type exec sym from trade2
11h
q)type exec value sym from hist
11h
虽然它看起来与符号完全相同,但有一个新的类型
20h
,类似于以下内容

使用
value
sym
获得所需结果:

q)(`date xcols update date:.z.d-1 from trade2)~update value sym from hist
1b
q)type `city$10?city:`london`paris`rome
21h
q)(`date xcols update date:.z.d-1 from trade2)~update value sym from hist
1b