【问题标题】:How to enumerate multiple columns in a kdb table?如何枚举 kdb 表中的多个列?
【发布时间】:2013-04-19 20:06:59
【问题描述】:

我想对一个 kdb 表进行分区,所以我需要先枚举它的符号列。我使用.Q.en 运算符来完成此任务:

mytable_mem_enum: .Q.en[`$sym_path] mytable_mem

/generate partition schema
(`$db_path;``!((17;2;9);(17;2;9))) set ([]ts:`time$(); msg_type:`symbol$(); price_type:`byte$(); memo:`symbol$())

/store
(`$db_path) upsert (select ts,msg_type,pricetype,memo from mytable_mem_enum)

Q 在我在sym_path 中指定的目录下创建了一个名为sym 的文件。该文件是否包含所有符号列的枚举? .Q.en 和这个语法有什么区别:

([] ti:09:30:00 09:31:00; s:`:/db/sym?`ibm`msft; p:101 33f)

【问题讨论】:

    标签: kdb


    【解决方案1】:

    .Q.en 确实枚举了表中任何符号类型的列。

    除了简单的函数方便之外,它与手动进行枚举本质上没有什么不同。

    【讨论】:

    • 我想知道,.Q.en 总是创建一个“符号”文件还是可以选择其他名称?如果我们手动进行枚举,我认为我们必须为每个符号列创建一个文件。
    • 您可以检查 .Q.en 的 k 源代码,以准确了解它是如何工作的。它在q.k 中定义,或者您可以通过评估.Q.en 来查看它。简短的回答是,是的,这是可能的,而且您不必为每一列都有单独的文件。例如,您可以制作一个新版本的 .Q.en 以根据您自己的 sym 文件进行枚举。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-11
    • 1970-01-01
    • 2012-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多