Используйте функцию в предложении 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);()]
Другие вопросы по тегам