【问题标题】:How to create a database with 2 tables of different length or multiple symbol columns?如何创建具有 2 个不同长度的表或多个符号列的数据库?
【发布时间】:2018-02-03 23:21:23
【问题描述】:

我有两张桌子:

  • 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),我无法以任何方式查询它。你能指出我正确的方向吗?

【问题讨论】:

    标签: database database-design kdb q-lang


    【解决方案1】:

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

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

    将 db 加载到 q 会话中只会返回 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
    

    【讨论】:

      【解决方案2】:

      这不是结构在磁盘上的样子,但请查看 .Q.bv[] 看看它是否能满足您的需求。

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

      【讨论】:

        猜你喜欢
        • 2020-10-06
        • 2019-01-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-30
        • 2023-02-18
        • 2020-05-04
        相关资源
        最近更新 更多