【问题标题】:Ambiguous functional form in kdbkdb 中的模棱两可的函数形式
【发布时间】:2021-09-01 09:16:57
【问题描述】:

不完全确定以下代码的作用:

p1:(,').(::;p@)@\:distinct#[;x]cols key p;

尤其是这部分 -> (,').(::;p@)@\:

根据我的理解,表 p 的不同列是由 x 键入的,但是 (,').(::;p@) 的这一位让我感到困惑。这是否取最后一个值?对于每个键控列?

【问题讨论】:

    标签: kdb


    【解决方案1】:

    很难确切知道发生了什么,因为您没有向我们提供完整的上下文,但 :: 是只返回相同输入的标识函数,也就是

    q)(::)`a
    `a
    q)(::)1 2
    1 2
    

    p@ 将是键控表p 的索引/查找。所以(::;p@) 是两个函数的列表——第一个函数是身份,第二个函数是查找键控表。输入distinct#[;x]cols key p 应用于@\: 两个函数中的每一个(apply-each-left)。第一个函数输出将是 x 中给定键 p 的不同行。第二个函数输出是将这些键查找到键控表p

    最后,(,'). 是函数 (,'),又名 append-each,点应用于两个函数结果,请参阅 https://code.kx.com/q/ref/apply/#apply-index 这相当于

    {x,'y}[functionResult1;functionResult2]
    

    所以在这个例子中,两个表的 append-each 是一个横向表连接,见底部https://code.kx.com/q/ref/join/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多