Performance KDB+;/对OneLiner的Q语法优化

Performance KDB+;/对OneLiner的Q语法优化,performance,kdb,q-lang,Performance,Kdb,Q Lang,我绝对是一个凡人。我甚至会说一个q宝宝。我有一些问题,如何将代码从单独的行组合成一行。我想有一种方法比我的更优雅 如何在一行中编写以下语句: q)t1:(3#3)?\:`8 q)t1[;0]:`abc 在这个表创建过程中,如何添加另一个列(如使用命令([]id:id\u list;data:data\u list;…))。到目前为止,我正在创建另一个表,并对它们进行内部联接。我想这不是很有效: `id xkey update id:i from flip (`row1`row2!(1 2;3

我绝对是一个凡人。我甚至会说一个q宝宝。我有一些问题,如何将代码从单独的行组合成一行。我想有一种方法比我的更优雅

  • 如何在一行中编写以下语句:

    q)t1:(3#3)?\:`8
    q)t1[;0]:`abc
    
  • 在这个表创建过程中,如何添加另一个列(如使用命令
    ([]id:id\u list;data:data\u list;…
    ))。到目前为止,我正在创建另一个表,并对它们进行内部联接。我想这不是很有效:

    `id xkey update id:i from flip (`row1`row2!(1 2;3 4))
    
  • 两种选择:-
    创建一个3*2的随机符号矩阵,并在前面添加'abc'

    q)`abc,/:(3#2)?\:`8
    
  • 或创建随机符号的3*3矩阵,并使用修正函数形式更新第一列。这是一种更通用的方法

        q).[(3#3)?\:`8;(::;0);:;`abc]
    
  • 我认为使用justupdate语句没有任何问题

    q)c:1 2  
    q)t  
    row1 row2  
    ---------  
    1    3  
    2    4  
    q)update newCol:c from `t  
    `t  
    q)t  
    row1 row2 newCol  
    ----------------  
    1    3    1  
    2    4    2
    

  • 对于第一个,您可以执行以下操作:

    q)`abc,/:(3#2)?\:`8
    abc jognjhck cihanjhp
    abc hkpblald aeajbddp
    abc blmjhgah ooeiogdj
    
    对于第二个,您可以将表格视为字典:

    q)tb
    row1 row2
    ---------
    1    3   
    2    4   
    q)(tb`id): 5 6
    q)tb
    row1 row2 id
    ------------
    1    3    5 
    2    4    6