当我meta tableName以前检查类型.get结果如下:
c t f a
`description "C"
Run Code Online (Sandbox Code Playgroud)
现在我想知道类型"c"和之间的差异"C".以及如何将类型"c"转换为"C".
从下面的解释我可以得到,当表中有"c"类型时,我可以将其转换为"C"类型.我的新问题如下:表1:
([ID:`1`2`3]Name:`A`B`C;Client:`P`Q`S;Species:`setosa`setosa`setosa ;Length:2 34 6)
Run Code Online (Sandbox Code Playgroud)
显示如下:
ID Name Client Species Length
1 A B setosa 2
2 B Q setosa 34
3 C S setosa 6
Run Code Online (Sandbox Code Playgroud)
我想为table1写一个简单的api:
.get.table1:{[Params]
if[Params~();Params:()!()];
select ID:ID,NAME:Name,CLIENT:Client,SPECIES:Species,LENGTH:Length,DESCRIP:count[i]#enlist "" from table1
}
Run Code Online (Sandbox Code Playgroud)
结果:.get.table1[]
ID NAME CLIENT SPECIES LENGTH DESCRIP
1 A B setosa 2 ""
2 B Q setosa 34 ""
3 C S setosa 6 ""
Run Code Online (Sandbox Code Playgroud)
元表1:
c t f a
ID s
NAME s
CLIENT s
LENGTH j
DESCRIP C
Run Code Online (Sandbox Code Playgroud)
现在,我想改变api的写作风格,以获得与上面api相同的结果.我该怎么办?(如何描述DESCRIP行)
.get.table1:{[Params]
if[Params~();Params:()!()];
defaultCols:`ID`NAME`CLIENT`SPECIES`LENGTH`DESCRIP!(`ID;`Name;`Client;`Species`;`Length;**DESCRIP**)
if[`extraCols in key Params;
extraCols:$[-11h=type Params`extraCols;enlist[Params`extraCols]!enlist
Params`extraCols;(Params`extraCols)!Params`extraCols];
defaultCols:defaultCols,extraCols];
?[select from table1;();0b;defaultCols]
}
Run Code Online (Sandbox Code Playgroud)
类型"c"表示列中的每个元素都是原子,而类型"C"表示列中的每个元素都是该类型的列表.要将"c"转换为"C",您可以将每个字符添加到列表中.
q) meta ([] c:"123")
c| t f a
-| -----
c| c
q) meta ([] c:enlist each "123")
c| t f a
-| -----
c| C
Run Code Online (Sandbox Code Playgroud)
查询字符串列将是低效的.如果您的列具有一组经常重复的不同值,则将列转换为符号列将更有效