如何创建具有 2 个不同长度或多个符号列的表的数据库?

How to create a database with 2 tables of different length or multiple symbol columns?

我有两个 table:

我想创建一个按日期分区的历史数据库,并让用户能够向其中追加其他数据(我不担心后续追加的重复)

table2 也有两个符号列(GBP 和 UK -> 所有条目都相同 -> 当我拿到真实数据时可能会改变)。

我想创建一个分区 table 如下所示:

HDB_DATE1_TAB1
  |      |_TAB2
  |_DATE2_TAB1
  |      |_TAB2
  |_DATE3_TAB1
  |_DATE4_TAB1
  |      |_TAB2
  |_DATE5_TAB1
  |_DATE6_TAB1
  |      |_TAB2
  .
  . 
  .

如您所见,其中一个 table 的条目比另一个多(多得多)。我怎样才能在 KDB 中实现这种结构?

目前我从 table2 中删除了两个符号列。我用 .Q.dpft 保存了第一个,第二个保存为正常的展开 table。当我加载数据库时,只出现一个 table (table2),我无法以任何方式查询它。你能给我指出正确的方向吗?

这不是该结构在磁盘上的显示方式,但请查看 .Q.bv[] 以查看它是否满足您的需要。

http://code.kx.com/q/ref/dotq/#partitioned-database-state

问题可能与您上述的 hdb 结构有关,需要在每个分区中定义 table。该结构可以用 .Q.chk 固定。我按照你上面的步骤创建了一个 hdb,trades 通过 .Q.dpft 保存,quotes 通过 set 保存,以创建一个 splay。

tree -d db
db
├── 2007.07.25
│   ├── quotes
│   └── trades
└── 2007.07.26
    └── trades

仅将数据库加载到 q 会话中 returns trade table.

q)\l db
q)\a
,`trades

使用 .Q.chk 将填充每个分区中缺失的 table。

q).Q.chk[`:.]
,`:./2007.07.26
()
q)\l .
q)\a
`quotes`trades
q)

然后可以用树来验证:

tree -d db
db
├── 2007.07.25
│   ├── quotes
│   └── trades
└── 2007.07.26
    ├── quotes
    └── trades