Используйте функцию в предложении groupby функционального выбора
Можно ли включить функцию в раздел groupby функционального выбора, аналогично тому, как работает агрегация?
Например, как бы я повернуть
select by `long$`timespan$04:00 xbar time from table
в функциональный выбор?
2 ответа
Решение
1. Да, вы можете, только функция должна быть разрешена / совместима с выражением group by. "XBAR" допускается.
Синтаксис: (функция;param1;parma2;...param n)
Вот один бывший
q)t:([]id:til 20;v:til 20)
q)select by 5 xbar id from t
q) // functional form
q)?[`t;();(enlist `id)!enlist (xbar;5;`id);()]
2. Хитрость, чтобы получить функциональную форму простого запроса: используйте функцию 'parse':
q) parse "select id from t"
Вывод имеет функциональную форму:
q)(?;`t;,(),0b,(,`id)!,`id)
используйте его для создания функциональной формы:
q) ?[`t;();0b;(enlist `id)!enlist `id]
3. Функциональная форма вашего запроса с использованием 'parse':
q)?[`table;();(enlist `time)!enlist ($;enlist `long;($;enlist `timespan;(xbar;04:00;`time)));()
Для чего-то столь же сложного, как это, я бы просто xbar
часть в функции:
?[`table;();(1#`time)!enlist({(`long$`timespan$04:00) xbar x};`time);()]