列值在 KDB 中加载两个分区表之间更改 (q)



我在磁盘上有两个分区的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/";

让我们知道这是否有效!

最新更新