Распространенным подходом к проблеме является использование fby
, которое позволяет применять такую функцию, как first
или last
(или лямбда) ко всем столбцам:
t:([]c1:10?`A`B`C;c2:10?10;c3:10?"xyz";c4:.z.D-til 10)
q)select from t where i=(last;i)fby c1
c1 c2 c3 c4
-------------------
A 9 z 2019.10.01
C 7 y 2019.09.29
B 0 x 2019.09.28
q)select from t where i=({first x};i)fby c1
c1 c2 c3 c4
-------------------
B 6 x 2019.10.07
C 6 x 2019.10.06
A 4 y 2019.10.02
ДляЧтобы ответить на ваш вопрос в комментарии, касающемся применения другой функции к столбцу, вы должны будете использовать функциональный выбор, например:
q)?[t;();{x!x}1#`c1;{x!((first;last)x in `c2`c4),'x}cols[t]except`c1]
c1| c2 c3 c4
--| ----------------
A | 9 y 2019.10.01
B | 0 x 2019.09.28
C | 7 x 2019.09.29
При этом используется last
для столбцов c2 и c4, затем используется first
для других столбцов