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

标签 database database-design kdb q-lang

我有两个表:

  • 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/

相关文章:

kdb - 获取矩阵的一列并使其成为 kdb 中的一行

kdb - 仅从表中选择那些在 q kdb 中没有空值的列

sql - 位置数据存储(点、按距离分组等)——最佳实践和推荐方案

database - 在 relations() 方法中定义自定义排序标准

python - 将包含字符串列的 pandas DataFrame 传递给 kdb+ (使用 qPython API)

database-design - 您将如何为通用 Schema.org 存储建模

mysql - 用户订阅的数据库设计

php - php 文档中未选择数据库

sql - 计算没有 COUNT 的元组数。是否可以?

python - 我可以使用触发器来添加外键组合吗?