KX Community

Find answers, ask questions, and connect with our KX Community around the world.
KX Community Guidelines

Home Forums kdb+ How can I apply a func to a grouped table? Reply To: How can I apply a func to a grouped table?

  • rocuinneagain

    Member
    July 31, 2024 at 8:41 pm

    Best would be to update the function to pad out nulls when needed:

    q)f:{i:az -1+(where deltas y xrank az:asc z),count z;(`$x,/:string 1+til y)!i,(y-count i)#0N}
    q)r:exec f["Ask_";6;AskOrder],f["Bid_";6;BidOrder] by stock from st
    q){`stock xcols update stock:key x from (value x)[`AskOrder],'(value x)[`BidOrder]} r
    stock Ask_1 Ask_2 Ask_3 Ask_4 Ask_5 Ask_6 Bid_1 Bid_2 Bid_3 Bid_4 Bid_5 Bid_6
    -----------------------------------------------------------------------------
    a 17 28 59 61 64 34 49 52 90 92
    b 41 46 74 92 94 97 26 30 70 82 88 93
    c 6 35 35 37 96 2 30 30 38 58
    d 4 4 7 10 66 96 12 23 38 39 45 61
    e 4 21 49 68 91 92 28 59 66 84 97 97
    f 10 18 45 65 83 91 8 39 43 64 77 78
    g 5 16 16 30 59 62 84 84 90 97
    h 48 51 56 59 71 12 45 47 82 95
    i 10 15 37 48 59 91 24 37 52 68 69 84
    j 0 57 57 66 74 36 63 63 73 83
    k 14 19 43 46 58 60 30 37 50 53 90 99
    l 25 29 33 49 59 98 6 26 59 60 68 93
    m 9 65 65 74 88 12 64 64 66 77
    n 14 14 40 40 98 44 44 73 73 93
    o 32 46 50 63 70 80 20 32 54 89 93 94
    p 4 48 48 51 92 23 40 41 74 88