在函数 select 的 groupby 子句中使用函数
Use a function in the groupby clause of a functional select
是否可以在函数 select 的 groupby 部分包含一个函数,类似于聚合的工作方式?
例如我将如何转
select by `long$`timespan:00 xbar time from table
进入功能select?
1. 可以,只是函数应该是 allowed/compatible 按子句分组。 'xbar' 是允许的。
语法为:(function;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:00) xbar x};`time);()]
是否可以在函数 select 的 groupby 部分包含一个函数,类似于聚合的工作方式?
例如我将如何转
select by `long$`timespan:00 xbar time from table
进入功能select?
1. 可以,只是函数应该是 allowed/compatible 按子句分组。 'xbar' 是允许的。
语法为:(function;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:00) xbar x};`time);()]