// 1010 query language \l show.k / ops load:{.m.M:[];."\\l ",x} base:{K::!.m.M;d(b;T::x);$[K;(. .m.M){Z::+`d!y}':*.!K;::];} link:{d(s(?;z);x;y^`d);} asof:{d(s(bin;z);x;y^`d);} willbe:{d({C[x]:$["g"=*$*y;(y;I);y]};x;y);} sel:{$[`d~*x;K@:&&/'K x;d({I@:&!p x;W::L::[]};x)];} get:{$[K;,/;::]d({+u!c'u:$[x~`;!C;x]};x)} set:{d({!(;x;y)};x;y);} tabu:{n$[K;r;a][x;y]z]} / map-reduce m:{,/$[b;d,/:';{x}]0 key'.m.M[d:#[!.m.M;c#x;()]]2:({#[!x]. y};T;((c:`d in*x)_x;(b:`d~*y)_y;z))} r:{#[#[m[x;y]n!k;();$[`a=@y;!y;y,:()];n!V[*:'k],'n];();f[k!n:`$$!#k:?,/v'a]'a:u'z]} / reductions U:(avg;var;dev)!({(%;(sum;x);(count;x))};{({(x%z)-y*y%:z};(sum;(*;x;x));(sum;x);(count;x))};{(%:;(var;x))}) u:{$[@x;x;f:U@*x;u'f . 1_x;u'x]} V!:V:(last;sum;min;max);V,:(count;?:)!(sum;?,/) v:{$[@x;();V@*x;,x;,/v'x]} f:{$[@y;y;n:x y;n;f[x]'y]} / distribute, base, new, aggregate d:{$[K;.m.M[K]2:x;. x]} b:{G::W::L::[];I::!#!*C::(!+!x)!T::x} N:0;n:{!(;T::`$($T),$N+:1;,0 key x);.m.M::[];base T} a:{#[+u!c'u:?,//{$[`n=@x;x;x~*x;();,/.z.f'1_x]}''(y;z);x;y;z]} / column, set link, link, willbe, gfunction, parse c:{$[`n=@c:C x;(!c)[x]I;`n=@*c;(!*c)[x]l . c;2=#c;(g[x]. c)I;w[x]c]} s:{C::@[C;(!+!y)^!C;:[;(y;$[`N=@z,:();(z;z);z];x)]]} l:{u:{+(`$$!#x)!x};$[x in!L;L x;L[x]:z[0][(u@{$[y;x@&x y;x]}[!x;z 1]'*y);u@(!p@)'y 1]]} w:{$[x in!W;W x;W[x]:!p y]} g:{$[x in!G;G x;/[i:I;I::z;G[x]:!p y;I::i;G[x]i?I]]} p:{$[`n=@x;(c;,x);1=#x;x;~#x;();@[x;1_!#x;p]]} / g-functions .. gsum:{@[z;i;:;+/'(y*z)i:.=x]} gcumsum:{@[z;i;:;+\'(y*z)i:.=x]} / parallel-distributed db load"t/" ;base`t;tabu[();`f!`f;[a:!"sum g";b:!"sum h";c:!"avg h"]];s1:get` load"tq/";base`q;tabu[();`d`s!`d`s;[r:!"last b"]];tabu[();`s!`s;[t:!"last r"]];r1:get` load"tq/";base`q;tabu[();`d`s!`d`s;[r:!"last b"]];r2:get` load"tq/";base`t;tabu[();`d`s`e!`d`s`e;[r:!"max p"]];r3:get` load"tq/";base`t;tabu[();`d`s`h!(`d;`s;!"`h$t");[r:!"sum z"]];r4:get` load"tq/";base`t;sel@!"s=`CSCO";asof[`q;`d`s`t]();sel@!"p \ \ \cd k t1:+ [f:1 1 1 2 2 3 3 3;g:10*!8;k:1 0 1 1 0 1 0 0] t2:+ [f:4 4 4 4 5;g:100*!5;k:1 1 1 0 0] "../k/0"1:`t!(+`d!0),/:t1 "../k/1"1:`t!(+`d!0),/:t2 \cd .. \l k/ q:+ [d:0 0 0 1 1;f:1 2 3 4 5;n:`a`b`c`d`e] base`t set[`q;,q] link[`q;`d`f;()] get` \ t:+ [f:1 1 1 2 2 3 3 3;g:10*!8;k:1 0 1 1 0 1 0 0] q:+ [f:1 2 3;n:`a`b`c] base`t link[`q;,`f]() get` \ t:+ [f:1 1 1 2 2 3 3 3;g:10*!8;k:1 0 1 1 0 1 0 0] base`t willbe[`h;!"gsum[f;f<3;g]"] willbe[`j;!"gcumsum[f;f<3;g]"] willbe[`i;!"f+1"] sel@!"k>0" get`