我有两个表:
- table1 跨越 2017.01.01-> 2018.01.01
- table2 跨越 2017.12.01 -> 2023.01.15(主要包含虚假模拟数据)。
我想创建一个按日期分区的历史数据库,并让用户能够向其中追加其他数据(我不担心后续追加的重复)
table2 也有两个符号列(GBP 和 UK -> 所有条目都相同 -> 当我拿到真实数据时可能会改变)。
我想创建一个如下所示的分区表:
HDB_DATE1_TAB1
| |_TAB2
|_DATE2_TAB1
| |_TAB2
|_DATE3_TAB1
|_DATE4_TAB1
| |_TAB2
|_DATE5_TAB1
|_DATE6_TAB1
| |_TAB2
.
.
.
如您所见,其中一个表的条目数比另一个表多(多得多)。我怎样才能在 KDB 中实现这种结构?
此刻我从 table2 中删除了两个符号列。我用 .Q.dpft 保存了第一个,第二个保存为普通的八字形表格。当我加载数据库时,只出现一个表 (table2),我无法以任何方式查询它。你能给我指出正确的方向吗?
最佳答案
问题可能出在您上面描述的 hdb 结构上,要求在每个分区中定义表。该结构可以用 .Q.chk
固定.我按照你上面的步骤创建了一个 hdb,trades
通过 .Q.dpft
保存,quotes
通过 set
保存到创建一个 splay。
tree -d db
db
├── 2007.07.25
│ ├── quotes
│ └── trades
└── 2007.07.26
└── trades
将数据库加载到 q session 中只会返回 trade
表。
q)\l db
q)\a
,`trades
使用.Q.chk
将填充每个分区中缺失的表。
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
关于database - 如何创建具有 2 个不同长度或多个符号列的表的数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48603096/