我在磁盘上有两个分区的kdb表(一个叫交易,一个叫书(。我创建数据的方式是 用
.Q.dpft[`:I:/check/trades/;2020.01.01;`symTrade;`trades]
和
.Q.dpft[`:I:/check/books/;2020.01.01;`sym;`books]
每一天。如果我从交易表中选择数据,然后加载账簿表(不选择数据(,则结果的symTrade列中的值将更改为新值。我认为这与将账簿表中的分割应用于交易表的结果有关(加载账簿表后交易表也不再可访问(。
如何:
- 加载账簿表后保持交易表可访问性?
- 避免我的符号交易列被 中的符号值覆盖 书桌?
下面是一个示例:
system "l I:/check/trades/";
test: 10 sublist select from trades where date=2020.01.01;
show cols test;
// gives `date`symTrade`time`Price`Qty`Volume
select distinct symTrade from test;
// gives TICKER1
// now loading another table
system "l I:/check/books";
select distinct symTrade from test;
// now gives a different value e.g. TICKER200
我认为问题是您将这些表保存到两个不同的数据库中。
.Q.dpft
中的第一个参数是数据库根目录的路径,第四个参数是要存储的表的名称。所以当你这样做时
.Q.dpft[`:I:/check/trades/;2020.01.01;`symTrade;`trades]
您将交易表存储在 I:/check/trades 的数据库中,当您这样做时
.Q.dpft[`:I:/check/books/;2020.01.01;`sym;`books]
您将 books 表存储在 I:/check/books 中的数据库中。我认为q一次只能加载一个数据库,所以这可能是问题所在。
尝试这样做
.Q.dpft[`:I:/check/;2020.01.01;`symTrade;`trades]
.Q.dpft[`:I:/check/;2020.01.01;`sym;`books]
system "l I:/check/";
让我们知道这是否有效!